系统设计的几点思考

帅比萌擦擦* 提交于 2021-02-10 09:33:16

首发于个人公众号《andyqian》,期待你的关注!

前言

  又有好一阵子没有更新文章了,今天聊聊系统设计的几点思考。对于我们来说,始终会独自设计,研发,迭代系统。为系统的演进,整个生命周期负责。而负责的系统到底处于什么状态?是否健康?是否出现问题?这些都是需要考虑的问题。

开关

  1. 对关键流程,进行开关设置。例如:交易开关,资金池开关。对于金融系统而言,特别是出金端,要做好严格的把控。其目的主要是:兜底,及时止损。例如系统出现漏洞,安全事件时,能够及时将其关闭,停止交易。

  2. 对于 TO B 应用而言,则可以定制化开关。如关闭某个企业的出金,交易等。避免系统雪崩,其目的是将系统的影响降到最低。总之可以根据系统的特征,识别系统的关键点,对其进行开关的设置。

监控

  1. 业务监控 (在一定时间內,业务处理数是否达标。) 低于阀值时进行业务报警。

  2. 数据监控,对主流程的关键数据进行监控。例如:每日的交易数,交易额,成功笔数,失败笔数,以及进行 Top 10 的失败原因进行分析。

报警方式

  • 微信报警

  • 邮件报警

  • 短信报警

运营数据可视化

  1. 对于系统中的关键数据,进行可视化展示,并与上一周期进行比较。从而可以通过数据的差异发现问题,从而及时解决问题。例如: 每日的交易数,交易额,成功率,失败率,与前一日进行比较,前三日,前一周等等进行比较。

  1. 通过图表的形式,展示每日的注册数,活跃数 等关键数据,并与同期数据进行比较。

数据可视化的作用:

  1. 运营效果的体现

  将同期数据进行比较,及时发现问题。也可以通过数据的增长,体现运营效果,营销效果。例如:投递了广告,做了营销,是否有效果,效果怎么样?就可以通过数据上进行得出。

  1. 系统迭代效果的检验

  对于系统中主流程的迭代上线,虽然进行了线上验证。但始终没有覆盖到全部场景,生产流量进来后。通过观察数据,查看关键指标是否降低,以及降低的原因是什么?从而达到上线质量的验证。

在没有引用大数据处理方案时,数据的可视化,则建议在从库中进行。这样能避免降低主库的TPS,因为可能会涉及到多表连接查询,从而导致一些无法优化的慢SQL。

运营系统建设

  最近发现,有很多的程序员以及公司,在这方面都很缺乏。系统上线时,对于参数的配置,调整,都是人肉进行SQL调整。这样耗时耗力,极大的降低了生产效率。而运营系统建设是一种不错的方式。以前我一直认为运营系统是辅助性的,不重要,可以随便写,只要能用就行。经过一段时间的验证,这样的看法有所改观。现在我认为运营系统应该归属于系统建设的一部分,写的好更加能够提高效率。

最后

  上面是近期对系统设计上的几点思考。有些是从前辈借鉴过来的,有些则是自己觉得有待改进的,沉淀成文章,希望自己能够从这个方向去。


 

相关阅读:

Java线程池ThreadPoolExecutor

使用 Mybatis 真心不要偷懒!

再谈Java 生产神器 BTrace

Java 生产神器  BTrace

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!