暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

支持redis 协议的强一致raft 集群

数据库和存储 2021-04-16
1729

raftis

我们用floyd(我们实现的raft 库) 包装了一个支持redis 协议的强一致集群, 还是很方便的.

欢迎围观(点击阅读原文查看源代码)

https://github.com/Qihoo360/floyd/tree/master/floyd/example/redis

floyd 是360 基础架构组实现的支持raft 协议的 library. 目前已被采纳为 raft 官方推荐cpp 版本协议实现之一

Floyd是一个C++实现的Raft一致性协议库。

  • Raft是一个相对于Paxos更容易理解和工程实现的一致性算法;

  • Floyd是一个一致性,可以很容易引入到各种项目;

  • Floyd支持集群节点之间的一致性操作,例如:Read/Write/Delete;

  • 同时也支持非一致性的本地数据访问接口: DirtyRead/DirtyWrite;

  • 以及查询、管理接口:GetLeader/GetServerStatus/set_log_level

用户

  • Floyd 目前应用在Zeppelin中,为其Meta集群提供一致性的存储;Zeppeli是一个大容量的分布式key-value存储;

  • 陆续会有新的项目在使用;

我们为什么倾向于库,而不是一个服务?

当我们在有服务发现、协调和管理的需求时,ZooKeeper是一个很好的选择,但是有一定成本.

  • 我们必须维护一套新的ZooKeeper的服务;

  • 我们也必须使用其SDK,去和ZooKeeper服务交互;

我们认为,一个集成、单一的服务通常会比多个服务更加可控、简单. 所以,作为一个库来使用,能够简化整体的架构.

Floyd功能和API

  • API和具体使用

typeAPIStatus
一致性接口Read支持
一致性接口Write支持
一致性接口Delete支持
本地接口DirtyRead支持
本地接口DirtyWrite支持
查询GetLeader支持
查询GetServerStatus支持
  • Raft的功能特性

LanguageLeader election + Log ReplicationMembership ChangesLog Compaction
C++YesNoNo


文章转载自数据库和存储,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论