典型分布式应用场景有:数据发布/订阅、负债均衡、命名服务、分布式协议/通知、集群管理、Master选举、分布式锁、分布式队列等。
数据发布/订阅
主要应用场景如配置中心
变更服务地址、数据库切换等,集群中的服务使用Zookeeper中的配置提供服务,解决服务规模大,配置修改频繁的问题。
负载均衡
可以提供一种动态的DNS服务,Zookeeper中维护最新的IP、域名映射关系,客户端根据需要使用Zookeeper急群众的DNS信息来解析域名对应的IP,达到动态路由的目的。
命名服务
命名服务是分布式系统最基础的公共服务之一,在分布式系统中,被命名的尸体通常可以是集群中的机器、提供的服务地址或远程对象等,这些我们都可以同城他们为名称(Name),其中较为常见的就是一些分布式服务框架(如RPC/RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据指定的名字来获取资源的实体、服务地址提供者的信息等。
分布式协议/通知
分布式协议/通知是协调不同组件协同供作的关键所在,例如分布式事务处理、机器间的相互协调等。引入这样一个协调者,便于将分布式协议的职责从应用中分离出来,从而可以大大减少系统之间的耦合性,而且能够显著提供系统的可扩展性。应用举例:
- Mysql数据复制总线:Mysql_Replicator
- 任务注册
- 任务热备份
- 记录执行状态
- 控制台协调
- 冷备切换
- 一种通用的分布式系统机器间通信方式
- 心跳监测
- 工作进度汇报
- 系统调度
集群管理
集群管理包括两部分:
集群监控
(对集群运行时状态的手机)集群控制
(对集群进行操作与控制)
通常会有如下的需求:
- 需要知道集群中有多少机器在工作
- 对集群中的机器运行时状态进行收集(分布式日志收集系统)
- 对集群中的机器进行上下线操作(云主机管理)
Master选举
当需要分布在不同机器上的相互独立的相同系统单元执行一个独立的操作时需要选出一个Master执行相应的操作。
分布式锁
分布式锁是控制分布系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段防止彼此之间的干扰,以确保一致性,在这种情况下,就需要使用分布式锁了。
分布式队列
使用Zookeeper可以实现FIFO:先进先出
、Barrier:分布式屏障
,确保在分布式的架构下系统工作流程的正确性。