听京东张成远讲NewSQL和raft的那些事儿

原创
开发
但是NewSQL在业界还没有特别成熟的产品,在实际使用上来说,在性能方面需要进一步提升。

2016中国应用性能管理大会(简称APMCon 2016)于8月18日至19日在北京新云南皇冠假日酒店隆重召开。APMCon由听云、极客邦和InfoQ联合主办的作为国内APM领域***影响力的技术大会,***举办的APMCon以“驱动应用架构优化与创新”为主题,致力于推动APM在国内的成长与发展。京东商城高级架构师 张成远在大会现场接受记者采访。

SQL早在70年代左右就被提出来了,后续有一些SQL的产品衍生出来供用户使用。2000年之后,随着分布式系统的引入,后来发明了NoSQL,它没有SQL的特性,但是在操作上方便了很多,在扩展上也非常便捷。近几年有人发现,在实际使用过程中,SQL比NoSQL用起来更方便,但是又不像NoSQL对于海量数据的收缩扩容以及管理容易使用,后来就提出想把NoSQL跟SQL的特性结合起来,就衍生出来了NewSQL。

什么是NewSQL

NewSQL是一类新的高性能的可扩展的数据库的简称,主要能够解决提供分布式事务的支持,并且可以提供跨数据中心的一致性保证。在一些应用场景中,会对分布式事务有着严格的要求,NewSQL就能够保证如果某些节点出现了异常现象,可以与另外的节点进行替换,以满足场景的正常工作。

NewSQL与传统数据库相比的特点是,NewSQL自身具有的特点就是能够带来的效益,主要对分布式事务的支持,以及强一致性和跨数据中心的存活,像在双十一的时候,提前就可以做一些比较轻松的扩容的工作,以及在这个过程中,如果说某个机房有异常,可以很好的进行切换,对整个服务来说可以很好的提供更可用支持。

什么是raft

raft是分布式系统里面的一致性的算法,raft作者曾学习了很久的PAXOS,后来觉得PAXOS比较难理解,而且在实现的时候很困难,所以他提出了raft算法。其***特点就是比较容易理解,在实现上也相较简单,主要是通过选举leader+日志复制,实现分布式的一致性算法。

但是在技术网络状况不太好的情况下,会出现频繁选取leader的行为,这对整个系统对外提供服务是有影响的,这种情况优先是要改善基础网络。还有一种情况,某些节点在特殊情况下有网络偶发的发生,这样也会引起选举的情况,在具体实现的时候,会有一些优化的措施。其他节点跟leader的通信是正常的,当这个异常的节点发起选举的时候,其他的节点就可以拒绝掉这次选举,这个异常的节点就可以很快恢复到follow的角色,这样对于整个系统提供一个稳定的服务会比较有帮助。

raft在NewSQL中的应用

因为NewSQL能够提供分布式事务的支持,也就是ACID的支持,同时还要提供高可用,如果有一个节点挂掉了,可以快速有另外一个节点接替它。但是在这种场景下,如果要保持已提交的事务没有丢失,那么备份的节点来接替这个服务的时候,要保证所有的数据跟异常的节点数据是完全一致的,才能够真正的接替这个服务。那raft就是解决一致性的问题,保证NewSQL的存储节点之间的数据一致。举个例子,假如说以ROCKSDB来说,假设NewSQL的存储节点是ROCKSDB,要让多个ROCKSDB之间的数据一致,那就在ROCKSDB上面加一层Raft的服务,通过日志复制的方式,让彼此之间的数据是一致的。

但是NewSQL在业界还没有特别成熟的产品,在实际使用上来说,在性能方面需要进一步提升。在解决分布式事务的时候,还涉及到两阶段提交,或者变种的两阶段提交,有很多的工程细节的问题,离一个非常完善的成熟的,可以完全商用的系统来说,还在探索的路上。

 

责任编辑:陈琳 来源: 51cto
相关推荐

2016-04-20 17:18:29

分布式数据库京东WOT

2022-11-04 07:57:59

编程编码编译器

2018-08-17 10:30:52

JavaDocker限制

2021-05-22 09:44:21

PythonNumpy数组Python矩阵

2023-04-11 07:34:40

分布式系统算法

2021-03-18 09:01:53

软件开发软件选型

2021-06-02 08:33:31

TPCTPC-H系统

2011-02-25 14:35:00

2018-09-26 06:50:19

2022-02-08 17:39:04

MySQL服务器存储

2021-06-09 13:28:40

密码安全身份认证数据安全

2013-12-26 14:23:03

定位系统GPS监测

2013-01-18 09:26:58

2021-08-03 10:01:37

JavaScript事件方法

2018-02-02 13:58:59

数据存储

2012-07-19 15:30:00

Linux

2013-07-09 13:50:05

2010-04-07 13:13:19

Visual Stud

2022-08-04 10:18:32

栈迁移​寄存器内存

2021-05-10 08:58:09

Harbor架构Registry 服务
点赞
收藏

51CTO技术栈公众号