分享是一种生活态度,求知,求真,分享工作,分享生活!

金融网络“精益求精”之海豚系统原理和应用介绍

编程 iqianyue 3601次浏览 已收录 0个评论 扫描二维码

前言

这篇文章是从我几年前写的PPT里面整理出来的,主要介绍了从无到有开发金融海豚tcp探测系统的整体思路。整个系统从底层到应用都是我自己开发的,但同事也提供了很多思路,是大家共同协作的成果。里面的敏感内容做了马赛克,也省略了很多章节,但整体思路完整,希望对大家有所启发和帮助。

1. 背景

1.1. 为什么要做金融TCPing探测

众所周知,大网的fullmesh ping已经很成熟,在网络故障探测中发挥了巨大作用。但是金融网络有其特殊性,需要更快速度,更精细探测,作为大网fullmesh ping的补充,基于TCP的fullmesh探测可以更好的满足金融网络需要。优势主要有以下几个方面:

  • 基于TCP的探测,更符合防火墙业务场景,可以快速发现金融网络来回路径不一致问题。金融网络历史上发生过该问题引起的故障。
  • 端口1024-65535范围可用,基于五元组,单台机器就可产生多条流,经网络设备哈希后,可以覆盖多路径,节省探测机资源、维护成本低,路径覆盖广。
  • 因为服务器少,探测轻量,所以速度更快,1s就可以感知到网络变化。

1.2.产品设计

2. 实现方法

2.1. TCP 探测原理

  • fullmesh状态1分钟共277200条不同探测流覆盖金融网络,由于发出的是随机的tcp流,几乎可覆盖整个金融网络。

2.2. 探测展示视角

2.3. 故障定位算法介绍

2.3.1. 网络模块定位  -- K-Means聚类

2.3.2. 业务场景流量模型分析

2.3.3. 业务流量模型定位

基于上面分析的流量模型,我们制作一个特殊结构排列的矩阵图,按照xx区、xx区、城市、模块等规划,结合探测矩阵直观展示出来的形状,我们就可以写一些算法来判断故障原因。

2.3.4. 矩阵特征判断(有监督机器学习)

看到这些图片,我们有一个非常直观的感受,就是非常有规律!所以我们可以再升级一下功能,抛弃传统的写一堆算法的方法,直接用机器学习来给出结果。

3. 自动化场景:

3.1.    基于流量模型的防火墙自动旁路工具的演进

防火墙自动旁路工具的思路,当异常表现符合常规防火墙故障场景特征时,联动防火墙自动旁路功能,实现防火墙故障自动化处理。

我们前后一共迭代了2个版本的基于流量模型的防火墙自动旁路工具,依托于前面介绍的海豚系统快速探测和诊断定位算法,第二代防火墙自动旁路工具故障定位时间大幅缩短!而且准确率达到了99%!

3.2.    金融自动化演习服务

3.2.1. 金融网络Chaos Monkey的灵魂拷问:

  • 支付、金融架构设计是否存在问题?
  • 原来的架构设计是不是不再符合我们的预期了?
  • 设计方案和当前生产系统实现之间差了多少?
  • 我们能承受哪些,能承受多长时间,我们不能承受哪些?
  • 我们系统的高可用程度?
  • 高可用节点切换过程会发生什么?
  • HA的切换手段、切换(不可用)的间隔?
  • 切换成功的时间和一致性的时间是不是有关?

3.2.2. 混沌工程之金融网络演习

混沌工程的初衷是通过实验性的方法,让人们建立复杂系统能够在生产中抵御突发事件能力的信心。金融网络演习也同样如此,通过不断的业务演习来找出隐患,不断的升级优化网络,缓解灵魂拷问带来的焦虑。

3.2.3. 混沌工程实践的具体案例:

在混沌工程的实践中,金融演习前是需要知道网络的稳定状态是什么,即如何才知道网络是正常工作的。稳定状态的判断,需要有网络健康有关的数据,比如执行防火墙旁路时网络是否丢包,所以依托于前面tcp fullmesh模块已经具备的快速探测能力,可以很好的建立系统指标。然后提出合理的假设,并模拟防火墙主备切换,验证是否符合预期。

3.2.4. 已执行演习场景总结

金融网络在过于的时间里,已经进行了大量的实战演习,针对每次演习,我们都有详细记录演习的过程,包括演习时长、网络丢包时间、业务侧是否感知等等,方便为我们的自动化演习提供合理的稳态定义,我们总结如下:

此处省略。。。

3.2.5. 金融网络演习的2大痛点

3.2.6. 打造“多快好省”的自动化演习服务

金融的网络演习我们已经进行了很多年,有一些问题值得我们思考:

业务视角:

(1)问:如何能更直观的感受到演习过程中的金融网络状态?

         解:通过我们的TCP Ping探测矩阵,可以实时的看到当前金融网络丢包状态

(2)问:如何让业务能够灵活自主的进行网络演习?

         解:打造自动化演习服务,让业务自主使用。

(3)问:如何让业务在演习结束后,能够完整的回溯并分析整个网络演习的过程?

         解:通过系统自动生成演习报告

网工视角:

(1)问:如何才能够增加演习效率,解放双手?

         解:通过系统自动探测、自动记录丢包情况、自动生成演习报告

(2)问:如何才能够减少晚上演习次数,释放精力?

         解:打造自动化演习服务,并推广给业务使用。

为了打造多快好省的金融自动化演习,我们在tcp fullmesh探测的能力之上,打造了一套自动化演习服务!

3.2.7. 自动化演习服务思路

根据前面的混沌工程的理论体系,我们打造了自动化演习服务,并推广给业务自主使用,作为解决我们2大演习痛点的重要手段!

自动化演习服务是基于企业微信机器人搭建的,通过机器人可以记录演习沟通过程,非常方便。为了支撑复杂的演习场景,我们就需要有一个好用的机器人平台,所以我们引入了业界非常出名的node-red系统,系统功能强大,可以编辑流程图、调试代码等,而且我们专门增加了企业微信的机器人插件,开箱即用。下图就是我们在node-red系统上已经实现的自动化演习场景。

3.2.8. 演习过程机器人交互

演习机器人交互是承载在我们的金融海豚助手上面,每一次的演习,会关联变更单,严格校验演习时间、操作人、演习模块等,只有所有信息全部通过后,才可以正常执行机器人操作。在演习过程中,通过业务@机器人执行相应的指令。如果执行出现异常,会自动给当天金融值班同事打电话。

3.2.9. 演习报告

每次演习后,都会生成一个演习报告,由海豚系统自动记录丢包时间、时长、定位信息等,并自动判断是否符合预期,点击回溯按钮后,还可以进入到矩阵展示页面,详细记录了每一帧的丢包情况。

3.2.10. 产品设计中的服务意识

解决演习痛点是我们的主要目标,但产品能否顺利推广给用户,就必须秉承工匠精神,在产品细节和人性化上下功夫。只有你的产品好用,用户才容易接受,才能够最终解决我们的痛点。

在产品设计和开发中,我们有意识的设计一些优化点,大家可以借鉴:

场景1:之前的演习服务需要在各个系统上到处点击按钮,查找各种信息,非常麻烦,不利于推广给用户使用。

           解决方法:我们直接通过“金融海豚助手”全部封装,直接@机器人执行,一个入口解决所有问题。

场景2:业务比较关心的是演习整个过程网络情况,常规做法需要网络同事提供一些ping结果,告警等信息,效率低下。

           解决方法:我们贴心的增加了一键生成演习报告的功能,演习完毕后,自动往变更群里推送一份新鲜出炉的演习报告。

场景3:当产品交给用户使用后,如果在演习过程中出了不符合预期的情况,比如丢包时间过长等,常规方法是业务打电话,告知演习不符合预期,需要上线排查一下,这个过程很耽误时间。

           解决方法:机器人内置一键呼叫功能,有问题直接@机器人,然后机器人呼叫值班同事上线解决问题。而且只要系统出现异常、演习不符合预期等问题,不需要业务通知,直接电话呼起来。


iqianyue , 版权所有丨如未注明 , 均为原创,转载请注明iqianyue
喜欢 (6)
发表我的评论
取消评论

表情 加粗 删除线 居中 斜体 签到