2) 互联网领域的协调服务
尽管高可用集群在企业领域广泛使用,但是对千互联网企业来说,采购企业级服务器和存储阵列 ( SAN) 来做协 调服务和基千通用服务器 ( CommodityServer) 来搭建协调服务,后者更匹配互联网的硬件思路。
因此,谷歌公司 在 2006年发表的论文 TheChubbylockservice forlooselycoupleddistributedsystems中详细描述了基于通用服务器实现经过学术界严格 证明的 PAXOS协调共识算法,最终提供互联网标杆的协调服务的全过程。
如图 2-3所示,5台 ChubbyCell服务器部署在不同的机柜,降低了故障影 响。通过PAXOS算法从 5台 ChubbyCell服务器中选取主 ( Master) 节点,并将主节点的处理逻辑复制到其他服务器 ,主节点发生故障后 能够选取出新的主节点,由千新的主节 点存有前期的处理逻辑,所以可以快速接收客户端 ( Client) 发起的请求,实现无缝切换。客户端的读/写 请求都发送给主节点,有利于控制请求顺序,从而保证数据一致性。
图2-3 谷歌公司Chubby架构
随着谷歌公司 的 TheChubbylockservicefor looselycoupleddistributedsystems论文详细描述的协调服务被业界广泛 接受 ,2008年,开源Apache社区以谷歌公司的 Chubby为模型,推出由 Yahoo主导开发的 ZooKeeper服务。如图 2-4所示,ZooKeeper的核心是原子广播技术,通过 ZooKeeperAtomicBroadcast模块实现更新请求的顺序性,提供协调服务。
图2-4 Apache ZooKeeper 技术原理
ZooKeeper被广泛应用千名字服 务 ( NamingService ) 、配置管理 ( ConfigurationManagement入 数据同步( DataSynchronization) 、主选取( LeaderElection入 消息队列( MessageQueue )、通知系统 ( NotificationSystem) 等场景。
随着 RAFT协议对 PAXOS的简化,从 2013年开始 CoreOS公司开始用 Go语言实现RAFT的协调服务 ETCD, 如图2-5所示。ETCD因其简单、安全 、高效、可靠 ,被广泛应用于元数据存储、服务发现、选主等场景。