目标是减小或消除组件之间的“手动”的链接。当你把你的应用程序推送进生产的时候,全部的这些事情均可以配置:数据库服务器的主机和端口,REST 服务的 URL 等等,在一个高可扩展的架构中,这些链接能够动态改变。一个新的后端能够被添加,一个数据库节点能够被中止。你的应用须要适应这种动态环境。算法
这里有一些工具能够管理这些需求(Apache Zookeeper, etcd, ...)。这些工具的广泛原则是:当启动的时候,一个服务的实例必须注册进配置服务器。当中止的时候(完美中止或是 Crash 了),节点必须从配置服务中移除掉。注册后,其余服务能够在配置服务器中搜索到提供制度服务的实例列表(主机和端口)。数据库
历史 | 使用者 | 开发语言 | 存储 | 一致性 | 访问 | 安全 | 性能 | 功能 | 界面 | 优势 | 缺点 | |
zookeeper | 悠久,来源于 hadoop 项目 | YouTube、eBay、雅虎(还有大量使用hadoop 的) | Java | 类文件系统 | Paxos | 没有http 客服端,可是有多种缘由客服端 | 能够有ACL | 本身开发或第三方 | 无 | 的主要优点是其成熟、健壮以及丰富的特性 | 重,无用特性过多,形成资源的浪费 | |
consul | 是HashiCorp公司推出的开源工具 | go | 键值存储系统 | 使用 Raft 算法来保证一致性 | 支持 http 和 dns 协议接口 | http 访问 咩有ssl ,可是还有ACL | 集成服务注册与发现框架 | 有 | 情,功能目标准确,支持多数据中心 | |||
etcd | 短,CoreOS开发 | Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都普遍使用了etcd。 | go | 键值存储系统 | 使用Raft保证一致性 | curl可访问的用户的API(HTTP+JSON) | 可选的SSL客户端证书认证 | 快速: 单实例每秒 1000 次写操做 | 本身开发或第三方 | 无 |