听京东张成元讲NewSQL和raft。APMCon由听云、极客帮、InfoQ联合主办,是国内APM领域最具影响力的技术会议。最新一届APMCon以“驱动应用架构优化与创新”为主题,致力于推动中国APM的发展。成长和发展。京东高级架构师张成元在发布会上接受了记者采访。SQL早在1970年代就被提出,随后衍生出一些SQL产品供用户使用。2000年后,随着分布式系统的引入,NoSQL被发明出来。它没有SQL的特点,但是操作起来方便很多,扩展起来也很方便。近年来,有人发现,在实际使用中,SQL比NoSQL使用起来更方便,但对海量数据的缩容、扩容和管理却不如NoSQL好用。后来,他们提出结合NoSQL和SQL的特点。派生出NewSQL。什么是NewSQLNewSQL是一种新型高性能可扩展数据库的缩写,主要可以提供对分布式事务的支持,提供跨数据中心的一致性保证。在一些应用场景中,对分布式事务有严格的要求,NewSQL可以保证如果部分节点出现异常现象,可以替换成其他节点来满足场景的正常工作。与传统数据库相比,NewSQL的特点在于NewSQL可以带来的好处。主要支持分布式事务,以及强一致性和跨数据中心生存。比如双十一期间,提前可以做一些相对轻松的扩容工作,在这个过程中,如果某个机房出现异常,可以很好的切换,为整个业务提供更多可用的支持。什么是筏?它是分布式系统中的一种共识算法。raft作者对PAXOS研究了很长时间。后来他觉得PAXOS难于理解,难以实现,于是提出了raft算法。它最大的特点是比较容易理解,实现起来也比较简单,主要是通过leader选举+日志复制来实现分布式共识算法。但是,当技术网络状况不佳时,会出现频繁选择leader的行为,从而对整个系统对外提供的服务产生影响。在这种情况下,当务之急是完善基础网络。还有一种情况是某些节点在特殊情况下出现网络零星现象,也会引起选举。在实际实现中,还会有一些优化措施。其他节点与leader通信正常。当异常节点发起选举时,其他节点可以拒绝选举,异常节点可以快速恢复到follow的角色,这样有助于整个系统提供稳定的服务。Raft在NewSQL中的应用,是因为NewSQL可以提供分布式事务的支持,也就是支持ACID,同时也提供了高可用。如果一个节点发生故障,另一个节点可以快速取代它。但是在这种场景下,如果要让提交的交易不丢失,那么在备份节点接管服务的时候,必须保证所有的数据和异常节点的数据完全一致,这样才能真正接管服务。然后raft解决了一致性问题,保证了NewSQL存储节点之间数据的一致性。比如以ROCKSDB为例,假设NewSQL的存储节点是ROCKSDB,为了让多个ROCKSDB之间的数据保持一致,那么就在ROCKSDB之上加一层Raft服务,通过日志复制的方式让彼此之间保持一致。他们之间的数据是一致的。但是NewSQL在业界并没有特别成熟的产品。从实际使用来看,性能还有待进一步提升。在解决分布式事务时,还涉及到两阶段提交,或者变体两阶段提交。有很多工程细节。远没有一个非常完整和成熟的系统可以完全商业化,它还在探索中。在途中。
