初探分布式环境的指挥官ZooKeeper
Posted eaglediao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初探分布式环境的指挥官ZooKeeper相关的知识,希望对你有一定的参考价值。
目录
1. 从单机到集群,分布式环境中的挑战
1.1 集中式的特点
- 部署结构简单
- 协作相对简单,不存在分布式协作问题
- 单点故障问题
1.2 集中式的痛点
随着业务的发展和演进,将所有业务集中实现在一个应用上的做法往往满足不了公司及业务发展的需要,单一的系统已经不足以承载大量的业务。 (尤其是互联网企业)
所有业务堆在一个单一的系统,其痛点:
- 业务模块边界不清,代码耦合严重,不利于维护;
- 一个大的应用工程不利于版本迭代开发和发布。
1.3 从单体到SOA的转变
面向服务架构( service-oriented architecture, SOA )
通过系统拆分实现SOA架构的价值,沉淀出一批稳定的后台服务,通过叠加复用又可以快速响应用户的前端需求。
而面向服务体系架构能够落地的基础技术之一,就是分布式服务框架。
1.4 分布式服务总体框架
- 服务拆分后的基本技术问题: 如何实现服务之间的通信?
- RPC(RMI、HttpClinet等)
- 另一方面,如何实现服务治理?
- 一般而言包括:服务自动发现、自动下线、服务注册中心、负载均衡等功能。
1.5 分布式应用概述
分布式应用可以再给定时间(同时)在网络的多个系统上运行,通过协调它们以快速有效的完成特定任务。
分布式应用正在运行的一组系统称为集群,集群中运行的每台机器称为节点。
分布式应用有Server和Client两部分。Server是分布式的,有通用的接口,以便Client可以连接到集群中的任何服务器并获得相同的结果。
分布式应用的优点
- 可靠性 单个或几个系统的故障不会使整个系统出现故障。
- 可扩展性 可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改。
- 透明性 隐藏系统的复杂性,并将其显示为单个实体/应用程序。
分布式应用的挑战
- 竞争条件 两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。
- 死锁 两个或多个操作等待彼此无限期完成。
- 数据一致性 数据的部分失败。
- 网络的不稳定性
2. ZK基本概念及核心原理
2.1 ZK自我介绍
2.2 ZK基本概念
2.2.1. 客户端-服务器架构
2.2.2 数据结构
2.2.3 Session(会话)、工作流
2.2.4 监视
3. ZK应用举例
3.1 应用举例
分布式应用程序可以基于它实现:
- 数据发布/订阅
-负载均衡 - 命名服务
- 分布式协调/通知
- 集群管理
- 分布式锁和分布式队列等
例,
Hadoop:依靠ZooKeeper进行配置管理和协调。
Hbase: 通过集中式配置管理和分布式互斥机制来帮助主机和区域服务器跟踪分布式数据的状态。
…
3.2 项目中的应用
Zookeeper作为注册中心
对内网四大服务(sso、web、push和collect)相互通信的RPC接口进行管理。
1. 系统启动时RPC接口在ZK中注册(create node)
2. 客户端从ZK获取对应的RPC接口。进行调用。
githup上有个类似的demo参考:https://github.com/luxiaoxun/NettyRpc
交互流程示意图:
4 小结
重点回顾:ZK数据模型、watch机制。
能帮助我们实现:分布式一致性、服务治理功能等。
参考资料:
《从Paxos到Zookeeper分布式一致性原理与实践》
《分布式服务框架原理与实践》
w3cschool zookeeper教程
以上是关于初探分布式环境的指挥官ZooKeeper的主要内容,如果未能解决你的问题,请参考以下文章
架构师必备之高性能架构学习路线:消息中间件,Nginx,Redis等!