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

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


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-08-30 18:01



【责任编辑: 齐琳 TEL:(010)68476606】
在idea中用tomcat插件运行时打不开浏览器而出现这些代码"C:\Program Files (x86)\Java\jdk1.8.0_121\bin\java.exe" -Dmaven.multiModuleProjectDirectory=C:\Users\王成\IdeaProjects\untitled -Djansi.passthrough=true -DarchetypeCatalog=internal -Dmaven.home=C:\Environment\apache-maven-3.6.1 -Dclassworlds.conf=C:\Environment\apache-maven-3.6.1\bin\m2.conf "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.2\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.2\lib\idea_rt.jar=51770:C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Environment\apache-maven-3.6.1\boot\plexus-classworlds-2.6.0.jar org.codehaus.classworlds.Launcher -Didea.version=2023.1.2 tomcat7:run -P !jdk-1.8 [INFO] Scanning for projects... [INFO] [INFO] ------------------------< org.example:untitled >------------------------ [INFO] Building untitled 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) > process-classes @ untitled >>> [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ untitled --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ untitled --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] <<< tomcat7-maven-plugin:2.2:run (default-cli) < process-classes @ untitled <<< [INFO] [INFO] [INFO] --- tomcat7-maven-plugin:2.2:run (default-cli) @ untitled --- [INFO] Skipping non-war project [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.982 s [INFO] Finished at: 2023-06-11T09:39:45+08:00 [INFO] ------------------------------------------------------------------------ Process finished with exit code 0是什么原因
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值