20 | 基于Raft的分布式KV系统开发实战(二):如何实现代码?
该思维导图由 AI 生成,仅供参考
如何实现接入协议?
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了基于Raft的分布式KV系统的代码实现细节。作者首先讲解了接入协议的实现,包括HTTP RESTful API的设计和路由信息的设置。其次,深入解析了KV操作的实现,包括赋值、查询和删除操作的具体流程,以及在领导者节点上执行的必要性。最后,介绍了如何创建和管理分布式集群,包括集群的创建和节点的加入过程。文章通过具体的代码实现细节,帮助读者深入理解了分布式KV系统的架构和实现细节,为读者提供了宝贵的技术指导。文章还提到了实现3种一致性模型,使用户可以根据场景特点选择相应的一致性级别。此外,作者强调了技术的重要性,以及在课程结束后将讲解大系统的架构设计技巧。整体而言,本文内容丰富,涵盖了分布式系统开发的多个方面,对于想要深入了解分布式KV系统的读者具有很高的参考价值。
《分布式协议与算法实战》,新⼈⾸单¥59
全部留言(18)
- 最新
- 精选
- wjh_all_in这里实现一致性,没有采用Quorum NWR,而是把所有读请求都转移到主节点,这在实际的生产系统会成为瓶颈吧?
作者回复: 加一颗星:),Raft和Quorum NWR是不同时使用的,相互独立的算法,Quorum NWR一般用于AP型系统中,临时提供强一致性。是存在瓶颈这个问题,但可以通过分集群,也就是multi raft等方法来解决。
2020-03-3010 - 方块睡衣老师请留意下项目地址
作者回复: 文章里有链接,在这里,我再贴下,https://github.com/hanj4096/raftdb
2020-04-017 - 小晏子如果移除节点,那要考虑是移除主节点还是非主节点吧,如果是主节点那么需要重新发起选主流程,并将主节点数据同步到其他节点,如果是非主节点,那么要通知主节点该节点移除不需要在发送日志给它了。
作者回复: 加一颗星:),如果是领导者节点,可以先kill掉相关进程,触发领导者心跳超时和领导者选举,将领导者变成跟随者,再移除节点。
2020-03-3025 - 还有这种操作老师有没有代码示例,或者项目示例
作者回复: 感谢唔多志同学帮忙回复:)。 为了方便其他同学看到,在这里,我再贴下链接地址,https://github.com/hanj4096/raftdb
2020-03-3023 - 羽翼1982一路过来追老师的课,收获还是蛮多的;不过比起实现的细节,我还是想更多了解设计和架构上的知识,特别是这些理论在成熟的开源分布式系统上应用(Kafka,TiDB,ETCD,Cassandra等等),希望老师能够同通过加餐的形式补充这些内容
作者回复: 感谢一路相伴,多交流:)。另外,感谢反馈,反馈我记下了,后面会综合大家的共性问题,做补充。
2020-03-311 - 🤔 2⃣ 0⃣ 1⃣ 9⃣🙄 ...$GOPATH/bin/raftdb -id node02 -haddr raft-cluster-host02:8091 -raddr raft-cluster-host02:8089 -join raft-cluster-host01:8091 ~/.raftdb $GOPATH/bin/raftdb -id node02 -haddr raft-cluster-host02:8091 -raddr raft-cluster-host02:8089 ~/.raftdb 老师,添加第二个节点,这两条命令都要执行一遍吗?我执行第一条就被阻塞了
作者回复: 加一颗星:),不需要,第一条命令是创建新节点并启动,在创建新节点时执行这条命令;第二条命令是启动节点,节点创建后,每次启动节点,执行这条命令就可以了。
2020-11-12 - Heaven那么整体流程还是按照写操作的流程 获取到store中进行执行 如果不报错,就说进行了RemoveServer() 报错了,查看报错信息,如果是因为不是领导者节点,那么直接返回客户端领导者的地址,让其进行重定向 如果是因为删除节点是领导者节点,无法删除导致的,那么直接返回客户端错误信息 (我这里认为是无法删除领导者节点的,应该由管理人员直接杀死领导者节点的进程)
作者回复: 加一颗星:),是的,重启领导者节点进程,集群会重新选举领导者,这个领导者将“下台”。
2020-08-26 - Heaven那么整体流程还是按照写操作的流程 获取到store中进行执行 如果不报错,就说进行了RemoveServer() 报错了,查看报错信息,如果是因为不是领导者节点,那么直接返回客户端领导者的地址,让其进行重定向 如果是因为删除节点是领导者节点,无法删除导致的,那么直接返回客户端错误信息 (我这里认为是无法删除领导者节点的,应该由管理人员直接杀死领导者节点的进程)
作者回复: 加一颗星:),是的,重启领导者节点进程,集群会重新选举领导者,这个领导者将“下台”。
2020-08-26 - 向永俊基于Hashicorp,如果在分布式kv系统中,需要实现cas功能,应该怎么实现
作者回复: 加一颗星:),比较并交换,是一种技术,基于raft实现这种技术?没看明白,能具体说说吗?补充下信息。
2020-08-054 - Geek_5735ca1.hddr和rddr代表什么含义? 2.单机上怎么模拟多个ip地址?
作者回复: 加一颗星:),问题1:hddr是HTTP服务的通讯地址,rddr是raft服务相互通讯的地址,比如心跳、日志复制等。问题2:可以的,配置不同的端口和数据存储目录。
2020-04-24