数据可靠性通常与存储系统的一致性、持久性以及容错性等方面有关。虽然 Redis 和 etcd 都是用于存储数据的分布式系统,但它们的设计和用途有一些不同。
一致性:
- etcd: etcd 是一个分布式键值存储系统,实现了强一致性。它采用 Raft 协议来确保在分布式环境下数据的一致性。Raft
是一种强一致性的分布式一致性算法,确保系统在面临故障时依然能够保持一致性。 - Redis: Redis 的一致性级别相对较低,它通常被设计用于提供高性能的缓存和数据存储。Redis
支持主从复制,但在某些情况下,可能会因为网络分区等问题而导致数据不一致。
持久性:
- etcd: etcd
支持数据的持久性存储,并且数据会被安全地保存在多个节点上。这意味着在节点故障或网络问题的情况下,系统可以保证数据的持久性。 - Redis: Redis 支持数据的持久化,但持久化方式有两种:RDB(快照)和 AOF(追加文件)。RDB 是定期生成数据库快照,而
AOF 则记录每个写操作。在某些情况下,如果 Redis 在 AOF 持久化模式下配置为异步写入磁盘,可能会出现部分数据的丢失。
容错性:
- etcd: etcd 被设计为高度容错的系统。通过 Raft 协议,etcd 可以在集群中容忍节点故障,确保系统的可用性和稳定性。
- Redis: Redis 支持主从复制,但在某些情况下,主节点故障可能会导致数据不一致。Redis Sentinel 可以用于监控
Redis 主从集群并进行故障转移,但在切换过程中可能会有一些短暂的数据不一致。
总的来说,etcd 更强调在分布式环境下提供一致性、可靠性和容错性。在一些需要强一致性和可靠性的场景下,etcd 可能更适合作为数据存储系统。不过,具体选择还应该考虑应用的具体要求和场景。
goctl 生成最小化 gRPC 服务默认启动会向 ETCD 注册中心注册当前服务的信息
etcd安装
下载链接:
https://github.com/etcd-io/etcd/releases
如果在windows,选择:
【2】http://www.17bigdata.com/study/programming/etcd/etcd-install.html
【3】https://www.cnblogs.com/wujuntian/p/12837926.html
【4】https://www.fengfengzhidao.com/article/M9nccYsBEG4v2tWk2G0h
- 将文件夹解压到指定文件夹(不做要求)
其中etcd.exe是服务端,etcdctl.exe是客户端
-
将上述的文件全部加入到环境变量,不只是执行文件
-
查看 etcd是否安装成功
-
查看帮助文档: etcdctl help
-
由于文档中建议API version版本为3,设置版本 set ETCDCTL_API=3,若是3以上不需要修改。
-
安装完成