2019年6月20日,由Rancher Labs(如下简称Rancher)主办的第三届企业容器创新大会(Enterprise Container Innovation Conference, 如下简称ECIC)在北京喜来登大酒店盛大举行。本届ECIC规模宏大,全天共设置了17场主题演讲,吸引了近千名容器技术爱好者参加,超过10000名观众在线上直播平台观看了本次盛会。数据库
来自Rancher、阿里云、百度云、平安科技、中国联通、飞贷金融科技、中国人寿、SmartX、华泰保险、厦门航空、JFrog、新东方、Cisco等十多家企业的技术负责人出席了本届ECIC,现场带来关于企业容器项目实践经验的精彩分享,为参会的容器技术爱好者带来企业容器化的经验分享。安全
飞贷金融科技副总裁陈定玮网络
大会现场,飞贷金融科技做为金融行业数据库容器化的典型案例,为现场的容器爱好者带来了题为《金融领域数据库生产容器化及Istio应用》的实践经验分享。架构
对于飞贷金融科技而言,生产容器化及数据库应用的难点在于,如何针对金融领域生产容器化及数据库容器应用进行实践创新,如何结合研发及业务场景落地,提高资源利用效率、提高产品研发、运维管理效率。并发
飞贷金融科技副总裁陈定玮表示:“金融行业数据具备相较于其余行业更为严格的安全高标准,在安全合规的状况下用飞贷自研中间件,解决金融领域DB应用场景难题,带来10x的DB交付效率,极致的弹性扩容能力。” 运维
演讲实录分布式
飞贷金融科技成立于2010年,是移动信贷总体技术服务商。咱们以科技创新做为企业发展的动力,在科技创新的道路上不断前行。微服务
2011年到2015年,飞贷作的是传统的小微金融业务。2015年,咱们决定进行线上互联网化转型。到2017年,咱们整个公司进行了战略升级,为金融行业客户提供互联网服务。迄今为止,飞贷为人保、北京银行、华润信托、通联支付等多家金融行业企业提供了全链路的科技服务。高并发
2018年,咱们登上了美国《时代周刊》,被《时代周刊》称为“全球金融科技最佳实践”。同年,咱们还拿到了世界银行和G20共同推出的首届全球小微金融奖最高荣誉——“年度产品创新”铂金奖。性能
接下来,我会和你们详细介绍一下,飞贷做为一家互联网金融科技企业,是怎样和容器化相结合,又是怎么在业务上应用容器化的。
飞贷应用容器化与前面分享的企业一致,一样也是基于整个企业的容器化应用。值得一提的是,飞贷作的是金融领域,因此咱们对安全、对容错、对高恢复的部分相较于其余行业的企业而言更加在乎。咱们关注的不只仅是应用,更多的会关注到如何迅速地进行灾难的恢复。
咱们利用容器进行了总体的架构部署,从你们比较熟悉的DevOps,到我稍后会重点介绍的DB Mesh的部分。咱们划分了几大平台,包括容器化平台、产品研发平台和数据平台。下面的是应用安全、数据安全、网络安全、容器安全、运维安全等部分。容器对咱们而言帮助很是大,如今咱们的RD都是基于容器Kubernetes作应用开发。在这一部分,飞贷在金融领域已经达到了领先的水平。
下图是飞贷的容器发展路线图。咱们从2015年开始研究容器,2016年开始投产在RD环境上。在当时咱们还没能彻底选定Kubernetes仍是另一个容器技术,因此暂时停留在RD阶段。2017年,Kubernetes技术愈来愈成熟、愈来愈稳定,咱们就把总体的方向往Kubernetes方向进行迁移。到了今年,咱们的生产环境已经能够大量运用容器技术进行多个方向上的应用了。
刚才Rancher的CEO梁胜博士提到,如今Rancher已经能够作到多K8S集群管理和部署,多数据中心。这是和咱们的业务发展比较贴合的。咱们提供基于飞贷的金融云服务,同时咱们有多租户集群管理的业务需求。目前,咱们已经能够针对K8S多集群进行应用服务、中心服务、数据库服务等多个方向的多集群管理,一样,咱们也能够作到多租户网络隔离。
从客户的角度来讲,在客户和咱们合做以前或者是过程中,他们先前可能并不了解小贷的业务运营是这样的,因此银行会把他们的总体服务放在咱们公司,飞贷就变成了一家金融云厂商。而飞贷的特殊之处就在于,咱们专一于和咱们业务发展相关的内容,咱们为客户提供的不是一个总体的平台,而是应用。
刚才提到的全部内容都是和容器息息相关的,容器的特性包括安全审计、动态存储、高可用灰度发布等等,咱们把容器的特性应用到了飞贷生产环境上,而且发挥到了极致。
下图是飞贷容器化的平台组件。不管是咱们的RD仍是外面的人员,飞贷会为他们提供应用商店,他们要作什么事情,就在咱们的管理平台点击一下,咱们会自动生产一个容器的应用帮他们进行处理。咱们镜像仓库的部分是在一块儿的。
除了这几个部分,咱们还有Prometheus和Jenkins,这些体系和咱们研发的相关度比较高,如今飞贷能实现自动集成、自动打包、自动发布和自动部署,这是咱们研究了两年多的平台组件成果。
飞贷为何要让DB容器化?由于微服务部分的应用层已经发展得比较好了,可是对于DB而言还有不少的问题。假如DB宕机了,我想要迅速恢复这个DB,让业务生产可以正常运行,咱们须要花费多长的时间呢?若是DB很是大,这个启动时间是很是久的。这就是为何银行或者是大型金融机构没有小型机,不敢用开源的MySQL或者是MangoDB等资料库,由于他们要保证安全和持续运做,这是一个比较大的挑战。
这就是我今天要重点讲述的几个问题,为何要MySQL容器化?MySQL容器化安全稳定吗?容器化MySQL的具体实现是样的?
咱们刚才介绍了飞贷要作多集群管理的容器,里面存在一些限制以及要求。第一,会涉及很是复杂的网络结构;第二,故障要频繁地切换,咱们认为这在金融行业是很是重要的一个部分,由于一旦发生故障,金融行业的业务基本上就会停摆了;第三,要控制容量大小;第四则是要依赖网络存储。
咱们之因此要作这个部分,有三个方面的缘由。第一,咱们须要实现标准化快速部署,由于应用快速部署完以后,若是DB部署很慢的话,对于咱们而言,总体效率仍是同样地低,这是站在总体效率的部分而言的;第二就是微服务场景,咱们如今的系统已是所有为服务化进行终端的调整,在这种场景下,若是数据场景不能微服务化,那我上层所作的内容毫无心义,咱们不但愿数据库成为业务弹性伸缩以及管理的短板;第三就是MySQL服务化、自动化、网络化和智能化的需求。
咱们进行MySQL容器化的效果很明显。第一,咱们能够实现高效弹性伸缩、扩容、备份、导入、导出、恢复、快照、迁移;第二,咱们能够实现总体数据库的性能监控和审计;第三,分布式存储、资源、数据多副本能够实现实时同步。咱们在大数据应用的部分可能和通常的公司也有所区别,咱们生产环境的一些数据和大数据实时数据是拆分开的,但咱们作到了实时同步;第四就是计算资源分布式,多节点,技术设施高可用;第五是拥有故障自愈的功能。个人MySQL若是宕机,咱们能够迅速恢复。
下图是咱们MySQL DB的架构,底下的应用服务对应的是中间件,咱们全部的中间件对应每个单独的库。咱们为了实现DB容器,把库作到了很是大的空间压缩,而且把库进行了容量限制,这样才有可能在库故障的时候,能够迅速的启动它。这部分考验了咱们总体的业务运做部分,数据分表分库的能力、读写分离的能力。而这部分都是经过咱们自行研发的中间件完成的。若是没有咱们自行研发的中间件,DB Mesh这部份内容是咱们也没法完成的。
以上基本就是飞贷DB的网络发散图,架构特征包括几个部分,一是高并发、低延迟,每秒10000事务处理,延迟小于100毫秒;二是支持IDC多活;三是支持数据路由;四是能够自动化或者人格化决策切换;五是数据多副本。
截至目前,飞贷的DB量级是PB级别的,咱们大概是十几个PB这种应用数量,可对外同步实施,故障容器数目大于二分之一能够自动回复,这就是为何咱们要作DB Mesh的缘由。
另外一部分是关于咱们容器化整合Istio的,右边是咱们生产应用的图形界面,能够看到注册进去以后,咱们就能够进行自动追踪,了解库的健康程度。可是里面还有一些小问题,当DB断掉再恢复以后,这个服务就不见了,须要再次手工注入。关于这个问题,咱们研究了Istio的不少文档,但尚未克服这一问题。因此在DB这一部分,咱们只作到在生产的时候,一开始能够注入,可是当它挂掉以后,咱们仍是须要手工处理,暂时没有办法自动恢复。
而在应用和管理服务的部分,咱们已经作到了彻底自动化,整合Istio实现微服务Service Mesh,实现了微服务访问、安全加固、控制、观察。服务追踪、限速、熔断、调度、负载等部分。
以上是飞贷总体服务的应用部署,从应用服务到中间件,这是咱们总体部署的发布图,因此如今咱们的RD人员基本上只负责开发,开发以后,全部一切都经过咱们的平台去进行集成、发布和管理,上了生产环境以后,也会由咱们的运维来处理,不会由RD来处理。在这一点上,咱们作的还比较符合银行的要求。
最后,我想介绍一下飞贷容器化带来的成果:
第一是提高飞贷总体生产力。飞贷80%的基础运维都是自动化的;其次,交付能力也有所提高,一小时咱们能够交付上百套的服务应用,目前来讲有上千台容器在咱们整个生产环境上面运做,若是咱们没有进行微服务容器化的话,微服务架构部署时间会很是长;最后一个是咱们具有生产环境上数百个MySQL的实例,这也是咱们的一个容器化成果;
第二就是研发和扩展,能够按照容器的pod、物理主机节点、机柜及数据中心级别作扩展,这块咱们也结合了不少CMDB的内容,但在这里就不详表了;
第三是IT成本的投入,这也是咱们企业比较关注的一个内容,咱们以前的私有云是用CloudStack做为平台去搭建的,如今咱们所有换成了容器。这大约节约了咱们40%的资源,节省了60%的人力投入。之前咱们要部署一个应用还须要提供虚拟主机在RD上面部署,如今容器一键部署就能够完成了。另外项目研发投入时间也节省了40%,由于部署应用之类的内容如今已经不须要RD人员来处理了,都是由咱们平台自动化处理的;
第四是安全、敏捷、高效,这部分业余数据的全量备份咱们也是分钟级的,咱们的库缩得足够小,因此咱们能够在几分钟内迅速备份;第二在容灾故障的时候,咱们的业务运用一键恢复也是分钟级的,数据快照是秒级的,资源利用率提高10倍,数据库交付能力提高近百倍,咱们整个应用有上百个MySQL节点,若是一个个部署很是慢,咱们如今已经把镜像作起来了,因此部署是很是迅速的;
最后一点是运维变得很是简单,自动化、极致的、弹性容器的调度,灰度发布、预发布、蓝绿部署、持续交付。