Etcd 是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。Etcd比较多的应用场景是用于服务注册与发现(前面文章已经介绍过),除此之外,也可用于键值对存储,应用程序可以读取和写入 Etcd中的数据(类似于内存数据库redis),还可用于分布式系统系统的消息发布与订阅,分布式的通知与协调,以及分布式系统中的负载均衡等等。
消息发布与订阅
在分布式系统中,最适用的一种组件间通信方式就是消息发布与订阅。即构建一个配置共享中心,数据提供者在这个配置中心发布消息,而消息使用者则订阅他们关心的主题,一旦主题有消息发布,就会实时通知订阅者。通过这种方式可以做到分布式系统配置的集中式管理与动态更新。
应用中用到的一些配置信息放到 Etcd 上进行集中管理。这类场景的使用方式通常是这样:应用在启动的时候主动从 Etcd 获取一次配置信息,同时,在 Etcd 节点上注册一个Watcher并等待,以后每次配置有更新的时候,Etcd 都会实时通知订阅者,以此达到获取最新配置信息的目的。
分布式搜索服务中,索引的元信息和服务器集群机器的节点状态存放在Etcd中,供各个客户端订阅使用。使用Etcd的key TTL功能可以确保机器状态是实时更新的。
分布式通知与协调
这里讲的分布式通知与协调,与消息发布和订阅有些相似。在分布式系统