您的当前位置:首页正文

ZERO TO ONE |「付钱拉」支付系统架构系列二:如何提高

来源:花图问答

(二)及时发现故障

故障就像鬼子进村,来的猝不及防。当预防的防线被冲破,如何及时拉起第二道防线,发现故障保证可用性,这时候报警监控系统的开始发挥作用了。一辆没有仪表盘的汽车,是无法知道车速和油量,转向灯是否亮,就算“老司机”水平再高也是相当危险的。同样,系统也是需要监控的,最好是出现危险的时候提前报警,这样可以在故障真正引发风险前解决。

实时报警系统

实时性-实现秒级监控;

全面性-覆盖所有系统业务,确保无死角覆盖;

实用性-预警分为多个级别,监控人员可以方便实用地根据预警严重程度做出精确的决策;

多样性-预警方式提供推拉模式,包括短信,邮件,可视化界面,方便监控人员及时发现问题。

埋点数据

分析系统

分析系统最难做的是业务报警点,例如哪些报警只要一出来就必须出警,哪些报警一出来只需要关注。下面我们对分析系统做一个详细介绍:

1-系统运行架构

2-系统运行流程

3-系统业务监控点

出警类:

网络异常预警;

单笔订单超时未完成预警;

实时交易成功率预警;

异常状态预警;

未回盘预警;

失败通知预警;

异常失败预警;

响应码频发预警;

核对不一致预警;

特殊状态预警;

关注类:

交易量异常预警;

交易额超过500W预警;

短信回填超时预警;

非法IP预警;

4-非业务监控点

非业务监控点主要是指从运维角度的监控,包括网络,主机,存储,日志等。具体如下:

服务可用性监控:

使用JVM采集YoungGC/Full GC次数及时间、堆内存、耗时Top 10线程堆栈等信息,包括缓存buffer的长度。

流量监控:

通过Agent监控代理部署在各个服务器上,实时采集流量情况。

外部系统监控:

通过间隙性探测来观察三方或者网络是否稳定。

中间件监控:

针对MQ消费队列,通过RabbitMQ脚本探测,实时分析队列深度;

针对数据库部分,通过安装插件xdb,实时监控数据库性能;

实时日志监控:

通过rsyslog完成分布式日志的归集,然后通过系统分析处理,完成日志实时监控和分析。最后,通过开发可视化页面展示给使用者。

系统资源监控:

通过Zabbix监控主机的CPU负载、内存使用率、各网卡的上下行流量、各磁盘读写速率、各磁盘读写次数(IOPS)、各磁盘空间使用率等。

单通道网络异常预警:1分钟内A通道网络异常连续发生了12笔,触发了预警阀值;

多通道网络异常预警1: 10分钟内,连续每分钟内网络异常发生了3笔,涉及3个通道,触发了预警阀值;

多通道网络异常预警2: 10分钟内,总共发生网络异常25笔,涉及3个通道,触发了预警阀值;

日志记录和分析系统

实时日志预警

订单轨迹

日志打印规范如下:

||2016-07-2019:06:13.000||||||||01||0103||111xxxxxxxxxxxxxxxxxxxxxxxxx

||8fb64154bbea060afec5cd2bb0c36a752be734f3e9424ba7xxxxxxxxxxxxxxxxxxxx

||622xxxxxxxxxxxxxxxx||9bc195a59dd35a47||f2ba5254f9e22914824881c242d211

||||||||||||||||||||6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx010||||||||||

简要日志可视化轨迹如下:

日志记录和分析系统除了以上两点,也提供了交易和响应报文的下载和查看。

7*24小时监控室

(三)及时处理故障

自动修复

服务降级

敬请关注!

快速通道,长按二维码即刻报名