工行MySQL转型实践多达200个应用和近8000个例子 001048基金

股票资讯  2021-03-26 14:03:02

原标题:工行MySQL转型实践,多达200个应用和近8000个例子

本文基于魏亚东先生在【2020 Gdevops全球敏捷运维峰会】上的发言。

讲师介绍

魏亚东,中国工商银行软件开发中心三级经理,高级架构师,杭州R&D部数据库专家组组长,开发中心安全团队成员,负责技术管理、数据库和安全相关工作。2009年加入中国工商银行软件开发中心,致力于推动管理创新和效率提升,提供全面的技术控制,推动自动化实施,实现业务价值的优质快速交付;同时,作为技术专家,为安全生产提供技术支持。

大家好。感谢dbaplus社区给我这个机会与您交流。今天,我只是抛砖引玉,因为我不知道你对哪个感兴趣,所以我将与你分享工行的所有转型过程,包括我们在R&D层面的管理和控制,希望能对你有所启发和帮助。

一、工行数据库转型背景

首先介绍了工行MySQL转型的背景,有以下四点考虑:

1.利润增加

众所周知,工行的利润是四大行中最高的。如何才能继续提高利润?简单来说就是开源节流。

众所周知,DB2是国有银行现有核心系统的核心,Oracle是OLTP系统。这种架构类型非常成熟,但是运营成本昂贵,机器和服务需要几千万的资金。

随着大数据时代进入成熟阶段,我们在数据存储方面已经从TB发展到PB,科技业务量呈指数级增长。我们可以看到,在线处理已经成为主流,尤其是疫情开始后,对银行的处理能力和峰值吞吐量造成了双重压力。传统的集中式方式已经不能满足我们的需求,我们承担不起这个成本。但是通用廉价的X86硬件基础设施已经在业内互联网头公司广泛使用,其可行性毋庸置疑,于是我们开始向他们学习。

2.引领行业

大家都说我们银行是宇宙最大的银行,所以我们科技团队数量最多,我们要引领行业。大致有两个要求:

同行业竞争,所谓的金融技术或者互联网金融的技术与金融,其业务实际上是被允许擦球的,对银行的业务量构成了挑战,要求我们的业务快速更新,行业以DevOps为基础。灰度发布的快速交付和规范化也是应运而生的产品; 大家对代表国家声誉的商业银行,尤其是国有银行,期望很高。这就要求我们支持24小时业务处理,也就是客户想用你的时候不能有问题,这就对高并发、高可用性、无停机的海量数据处理提出了更高的要求。 3.技术自主研究

全球化趋势要求技术无国界。但是,从去年开始的贸易战和美国的实体管制清单中,我们可以看到技术是有国界的。比如在HashiCorp宣布其企业产品在中国禁止使用之前,就已经成为一个标志。所以拥抱开源,提高自主开发技术的能力,解决对商业产品的过度依赖,其实是一种趋势。但是需要注意的是,并不是所有开源产品都有问题,大家一定要注意审核开源许可证。比如像GPL这样的传染性牌照,其实风险很大。同时,从银行业务的特点来看,实现分布式可扩展架构,在线扩容和扩容,满足银行对强一致性交易处理的要求,是我们技术积累的一大挑战。

4.长期规划

我们数据库产品的长期规划只是一个两步原则:

拓展技术路线,探索新的技术产品。比如我行已经在部分应用中应用了GaussDB和OceanBase,后面会测试更多的产品; 丰富技术积累,跟踪行业主流产品的技术发展路线,逐步转化为自己的资产。之前有幸参加过中村修二先生的座谈会,强调十年积累,所以技术积累是一件孤独却又必要的事情。 二、工行数据库建设流程

你可以看看我们银行的数据库建设过程。2014年开始基于MySQL 5.5搭建MySQL运维平台。因为是小打小闹,不系统,2016年是我行一期建设的开始,周边配套会逐步完善。从2018年年中开始,是我行建设的第二阶段。

第一阶段是探索MySQL的可能性。试点成功后,将全面推广,R&D及运维自动化系统将不断完善。

第二阶段遵循两步走的原则。一方面,随着数据库数量的增加,运维成本大幅增加,资源利用率不高,所以我们把MySQL放到云上,后面我会介绍结果。其中约90%基于云数据库。

另一方面需要拓展技术路线,试点新产品GaussDB和OceanBase,落地五个产品场景,一个是在物联网上做一个创新,一个是在其他业务场景的基础上做。单从应用场景来看,可以满足银行业务的需求,但是他们的生态环境不是很好,就是配套周边需要改善(这里指的是除了原厂之外的生态圈),相比MySQL还是有所欠缺。

三、工行MySQL实施的有效性

纵观我们的成就,有以下四点:

1.自制力高

基于开源技术,我们构建了一个企业级分布式解决方案——MySQL数据库解决方案,以满足不同业务场景的需求。还开发了自己的运维管理平台,实现规模节点的集群化、自动化和规范化管理。

2.广泛用于各种业务场景

有217个MySQL应用和近8000个MySQL数据库实例,为主机应用的下移提供数据服务支持,经受住了双十一和春节业务高峰支持万级TPS的真实考验。

3.同行业领先的数据库云服务

我行率先实现同行业MySQL大规模云部署,占比90%以上。同时我们提供一键式快速供货和一键式运维管理,简化运维流程。

4.二级恢复和分钟级切换

多站点数据存储保证了很强的数据一致性,在同一个城市实现了RPO=0。本地故障二级恢复,无人工干预,无业务系统感知,同城园区级故障分钟级切换。

四.工行技术路线

其实我们的技术路线应该和大家的玩法一致。我们是先和腾讯沟通的,所以我们的技术路线有点接近腾讯,是用应用架构加处理分组的服务网关,配合运维管理平台实现的。处理分组,也就是所谓的集合,实际上包含了一组具有在线处理功能的服务器,包括中间件等应用服务器和MySQL的数据库服务器。

当事务请求到来时,它首先通过SLB(或F5)进行负载平衡,然后到达服务网关。服务网关会根据服务的一些预设字段如用户ID、银行卡号、账号等进行一致Hash,然后分配到相应的处理包中,处理完相应的包后返回结果,完成交易环节的处理。

同时我们会根据应用场景进行数据切片,大概是128片,切片会合并部署。

最后,我们在每台MySQL服务器中部署一个代理,定期收集快照信息并监控可用状态,统一发送到管理平台。管理平台可以生成AWR报告和浏览数据库。如果检测到数据库有问题,可以自动切换数据库运维平台,实现数据库级的高可用性。

1.工行技术路线——分布式接入层

对于分布式接入层,这其实是褒贬不一的,因为行业内争议很大,比如阿里的TDDL,网易的DDB,都是比较成熟的产品。但是为了完整性,我们最后做了一个分布式访问层。我们的分布式接入层有两种模式,但是比较薄。与TDDL和DDB相比,有一定差距,但压力相对较小。与他们不同,压力将集中在接入层的维护人员手中。

我们主要推动基于DBLE重建的分布式接入层的实现。我们扩展建立了配置中心,在应用发布时带出配置,访问层自动下载配置并完成热加载,实现了自动部署,避免了开发人员在某处维护Server.xml等配置文件。当校园发生故障时,通过智能DNS自动路由到F5,再路由到DBLE集群,实现本地校园接入、负载均衡和应用服务器到DBLE集群的自动故障转移能力。DBLE实现无状态设计,通过F5实现自动故障转移,MySQL自动故障切换,联动管理平台,支持数据一致性检查和自动完成; 另一种模式,我们称之为光模式,类似于TDDL的分片模式。它与应用程序一起部署,并根据算法和配置路由到特定的数据库节点,降低了操作和维护的难度。

2.工行技术路线-高可用性

对于高可用性,我们的高可用性课程是借鉴互联网分数公司的经验开发的,提供了两种模式,应该是5.7的固定模式。

灾难恢复5级采用一主四从的架构。主库1个,本地半同步库1个,本地半同步库2个,远程异步库1个; 灾难恢复四级采用一主三从的架构,包括一个主数据库、一个本地半同步数据库和两个本地半同步数据库。从经验来看,业绩大概会下降一倍,但这是银行必须承担的代价。

动词 (verb的缩写)工商银行R&D控制挑战

1、问题

说了这么多,我们只看到了MySQL的好处,免费的午餐却不好吃,这对应用研发管控水平提出了严峻的挑战。这一点一定要注意。技术可行性并不意味着有效实施R&D着陆,也不意味着降低着陆实施的复杂性。在进行R&D控制时,我们发现了三个层次的问题:

研发习惯。首先,设计者的思维还是以Oracle的思维为基础,习惯使用VARCHAR2作为通用字段,但是MySQL要求表结构设计要选择合适的字段;同时开发人员喜欢保存中标链接,轻松连接5表以上的复杂语句,不看执行计划,Oracle数据库没问题,MySQL不行,会挂;我们可以看到,即使阿里有规约,慢SQL对他们来说也是难以忍受的痛苦;另外,开发者习惯了大事务,会导致主从同步延迟,实际上会对主备切换造成很大压力; MySQL有很多缺点和bug,熟悉的解释器比较弱,in和exsits语句会对性能有很大影响,而且bug是不变的,截断阻塞同一个库transactIOn,Replace进入自加列主键冲突,死锁,Page Cleaner脏刷会阻塞io等。 运维复杂度成倍增长,设备水平提升10倍。扩建机房等物理设施会出现问题,资源利用率低(CPU、存储),所以上云是必然趋势;同时,大量并发的网络流量也是一个潜在的隐患。 2.工行R&D控制水平

为了解决这些问题,世行在R&D控制层面建立了一个完整的生态圈。在这里,我建议你可以自己做。因为主要问题是慢SQL的数量会随着应用的增加而爆炸式增长,阿里也公开表示,当时他们也因为慢SQL的爆炸式增长而不得不建立SRE系统,所以我们在设计、编码、测试和交付后的四个阶段做了一些处理,并建立了相关的访问控制,一个接一个,确保早期发现和解决问题。

设计 在设计阶段,我们编制并发布了设计指南,建立了元数据管理标准和能力提升课程。同时,通过自动化形成表结构设计工具和元数据管理系统的联动系统。首先,元数据管理系统定义业务线和应用领域及类型的标准,并形成元数据字典。当架构师设计表时,他们可以借助设计工具链接管理系统自动生成所需的元数据。最后可以生成DDL语句,方便大家在开发环境中开发测试;

把…译成密码 在编码层,我们也做自动访问控制。基于Sonar系统,我们使用Druid开发了一个数据库检查插件,对SQL语句和MyBatis文件进行分析,分析它们是否符合我们的编码规范,可以控制大约60%的问题语句。一方面,我们实现了安全检查,如SQL注入检查,以实现安全级别。另一方面考察其写作规律,提前发现不合理的写作。毕竟MySQL和Oracle不一样。通过质量访问控制的手段,可以保证开发者在这个层面上能够严格遵守和严格执行,以最低的成本避免生产中的隐患;

测试 在测试层面,建立安全测试和性能测试的处理机制,实施基于OWASP ZAP的黑盒测试,做好重要事务的性能测试,确保关键事务满足业务的高并发需求,提高用户满意度指数和幸福指数;

交货后 交付后,我行建立了SRE管理体系,对慢SQL进行监控和管理,对重大事件进行自动查杀,提前规避生产隐患。同时,将相关案例分析和生产问题总结成经典案例,供大家学习,增强意识,逐步建立对安全生产的敬畏感。最后,我行积极推行AIOps,基于全环节跟踪进行数据处理,实现根本原因分析,逐步与1-5-10行业故障诊断目标接轨。

不及物动词工行系统运维

1.工行系统运维级——自动化环境供应

从系统运维层面来看,2019年DAMS峰会已经共享了自动环境供给,资源利用效率提高了4-5倍左右,加快了资源部署速度,提高了内部管理效率。这里有两个问题。

IP漂移,我行不同于K8sOperator,底层扩展K8s实现集装箱的固定IP,SDN实现集装箱网络资源的自动化应用; 二是IO征用问题,SSD换了硬盘,做了RAID1。从性能上看,效果完全满足需求。

2.工行系统运维级别——自动化运维

从运维层面来说,自动化运维实际上是对数据库的可用性、可靠性和性能进行监控,覆盖了监控项目的100多个指标,同时实现了基于AIOps的1-5-10故障定位目标,及时报警。我们每个月都会定期管理慢速的SQL。我们可以看到下面的模型图。我们建立了三维雷达图,根据总数、慢SQL耗时和建议的优化方案和整改方案。同时,我们为慢SQL制定了自动查杀方案,保证慢SQL不会对生产造成巨大影响。因为我们之前有个案例,一个表忘了创建主键,备用数据库24小时赶不上主数据库。

自动化安装部署,我们已经覆盖了分布式MySQL数据库组件的安装配置、高可用性、数据容灾、升级维护,现在DBA应该是业内最少的了。

智能高可用,集成高可用切换功能,支持数据优先和城市优先处理,集成智能报警和高可用切换动态管理,提供异常切换智能报警和高可用保障建议能力。

3.工行实际场景——客户信息系统

工行客户信息系统承载着全行客户信息管理功能,涉及个人客户6亿多,公司客户1000多万,总记录数超过160亿,每天维护查询客户信息2亿条,最高并发数7600条,平均交易时间不到30毫秒,支持同行业应用范围最广、日均访问量最大的处理。

七.工行分布式数据库规划

后来的一些计划其实是这样的:

1.MySQL的其他缺陷

MySQL实际上还有其他一些缺陷:

GPL是GNU通用许可证,有传染性,有风险。如果是商业的,你必须在第一时间购买其商业许可证,或者同时打开自己的软件,但这其实很难做到; 不能支持分布式事务,分布式事务原则上在应用层解决,增加了设计复杂度。我行建立了分布式交易应用,支持TCC、SAGA、XA三种模式,并根据不同业务场景对应用进行规范。对于那些要求一致性强的,比如会计处理,我们原则上都要求使用TCC模式; 复杂SQL支持能力弱。我们提出了一个基于Hive的通用查询方案,可以减轻系统的负担。业内也有ES解决方案,都是比较好的加工方式。 2.探索新技术路线的挑战

要探索一般的分布式事务数据库方案,数据库本身可能没有问题,但就其生态系统而言,它是有问题的和不成熟的。比如PG、OB、TiDB产品,仍然缺乏成熟丰富的生态系统。使用它对我们来说会很痛苦。同时,国内数据库蓬勃发展,技术路线差异较大,方向不明确。因此,我们将继续跟进分销的产品,以确保我们有更多的积累。

>。>。>。>。问答。A

Q1:魏老师,你好,我是百度数据库团队的。有两个问题想和大家探讨一下。第一个问题是关于开源数据库的路线。之前我们在MySQL上做了很多工作。目前我们如何考虑这种类型的数据库?因为可能会更好的测试甲骨文,你觉得工行、MySQL和PG哪个更好?

A1:我们看到了很多数据库,但是从生态角度来说,还是选择MySQL作为主流,PG是高斯。但是从这个生态来看,PG的生态真的很差。从运维层面来说,这些工具链其实都是MySQL支持的,所以我们的PG只是处于推广使用阶段。对于高斯来说,我们大概有5个应用,但是有217个MySQL应用,所以后面肯定会做这些国内的改造,但是对于大规模使用来说,这可能还是要看生态圈的完善程度,因为银行毕竟是对大家负责的。

Q2:关于分布式数据库,刚才有更多的数据库是存储结构的。其实分布式数据库也可能有很多技术路线。你以为中间件也有一些基于计算存储的云原生架构。你觉得哪个更符合工行对这个数据的需求和规划?

A2:你说的最后两件事其实还行。第一个是云原生,工行云是业内最好的云,所以我们的云原生数据库绝对是第一条必然的规划路线;第二个是分布式数据库,这也是我们考虑的问题之一。

Q3:基于中间件的数据库和表的架构怎么样?

A3:其实我们的数据库分布式访问层比较弱,不建议更强。因为我们之前和网易、阿里谈过,他们最后的问题都集中在数据库安全层,他们相当于保姆,但是开发人员不管,所以还是从设计开发层面入手,直接在应用层拆分数据库。

Q4:MySQL的强一致性是什么,是如何实现的?

A4:我们实际上是通过自己的分布式事务管理系统来做事的。对于同一个应用,其自身的强一致性其实是可以保证的,但实际上银行系统是一个链接系统,所以每个节点最终都要保持强一致性。我们通过TCC模型来做到这一点,它要求每个节点以TCC的方式处理事务,最终达到很强的一致性。

Q5:因为目前我们也是财务公司,所以真的不能重复说是100%。

A5:半同步其实是有MySQL机制保证的。你只需要监控它是否做信息膨胀,重复自己。与主要步骤对比,检查数据。其实切换的时候,我们会检查从步骤的ID和主步骤的ID是否相同,重复到什么程度,就会强制重复。

另一方面,我们要求应用级,也就是对于一些要求比较高的应用,我们是基于Redis来做的。当应用程序发现该层没有数据时,可以进行切换,进行另一次事务补偿。回搜狐多看

负责编辑:


以上就是工行MySQL转型实践多达200个应用和近8000个例子001048基金的全部内容了,喜欢我们网站的可以继续关注瑗祥股票网其他的资讯!

相关推荐

*ST辅仁:控股股东辅仁集团1440万股经司法拍卖登记
8月4日,首都国度获悉,*ST辅仁(600781.SH)辅仁药业集团有限公司(以下简称"辅仁集团")控股股东1440万股被司法机...
中国的风险投资怎么样?风险投资的利弊
中国风险投资怎么样?中国的风险投资始于1980年代。在市场经济大潮中,中国的风险投资取得了长足的进步。在1990年代,在投资领域...
还有另一个大肉棒!第一次进入可能会赚到100,000的巨额利润
消费类饮料股票来到这里,这可能是一个大信号,曾经得到谢霆锋(NicholasTse)的支持。根据首次公开发行的安排,本周将发行7...
假期前的放养能改变即将到来的豆粕下降趋势吗?
油厂豆粕价格普遍下跌70元/吨据4月28日河北省油厂43%25蛋白大豆粉最新报价统计秦皇岛3630元/吨,下跌50元/吨;山东烟...
正利控股涉嫌涉嫌造假,香港证券监督管理委员会对5人提起刑事诉讼
8月15日,首都银行获悉,香港证券监督管理委员会针对正立控股(03728.hk)背后的做市活动针对5人发起了刑法。:08318....
对私募业绩不满,激进的高净值客户转投公募
一些激进的高净值投资者对私募基金的表现不满意,开始转向公募基金。但由于资产配置的需要,私募股权产品仍是重要的投资方向。中国基金报...
春节假期,昆明数码、家电、家居市场火爆。5G手机畅销
2021年牛年春节7天长假,很多人对"中国新年原位"的号召,"云"新年问候,新年商品网上购物、家庭娱乐、"马尚生活"等跨年假期随...
职业危机袭来:媒体分析师
白酒股创下新高,医疗概念股再次活跃,媒体分析师变得更加焦虑...到今年年底,关于一年的绩效库存,如今,A股媒体分析师正面临历史上...
首批国产全流程高原铁路隧道施工设备出货
原标题:第一批国产全流程高原铁路隧道施工设备出货适应高原高寒高温、复杂地形等恶劣条件地质情况12月8日上午,满载隧道施工设备的卡...

友情链接