分布式数据库是无用的屠龙术吗?

用户头像
海边的Ivan
关注
发布于: 2020 年 04 月 23 日
分布式数据库是无用的屠龙术吗?

本文尝试探讨分布式数据库的适用场景,以及对企业架构转型的意义。



分布式数据库会助力架构转型吗?



主流分布式数据库的目标都是提供与单体数据库相同的功能、更强大的性能,同时屏蔽内部分布式架构的复杂性,让应用系统实现数据库的无感切换。很多将分库分表方案称为分布式数据库的同学可能会持不同意见,好吧,我们这里只说主流。



分布式数据库的目标是不期望对应用系统的架构造成影响的,当然也就不会推动应用级架构转型,这点与微服务是完全不同的。

 

从外部特性来说,分布式数据库区别于单体数据库在于两点,分别是高可靠高性能



高可靠源自多副本选主机制(Raft/Paxos),在主副本宕机后的极短时间内,其他副本将承接原来主副本职责,继续提供服务。这个副本切换过程无需人工干预,且有多个备用节点,相比多数单体数据库的备机切换方案可靠性更高。同时,更小的分片粒度也缩小了故障的影响范围,从另一方面提升了系统的整体可靠性。



高性能则是由于在数据分片机制的帮助下,我们可以将数据分布到更大规模的设备集群上,从而提升系统整体处理性能。当然,这个性能主要是指吞吐率(Throughput),也就是并发处理能力;而在响应延迟(Latency)上,按照目前分布式数据库的实现机制,是无法超越于单体数据库。



分布式数据库具备出色的水平扩展能力可以使应用系统的处理能力实现数量级的跃升。

 

分布式数据库是“屠龙术”吗?

 

目标很美好,但有一个质疑始终无法回避,我们真的需要这么强大的性能和更高的可靠性吗?分布式数据库是不是无用武之地的“屠龙术”?



这确实是一个需要冷静看待的问题。除少数互联网头部公司,多数企业应用系统的数据库TPS(不含查询操作)可能都不会超过1000,这个压力是单体数据库可以轻松应对的。



理论上,在人们社会经济活动数字化程度更高的领域对系统处理能力会有更高的需求,但现实中即使在金融、电信领域,也仅是少数核心系统面临高并发的压力。



同时,随着微服务架构的流行,单体应用拆分后,数据存储也会做单元化改造,那么数据库的压力可能进一步降低。



从现有架构体系上看,如果数字化程度没有大幅提升,分布式数据库的使用范围仍是非常有限的。

 

上面的说法,一定让分布式数据库的粉丝有些沮丧。这么牛的产品,居然没有多少地方适用,不科学呀,是不是打开方式有问题?

 

“生命收割机”马克沁机枪



我们不妨先放下这个问题,从军事领域的一项技术变革说起。



机枪最早出现在一战中,最著名的是马克沁机枪,水冷枪管,理论射速达每分钟600发。二战期间,机枪得以快速发展,时至今日仍然是步兵的常规武器。



机枪有很多优点,但自重较大降低了机动性。我军装备的67-2式通用机枪,包括弹药、配件等,整套机枪重量仍超过150公斤,通常由一个5人班组支持。

 

机枪改变了战场的格局,并不是简单替换单兵武器的思路,而是赋予其新的使命。机枪通常被布置在阵地的左右侧翼,辐射整个战场,利用其射速快、火力强的特点,形成交叉火力网,通过持续输出火力实现对敌方步兵的压制。在一战的索姆河战役中,德军依靠马克沁机枪组成的交叉火力网,一天就击毙6万英军。

 

分布式数据库和机枪颇有相似之处,虽然性能更强劲,但结构也更加复杂,运维成本更高。在多数普通系统中应用分布式数据库,就像单兵配置重机枪,影响了系统的灵活性而收益也不确定。



分布式数据库的最佳部署位置在哪呢?我认为答案应该是“业务中台”。

 

业务中台和分布式数据库更配哦

 

业务中台是复用能力的下沉,源自业务流程的重组,各个业务板块的同类业务流程和操作被归并到各中台系统。这样,原本分散自治的业务线会逐渐演变为一体化紧密耦合的业务体系,虽然提升了复用能力,但也出现了更多应用级的单点依赖。



要想实现中台体系的平稳运转,势必要求中台系统的性能和可靠性达到更高的标准。在很多架构方案中,数据库往往是性能瓶颈的关键所在,分布式数据库正好解决了这个痛点。



接下来,我们通过一个具体案例来说明分布式数据库的战术价值。



ECIF的变革



银行业大多建立了客户信息系统(ECIF),用以提供客户信息的统一维护和查询,实质是业务中台的客户中心。ECIF直接影响到银行的关键业务开展,出于对单点风险的顾虑,在实践中通常会采用“应用级冗余”的设计,由ECIF向其他系统异步同步数据,即使ECIF系统出现故障也可以支持多数业务持续运行。



这种方式的弊端是在应用系统中混入了数据持续更新的逻辑,这部分代码本质是在保障基础设施的可靠性。而不同应用系统可能采用不同语言实现,代码质量因开发人员水平存在差异,甚至是这些客户数据的更新和使用模式,也仅停留在管理规范上,缺乏技术上的控制手段。



引入分布式数据库后,我们可以废弃现有的“应用级冗余”,由ECIF系统独立保障各业务场景下客户数据的性能和可靠性。本质上我们是用基础软件内部的复杂性置换了应用系统间的复杂性,将技术问题收敛,应用系统可以专注于业务逻辑的实现。

 

总的来说,在对数据库的性能和可靠性要求上,业务中台转型带来的影响与系统级的微服务架构改造是截然相反的,更多访问压力会被汇集到业务中台的各个系统,而分布式数据库则成为中台架构方案中必不可少的利器。

发布于: 2020 年 04 月 23 日 阅读数: 54
用户头像

海边的Ivan

关注

盗火的普罗米修斯 2019.04.19 加入

企业架构师,前咨询顾问,长期服务于金融行业,关注数据技术发展,对大数据、分布式技术有浓厚兴趣,公众号:金融数士。

评论

发布
暂无评论
分布式数据库是无用的屠龙术吗?