Golang Go语言SDB 2.0.0 发布,增加了主从架构
一直在迭代自己的 SDB。
1.x 版本发布后,SDB 已经是一个可靠的数据库了。并在 2022.03.10 增加了 cli 功能,提供 SDB 的易用性。之后我们便开始思考如何为 SDB 增加分布式的能力。
参考 redis 的实现,SDB 优先实现了主从架构,也在 v2.0.0 正式发布。
实现的过程比较曲折,golang 语言下可靠的 raft 库并不多,只找到了两种候选方案,并对候选方案做了以下结论:
-
hashicorp raft
- 使用在 etcd 中,拥有广泛的使用者。然而接入下来发现,写入性能并不高。查阅了该项目的官方文档,他们只要提供的是可靠性,而不是性能。
-
dragonboat raft
- 由国人所写,号称是最快的 multi raft 库。
为了支持国人项目,SDB 选择了 dragonboat raft ,写入的 QPS 从 12k 下降到了 5k ,但读能力是不受影响的,而且也可以水平扩展读能力,收益还是大于损耗的。
架构图如下:
- SDB 集群中同时只有一个 master 节点,提供写入和读取的能力。以及 N 个 slave 节点提供读取能力。
- 当有读取请求的时候,可以请求集群中的任意节点,该节点会直接返回存储于该节点的数据。在主从节点数据同步的过程中,会因为同步时延带来数据的不一致。
- 当有写入请求的时候,可以请求阶段中的任意节点。如果请求的节点是主节点,则直接发起提案。若请求的节点是从节点,则该节点会将写入请求转发到主节点中,由主节点发提案。
- 当需要使用读写分离的时候,可以创建多个 sdb grpc client ,连接对应的节点即可实现。
Golang Go语言SDB 2.0.0 发布,增加了主从架构
更多关于Golang Go语言SDB 2.0.0 发布,增加了主从架构的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
大概看了一遍,非常赞
更多关于Golang Go语言SDB 2.0.0 发布,增加了主从架构的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
感谢支持。 😀😀😀
看到部分指令和 Redis 类似,有考虑直接兼容现有的 Redis Client 吗?
已 star
感谢支持
好问题。首先 SDB 和 redis 定义还不太一样。然后 redis 的协议对 SDB 还是比较累赘的。所以目前没有支持的打算。
针对“Golang Go语言SDB 2.0.0 发布,增加了主从架构”的帖子,作为IT领域GO语言方面的专家,以下是我的专业回复:
SDB 2.0.0版本的发布,标志着这款纯Golang语言开发的NoSQL数据库解决方案又迈出了重要的一步。主从架构的引入,无疑为其带来了更为强大的数据处理能力和更高的可用性。
主从架构是一种分布式数据库系统架构,其中包含一个主节点和多个从节点。主节点负责处理写操作,而从节点则负责处理读操作。这种架构不仅能够提高数据库的并发处理能力,还能在主节点出现故障时,快速切换到从节点,保证服务的连续性。
SDB 2.0.0通过引入主从架构,进一步优化了其数据结构支持及数据持久化功能,使得其能够更好地满足现代互联网应用对于大规模数据存储与快速访问的需求。这对于需要频繁更新且对实时性要求较高的应用,如社交媒体、在线游戏等,无疑是一个巨大的福音。
综上所述,SDB 2.0.0版本的发布,不仅提升了其自身的技术实力,也为广大开发者提供了更为强大、可靠的NoSQL数据库解决方案。我们期待SDB在未来能够继续推陈出新,为Golang生态的发展贡献更多的力量。