从传统.NET+SQL Server架构变为高并发、高访问、高交互的企业级分布式架构,相当于在两条平行线的跳跃。遇到最大挑战是如何在硬件和操作系统上如何重构去中心化服务集群架构;面对临时活动,如何建设成为大容量、可灵活响应的分布式系统。
实际的应用场景,比如怎样满足分布式环境下同步终端账户余额的需求。
在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么它们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个一致性算法以保证每个节点看到的指令一致。
Raft算法将Server划分为3种角色:
1. Leader 负责Client交互和log复制,同一时刻系统中最多存在1个
2. Follower 被动响应请求RPC,从不主动发起请求RPC
3. Candidate 由Follower向Leader转换的中间状态
真心感谢以下参考资料:
1. 动画演示Raft: http://thesecretlivesofdata.com/raft/
2. http://www.jdon.com/artichect/raft.html
3. http://blog.csdn.net/cszhouwei/article/details/38374603
4. https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf
5. https://raft.github.io/