单点故障(single point of failure),从英文字面上可以看到是单个点发生的故障,通常应用于计算机系统及网络。实际指的是单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪。这也是在设计IT基础设施时应避免的。
解决单点问题基本上有3个方向: (1)使用公共缓存,所有服务节点都将客户端的任务信息写入缓存。 优点:实现最简单 缺点:公共缓存成单点 (2)服务端之间实现内存共享,各自保存客户端的实例,但是模板实例不共享,模板本身不存在于多个服务节点。 优点:服务端之间相对独立,单节点故障不影响服务 缺点: 整体服务的吞吐有一定限制,服务水平只是比单节点的容量稍微高一点点 (3)服务端各自独立,提供一个服务寻址算法(类似Hash分段),客户端实现算法搜寻服务。 优点:分布式的服务的基本实现思路了 缺点:实现比较复杂,开发成本过高
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。