CRAQ介绍(Chain Replication with Apportioned Queries)
CRAQ 是Chain Replication with Apportioned Queries的缩写,将读操作分摊到所有的节点上,所有的节点都可以进行读操作。chain 越长,读性能就越好,但是写性能就越差。
Chain Replication
所有的写操作必须从头开始,逐步往下传递,传到尾。尾部返回确认信息,逐步往上传,直到头部,才回复确认给客户端。所有的读操作,必须在尾部完成。这个结构是具有强一致性的。
CRAQ
所有的写操作必须从头开始,逐步往下传递,并将节点标记为 dirty,传到尾。尾部返回确认信息,逐步往上传,将节点标记为 clean,直到头部,才回复确认给客户端。
任意的节点都可以进行读操作。如果当前节点是 dirty,那么这个节点去询问尾节点,尾节点返回一个版本号,当前节点返回对应版本号的信息。
总结
会存在瓶颈,如果某台机器性能较差,会影响整体性能。
脑裂:可以使用zk或者其他Leader选举算法,但CRAQ本身无法解决
可以同时有多条链并行,提升系统性能,并达到负载均衡目的
参考资料:https://www.cnblogs.com/zzk0/p/13504600.html