首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PingCAP首席技术官黄东旭:金融级分布式数据库的现状和发展趋势

大数据头号·产业资源整合媒体平台

在“2018大数据产业峰会——分布式数据库技术论坛”上,PingCAP首席技术官黄东旭带来主题演讲,围绕《金融级分布式数据库技术现状和趋势》,对分布式数据库在技术前沿的现状,和自己对未来趋势的想法做出了详尽分享。

PingCAP首席技术官 黄东旭

感谢各位,今天我过来主要是分享一下现在分布式数据库在技术的前沿,大概是一个什么样的现状,和我自己对未来趋势的想法。

首先介绍一下我自己,我是PingCAP这边的联合创始人跟CTO,之前在互联网公司做底层架构和分布式存储出身,我并没有在传统金融领域做过,甚至没有做过传统的数据库。我是一个非常喜欢开源的爱好者,之前基本做的东西都是会完全毫无保留的去开源出来,去给大家分享,包括后来去成立PingCAP公司,也是为了能够把技术,把一些普惠的东西让整个行业受益。

今天想去谈一下金融级的分布式数据库,这几年分布式数据库技术上来说,我认为有了一些翻天覆地的变化,大家看传统的数据库,过去三四十年基本上也没有太大的变化,但是大家会发现最近几年分布式技术跟传统的数据融合,催生出一个新的领域,现在说分布式数据库,到底有哪几种技术,或者现状大概是什么样子。

我希望把最近几年在分布式OLTP数据库技术路线给大家说一下,我本人是工程师,今天整个风格会比较技术,希望能给大家一些技术上的看法。第二个是共享存储建构,包括共享磁盘和共享日志,第三个是纯分布式架构。

最传统,或者行业内用的最广泛的一个方案就是分片,在过去,因为我本人是在互联网行业做了很多年,我们一直在大规模使用着开源的数据库,在分片层面上,没有人想去分片,我作为一个业务提供方,底下是一个数据库其实是最好的,而不是为了数据库架构来牺牲我的业务层,我认为分片是不得不去做的事情,是一个过度方案。通过牺牲业务层的特性,我其实可以很快速的把架构做起来,对于比较简单的场景,比如像互联网典型的社交场景,读写性能也好,使用起来的体验也好,其实是不错的。大家如果真正维护大规模的分片,你需要针对基础设施制定你的业务,这个是不可以接受的,大家在去考虑分布式数据库,为什么重新把这个概念提出来?我们总在兼容现有的应用,或者现有开发模式,能用分布式的思想,或者分布式的架构给我们赋能,中间怎么去运维,怎么降低使用它的成本,我个人觉得分片及其周边的分片方案,慢慢的往后进化到更先进的技术架构上。

在传统单机数据库上进行数据分片,通过业务层或者一个中间路由层 (Proxy) 将不同的请求发送给不同的数据库实例。代表的方案:业务层拆分, 分库分表;基于 Proxy 的各类数据库中间件。

直接将 MySQL 实例部署在分布式文件系统之上,MySQL on Ceph,MySQL on ClusterFS。

缺陷一个是写入瓶颈并没有解决,仍然是单机写入,二是依靠文件系统的多副本复制及高可用,写入瓶颈并没有解决,查询计划也并没有感知到数据本身在底层不同的分布,也没有办法做分布式的计算和优化,实施的成本比较低,上线比较快,基本上大多数现有的,大家可以去看私有云的厂商。高可用就会带来一些性能上的损耗。

最近这两年,真正在云端出现了一些面向云端的共享存储设计的分布式数据库,这句话代表了这几年很核心的思想,就是日志即存储。

数据本身其实就是日志,大家可以在技术层面上非常好的理解这句话,只要你保证日志的一致性和高可用。你可以把整个底线的分布式文件系统剥离开来,我每一条写入的日志复制就够了,这个架构的代表方案。

整个业界都在强调云化,MySQL Group Replication这种方案的优势是什么?对于刚才提到的共享磁盘的方式,现在真正要实际写入的只有一个,最大的核心优势就是兼容性是非常非常好,前端直接是MySQL的前端的,MySQL这一层基本上一点代码没有改,基于MySQL业务来说不用改银行代码就可以适配到这个方案上面,对公有云来说是非常重要的东西,对公有云来说他需要把自己的数据库开放给全社会或者各种各样的企业用,不可能假设我的兼容性只做到百之六七十,开门迎客的时候各种各样的维护正本,做客服,做适配的成本非常高,对公有云来说需要找到100%的兼容性,能够有一定程度的扩展性能力方案。

这个架构目前来说我们探索出了自己的道路,但是仍然有自己缺陷。优势是相比共享磁盘的方案,极大减小了读写放大,对公有云的使用场景友好。缺陷是仍然有单点写入的问题Scale 仍有上限,复杂SQL计算很难利用多机的计算资源。

还有一个比较大的技术方向,也是我个人觉得比较有前途的技术方向,就是纯分布式的建构,虽然是三无的架构,无单点、无中心、无限平,在数据库领域是非常有力的特性。还有一个是自动分片,无关联的请求没有公共的依赖路径。代表系统有Google Spanner/F1和TiDB。

优势是真正能做到无限的水平扩展;无单点,整体可用性强;业务侵入性小;可以利用分布式计算技术加速复杂查询。劣势是实现较为复杂,在某些场景下需要重新思考业务设计。

快速的说一下我这边对数据库接下来十年会发生什么事情,或者在金融级别上会发生什么事情。首先是Shared nothing会成为主流,好的东西会被总结现在,反哺到各种各样的传统行业。

另外一个是重新定义可用性和可运维性,针对单机系统去做,现在整个观念个人觉得需要反过来,一定要认清现实,故障是没有办法避免的,一旦变成分布式架构,硬件和网络每时每刻都可能存在问题,可能不是硬件出了问题。怎么自恢复其实才是关键,在我们内部有一个原则,所有的故障恢复在我们数据库上不需要人来介入,需要人介入的系统,人一定会成为故障点,这个数据库应该有自我愈合,自我修复的能力。

在金融领域,大家看到这几年各种各样业务百花齐放,有一些业务负载其实是一个更像互联网的业务负载,并不是某一个数据库就会变成事实标准,所有东西都可用,更大的情况是百花齐放的状态。

刚才也在反复强调,云化的趋势,整个IT基础设施,未来十年会有一个很大的变化,我们业务开发人员不会再碰到硬件,做业务的时候不会选择用什么样的机器,用什么样的机房,整套慢慢会变成一个个计算单元,只要关心业务怎么去写就好了,整个硬件设施都会被虚拟化技术隔离开,首先是非常好的业务开发的模式,不需要去关心这些问题,另外一个可以加大计算资源的利用率。

我本人比较关心学术上的发展,慢慢看到趋势就是数据仓库和数据库在融合,HTAP指的是混合交易分析型数据库将会大放异彩。

前台跟中台,在整个金融体系技术架构里面会多一个东西,我定义是叫大中台,我需要实时的数据中台,我需要做实时的数据分析,或者实时同步的东西,这也是现在互联网做微服务体系架构的体现,尽可能做到无状态,在未来,在分布式数据库这一块也会对中台业务做一个很好的支撑。

我个人认为对于新的分布式数据库评测和设计,包括标准化是刻不容缓,我个人觉得,包括TPCC等传统数据库评测,在北京银行做了比较好的探索,直接把业务抽象成一套新的标准,我觉得这是很好的做法,但是能不能把这个做法再做一层抽象,针对已有的方案做标准化的定义,这个工作其实是一个,包括学术界也很欠缺的东西。

也给分布式数据库打一个广告,我本人也参与了数据库的标准制定,大家可以去看一下。谢谢大家。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605G1DN5Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券