混合云场景下金融级中间件自动化运维平台建设之路

图片

做者介绍前端

我先作一下自我介绍,我名字最后一个词读lang(倞),我是2000年踏入这个圈子的,很是倒霉,我刚踏入这个圈子遇到了网络经济泡沫,在座的有一些同窗的年龄你应该也遇到过,有些也没有遇到过,不知道这是什么东西。我作了7-8年的开发,4-5年的架构,我作过不少东西,除了微软那条线技术栈没有作过之外,其余的我都作过。算法

图片

可能有的人听到什么什么公司,金融一听以为好像特别高大上,经过今年一年你们听到金融会以为特别惧怕。对不对?并且好像听金融公司,以为大家公司好有钱,大家会作不少事情,会大手笔。数据库

可是,我跟你们讲的是,不是这样。由于你们都知道,不少金融类企业的老大,也就是他们的 CEO 和创始人,基本上都是作业务出身的,作业务出身的、作金融的首先第一点就是成本理念很是强。后端

他特别特别会算账,因此在这样的公司作IT是很是辛苦的,为何辛苦呢?你要常常去跟他谈成本,他也会跟你常常谈成本,可是那些人民币不懂。缓存

因此我给你们纠正一下,金融什么什么东西,确定用的东西特别牛,安全性特别高,其实不是这样的。安全

我今天来说几个内容,首先来给你们介绍一下,由于不少同窗会说讲技术就讲技术,作什么背景介绍,我们这个世界都是由客观组成的,不是你的技术用在我这边就能够的,由于咱们每一个人在公司解决的是业务性问题,或者痛点性问题,若是你的公司一路顺风,你的老板不须要花钱请你来。网络

咱们不少搞技术的同窗都是完美主义,你到一家公司但愿遇到干干净净的一套系统,作你想作的事情,请问,是这个样子的吗?招人的时候以为怎么怎么好,进去了之后发现不少坑。可是你根本不知道当时发生了什么,咱们进去要面对不少问题,不少客观环境,案例和解决方案充斥着咱们不少人的平常工做。架构

图片

1. 背景介绍

简单介绍一下公司,不少人一听什么什么财富,咱们公司不作P2P,咱们有一个爸爸有一个妈妈,爸爸是腾讯,妈妈是联想,你们在手机上打开理财通,腾讯也是咱们公司最大的股东,咱们公司几年前在新三板挂牌上市,咱们如今叫腾讯系的财富公司。咱们不作P2P,咱们是作基金的。app

图片

先来讲一下咱们为何要去作中间件。我相信在座不少你们听过不少大型公司里听到一些东西,好比咱们如今的阿里云,前身就是阿里中间件团队,只是如今作了技术赋能和技术输出,把技术变现而后对外输出。运维

简单一句话,当你公司变成多条业务线的时候,从单业务的业务方位变成多维的业务方位的时候,举一个例子,你又卖食品又卖其余的东西,有多条业务线,中间须要的业务产品是不同的。

你们都有交易,都有帐户,因此阿里有一个叫共享业务事业群,中间又有共同的业务栈,之前咱们的作法,好比说饿了么,不少的这种互联网公司,他们的作法就是把缓存做为应用的一部分,我用了任何一个技术栈,我用就能够了。

我想给你们陈述一些数据,首先咱们2015年,固然2015年是牛市,2015-2018年咱们公司在业务上进行了变化,先说动向,咱们的接口从百级变成了千级,微服务、服务化,要作拆分,业务要发展,从单一的卖基金,到如今卖不少,我才关心什么基金,我就要知道什么业务要赚多少钱,只要安全就好了。在这样的业务变革下变出来不少组合,个人接口会有变化。第一个是变多了。

还有个人子系统会进行拆分,咱们的研发团队从测试运维变成的纵向团队,把运维的部分拆掉,拆到各个团队里面去,你这个团队又有产品经理,又有研发,又有运维,你的目标就是把公募基金交易系统作好,从横向变成纵向的时候你的数量会变多,你是交易团队,你这个是帐户团队,你是资产清算团队,都有不一样的团队。

你们都要用到一些相关技术怎么办?咱们有统一的架构团队来给你提供标准化的服务,好像你们看到的阿里云提供不少的技术服务,中间咱们也会用到好多的SDK,适配,穿透等各类技术,为何?由于你的技术栈不同,接入形态也不同。

咱们业务型也是同样的,原先咱们卖公募基金的,还有卖私募的,就是百万起,高端的,像诺亚财富。总而言之你们能看到,咱们好买遇到的技术壁垒和全部的互联网+团队都是同样的,技术栈变复杂了,数量变多了,业务也变多了,可是有同样没变多,什么东西?人。

人仍是那些人,咱们常常说偷偷摸摸作架构,为何金融不少老板算成本怎么算的?我前面作5个接口要用5我的,很正常。什么是架构?不就是ABC吗?不就是两张代码吗?没听懂,我就给你5我的,怎么办?你的架构要去变。

图片

不少人如何看待咱们的运维?第一个就是客户愈来愈多,速度愈来愈快,需求愈来愈复杂,要么招不到,招多不划算,招少不够用。

还有分布式不少的开发和研发,分布式对于业务开发来讲是很是好的事情,有很是多的优势,对于运维来讲是一场灾难。咱们看一个场景,我当时在IOE作架构的时候很简单,如今呢?因此咱们走的方向是什么,一句话把能力赋予工具或者平台,用最低的成本交付与开发,本身玩去吧。

刚才前面谈到了组织结构也变了,不能要求每一个运维都有开放的架构,你也招不到,有人招到就厉害了,你能留得住他吗?你一共团队这么大,你给的空间是5个领导,3个总监,你往哪发展去?发展来发展去,上面的人一直站在上面,你也上不去,除非公司有更快的发展,你们知道这两年消费在退化,不少团队不须要特别强的人,包括不少公司作技术输出,你能够从那边用便宜的价格得到好的技术服务。

因此我把东西作成平台,想哪天发布就哪天发布,你想哪天上线就哪天上线,每一个团队本身作。

图片

2.中间件运维有哪些痛点

中间件运维有哪些痛点?首先问你们一个问题,应用运维和中间件运维有什么区别?有很大的区别。区别在哪儿?

  • 第一点,专业性更强。若是让你画一个图谱,很简单,咱们不说更大的,咱们从研发的视角。全部的东西都在架构里,架构是什么?就是逻辑。一堆的业务算法,就是这些东西,可是它的专业性不须要特别强,为何?我有这些东西就能够了。由于大量的技术栈都被中间件所包含了,高可用,你也不可能招到一个运维全部的技术栈都懂。

  • 第二点,自主性更弱。中间件独立存在的价值就没有了,应用不用你,你是没有任何价值的。若是访问量很小,缓存干什么呢?我是不须要的,只要流量大了,微服务作的多了,信用负载大了。

    举一个例子,在咱们系统里面是否是在座的运维同窗遇到的常见问题就是链接池爆了,怎么管理呢?中间件往什么方向发展,架构布成什么样子,是应用和前端应用系统决定的,不是运维决定的。

  • 第三点,重要性更高。咱们公司最近在办“王者荣耀”的比赛,咱们团队有一句口号,若是你敢打败我,我就按一键销毁的功能。

    个人分布式要作一致性,消息、缓存包括统一的分布式调度,统一的分布系统,决定了你的系统是否是好得起来,是否是安全,遇到高流量的时候是否是可以快速拓展,拓展的过程当中会不会引发其余的故障,这全是中间件决定的。这三点区分了应用运维,我指的应用运维是偏前端的,不是 IaaS。

图片

痛点1:资源信息管理与维护成本高。咱们的虚拟化已经达到95%以上了,也用了超融合的架构,也是用资源池调配,可是上面的中间件转成分布式,都是动态的。

对于资源的对应状况,用了多少资源是不知道的,怎么办?天天统计一遍,输出一个Excel,咱们一个同窗一边花一两个小时干这个事,咱们同窗说了干这个干什么呢?老板用啊。

图片

痛点2:就是裸用各类开源的监控,没法精准定位。不少人用 Zabbix,它是干吗的?就这几件事。请问一下,若是你知道这几件事情,你知道故障的真正来源吗?你知道应用是哪一个系统引发的吗?你大部分是不知道的,若是真的是因为设备和故障引发的话,好解决。

图片

痛点3:还有缺少短链路监控与排障手段。什么叫短链路?我举一个例子,由于咱们如今采用的是运维下沉中间件团队单独服务全部的分布式中间件,这个时候当遇到故障的时,业务端说你很慢。

举一个例子,如今应用运维跑过来跟你说,下单超时了,你知道吗?你说我这边也很慢,这是第一反应。第二个说我不慢,我很快。

就说第一种,是你的代理慢?仍是虚拟机慢,到底哪里慢?大部分状况是不知道的。会怎么办?打 Zabbix 去查了。咱们做为一个交易系统是有交易时间的,你下单的时候在2点到3点30之间出现问题了,说3000块钱不要了,你肯吗?

饿了么送外卖丢了一个东西,最多赔你一个,那个东西你能赔吗?你可能赔不起。咱们经过SDK,包括咱们代理层,包括全部中间件的系统进行短链路的监控,当前端出现问题的时候,我能够很是清楚定位到底哪一个节点出现了问题。

看一个例子,业务说下单报错了;前台说,我没问题,问问服务报错了吗?中台说,是你没调过来吧,我连日志都没打;运维说进程都在,也没看到ZB报错;后台说,胡说什么,我这有反应,你传错了;DBA说,你叫什么叫,连数据库都没连上;运维说,傻X,MQ阻塞了,不知道都在叫啥。

图片

咱们公司是作基金交易,若是系统出问题的话,若是今天交易由于系统的问题没有交易成功的话,次日基金市值大涨的话,我是要赔钱的。

由于是系统致使的问题,你要赔个人,我买的越多,你赔的越多。咱们公司有一句话,为何会出问题?由于人品好。此次出问题正好在3 :05分,交易时间过去了,可是再好的人品也会刷爆的。

图片

3.从‘人肉’到工具,咱们是如何演进的?

咱们先来看一组数据,20个消息队列,15台虚拟机,8组缓存分片,2组数据库。你知道线上几千几百的节有点问题吗?你知道吗?你不知道。你哪知道有问题?你只知道报错了,你认为是好的,可是你的管理是有半径的,最多在显示屏上管4-5个节点,另外有没有问题,你不知道。

图片

怎么办?开始建中间件的架构,前台,先异常汇总—用户服务—基于短链路的监控与排障—小工具。

Zabbix作一些基础性的,像端口、CPU,它的定位为何很差?由于它的应用没有办法进行关联。还有ELK,作实时分析。

好比说咱们公司的缓存某一些切片要求很是高,不容许你的抖动在交易24小时大部分时间,包括交易时间,你的抖动每一次访问不容许超过50毫秒或者30毫秒,或者说20毫秒。

由于你的底层业务,每个用户登陆这个帐户信息,包括交易过程中须要帐户当中的信息,交易要作不少认证,每一个环节都要作认证,我无论是本地缓存,仍是异地缓存都要响应,若是缓存有必定的抖动,你整个应用的长链路都要受到影响,最后就会崩溃,你的交易系统没有办法进行下去。因此说咱们来解决这样的问题。

大数据作什么?作比对。好比说,咱们缓存数据,它哪一个K更新的最多,哪一个K更新的时间最长,哪一个最大,这个要比对,哪一个降低了,哪一个没有降低,数据的失效状况,哪一个合理哪一个不合理,这些数据从什么地方来,都是通过咱们大数据分析得出报表获得的。
简单来讲,大数据主要处理离线数据。

有的同窗说了,这个传统运维作不了,对,咱们如今里面有架构师,有产品,有测试,有开发,有运维。因此咱们如今的运维转型相对简单?由于咱们传统的运维同窗在跟着咱们的架构师学开发,并且个人架构师是能够给个人运维赋能的,由于我是一个闭环的团队,我只须要对外输出,人性化的界面和管理控制台,而且输出各类各样的SDK和接入方式的适配器就能够解决了,这个东西不须要运维来作,须要开发和架构师来作就能够了。

图片

这个内容你们看得清楚,当缓存响应慢的时候怎么办?一个小伙伴链接集群,查日志,这是一个平常苦逼的运维在干的事。

image.png

案例2:当消息阻塞时的排查过程,这种状况是什么?一下子好一下子很差,业务说我也没有问题,前端的产品说我就很慢,我为何这边的数据就是看不到呢?用户为何就是看不到那笔交易呢?最后查下来大部分的锅确实是中间件的,由于有时候阻塞有时候不阻塞,罪魁祸首是消费方,他消费慢了,它坏了,可是仍是要找你,你能不能不阻塞,我说你能不能消费快一点,他说大家都是技术精英,大家应该在这种烂的状况下怎么解决这个问题。你没有办法狡辩,我要拿出数据告诉他到底哪里有问题,而且把界面交给他让他本身去看。

image.png

怎么演进?第一个,明确的边界、松耦合,咱们帮助他们作边界的划清,经过SDK的方式。基于Google Dapper实现的TRACE ID。

经过本身的MQ的切片、缓存的切片本身去查,不要问我,由于ABC消费B节点慢了,致使消费的速度慢了15.84,你本身去看,不要问我,个人MQ慢不慢,不是运维拼命把你拖慢,而是生产和消费不对等致使的,你本身去查。

图片

这里的内容你们能够看一下,这个其实没有什么内容,无非就是里面的一些协议,时间、机器、IP、调用类型、节点类型、SDK、服务,这是作短链路的时候很是清楚,我100毫秒到底消费在哪里。

图片

演进以后的状况是什么?你们看一下,我一个用户当很慢的时候看这个界面,这个界面在前台的闭环当中已经有了。

图片

有的同窗说了,我不知道什么叫切片,我后边有一张图。很简单,你不用来找我,你找我干吗呢,你交易系统慢了,能够看一下帐户系统的切片慢不慢。

消息阻塞通例,也是经过下端消费直接状况,

图片。这个很简单,咱们在座若是作研发的同窗很简单,我无非经过一些命令把MQ中间的数据接口反馈到数据库当中,这个技术没有什么难的点。

4.从单机房到混合云,咱们作了什么?

咱们是从去年开始进行混合云,有的同窗说了,干吗不知道作双活呢?为何不直接上公共云呢?首当其冲的是监管不容许。

有的同窗说了,大家这个行业为何这么怪?是这样的,金融行业跟钱有关的是强监管,全部的都是跟钱有关系的,个人交易系统不容许放到个人公共云上,只能放在本身的私有系统中间,为何?没有技术上的任何问题,缘由是什么,监管不容许,或者监管不明确。

因此能上的是资讯类的,行情类的,或者说其余的跟金融基金交易牌照没有任何关系的一些数据,能够放到云机房当中去。

遭遇故障或者流量突增的时候,咱们如今是这样的,根据时间段不同来把咱们的中间件的主机放在云机房。有的同窗问了,你刚才不是说不能够吗?我说的是应用系统不表明中间件,中间件是能够的。

图片

我如今保证单机房的控制台,从一个控制台登陆能够管理三个机房,能够根据需求使用你的私有云和你的托管区,这是咱们的一张图谱。

图片

后面这几张图,这是咱们几张界面,这是咱们如今用的,应用所属产品线,咱们如今的云整个中间件团队运做模式跟阿里云是彻底同样的,说白了是咱们照抄人家的,组织结构也是照抄的,咱们全部的,包括缓存消息,分布式数据库,统一分配系统按照产品的规划方式对外输出,向全部的FT团队进行兜售,好比说小张管A系统,小李管B系统,我跑过来卖。这是市场化经济,有的同窗可能听不懂,在咱们的公司所有都是CTO强压的,你必须搞这个动做。

image.png

你们看到没有?这就是一个很是经典的缓存界面,

图片不用展开,你们都知道。这个是你全部的缓存切片的图,哪一个占的最好,哪一个占的最小。最后一张图,是混合云进行漂移的实例,能够选择不一样的切边。

举一个例子,个人托管区就是我本身的老机房,我本身的控制台没有什么问题,当我须要进行某一时间点扩容的时候,或者我由于某一些业务或者某一些活动要进行漂移,我把个人分片进行私有云的漂移,漂移到我私有云机房,说白了不叫漂移,就是重装一套。

有同窗说,容器能够作的更好,对,容器咱们目前只是尝试阶段,若是在座有同窗对阿里比较了解的话,淘宝以前其实不少不少年之前就作了,可是他们一直到这两年蚂蚁金服才作了一部分,或者没有彻底作完,作金融类全部的技术改造类的东西,中间全部的数据验证以及技术改变的成本和路径都慢半拍甚至一拍至两拍。全部的前台、中台,全部的过程全部的数据多少要对帐的,你不对帐是不能往上走的,可是中间件不须要。

同理,同样的,有的同窗说了,灾备区什么意思?咱们遇到问题的时候,保证全部的机房可以全部用户正常赎回就能够了,我是彻底受损的一个服务,有的同窗说了你为何不作双活,要钱。

全部的技术,圈内有一句话,全部的优秀架构都不是设计出来的,优秀的架构是迭代和演变过程迭代出来的。你们相信吗?全是迭代过来的,为何迭代?由于需求堆出来的,无论是前端仍是后端业务需求。

5.AIOPS-展望将来

最后谈一下 AIOps 的展望,我认为的 AIOps 只是一个理念和方向,能提供什么?弹性的伸缩。咱们如今作的更可能是人工的。咱们的弹性伸缩能够作到自动化,其实 AlOps 在研发演进里面没有什么困难,你只要可以抽象出规则,像扩容的这些动做很简单,只要知足了某些场景,作了某些事情,前提是必定要标准化。

在研发的视角中,或者架构师的眼中并非很难的事情,可是要记得作提早更新。在北京有DevOps学院,里面说过一句话,不少公司谈DevOps,你NG还在调优呢,你还DevOps。那边小伙伴在作NG调优,你这边作DevOps,合适吗?你没有标准,怎么作DevOps。

image.png

有的同窗说了,大家如今作到哪里了?还在制定明年的规划,咱们是腾讯系的,因此八九月份开始作明年的规划。主要的目的是跟CEO要钱,这是最终目的,这是核心目的。

这是咱们面向PaaS的运维平台,咱们原先没有中台的,没有流程逻辑这块的,咱们如今正在增长,因此我把颜色标为橘黄色,下部分咱们都有了,咱们中间件的部分只包含中间很小一部分,在右侧分布式服务这块,和预警告警这块,其余的部署发布目前咱们都有。技术栈没有什么区别,也没有什么难的地方,就是如今外面你们用什么咱们用什么。

图片

最后看两张图,首先不少人第一次见到我说,你一点都不像搞技术的人。为何不像呢?体型不像,发型也不像,我前天写了一篇文章,技术男为何那么不爱干净或者穿着不受女孩子欢迎,在咱们圈子内IT男总找IT女,这种状况多见,为何?由于我比较喜欢运动,搞了这么多年,看上去蛮年轻的,其实蛮大了。

这两张图能看到什么不一样点吗?一个是运动跑步,一个是机房。在我看来太枯燥,跑步也是枯燥的,太乏味,甚至太难以坚持。

不少人说运动什么东西都很难,运维也是同样的,不少人说运维太过于枯燥,如今外面摇旗呐喊的说要干掉传统运维,虽然嘴巴没说,一嘴巴的男女道德,一肚子男盗女娼。搞IT的结什么婚啊?这是咱们圈内常常互相调侃说的一些段子。

image.png

因此我以为,就是由于这样的缘由,因此咱们的运维同窗也好,研发同窗,架构同窗你们更应该提升,你们在一块儿共同解决问题。咱们如今公司如今已经变成纯互联网化。

个人内容就讲这么多,我基本从去年和前年开始,我本身常常会写一些技术的文章,三年的演变我不可能靠几分钟就去讲清楚,如今大概一周左右输出1-2篇原创,是我本身写的,里面有技术的故事,有技术的演化包括我在外面参加的活动,你们有兴趣的话,能够一块儿聊一聊。

相关文章
相关标签/搜索