做网站推广要注意什么,沧州市科一网站,做网站跟桌面程序差别大吗,wordpress怎么当站长1.分布式系统定义及面临的问题
分布式系统是同时跨越多给物理主机#xff0c;独立运行的多个软件所组成的系统。类比一下#xff0c;分布式系统就是一群人一起干活。人多力量大#xff0c;每个服务器的算力是有限的#xff0c;但是通过分布式系统#xff0c;由n个服务器组…1.分布式系统定义及面临的问题
分布式系统是同时跨越多给物理主机独立运行的多个软件所组成的系统。类比一下分布式系统就是一群人一起干活。人多力量大每个服务器的算力是有限的但是通过分布式系统由n个服务器组成起来的集群算力是可以无限扩张的。
分布式系统的协调工作就是通过某种方式让每个节点的信息能够同步和共享。这依赖于服务进程之间的通信。通信方式有两种
通过网络进行信息共享通过共享存储
2.Zookeeper如何解决分布式系统面临的问题
Zookeeper对分布式系统的协调使用的是第二种方式共享存储。其实共享存储分布式应用也需要和存储进行网络通信。
Zookeeper就像是svn存储了任务的分配、完成情况等共享信息。每个分布式应用的节点就是组员订阅这些共享信息。当主节点组leader对某个从节点的分工信息作出改变时相关订阅的从节点得到zookeeper的通知取得自己最新的任务分配。完成工作后把完成情况存储到zookeeper。主节点订阅了该任务的完成情况信息所以将得到zookeeper的完工的通知。参考下图 大多数分布式系统出现的问题都源于信息的共享出现了问题。如果各个节点间信息不能及时共享和同步那么就会在协作过程中产生各种问题。Zookeeper解决协同问题的关键就是在于保证分布式系统信息的一致性
3.Zookeeper的基本概念
zookeeper是一个开源的分布式协调服务其设计目标是将那些复杂的且容易出错的分布式一致性服务封装起来构成一个高效可靠的原语集并以一些简单的接口提供给用户使用。zookeeper是一个典型的分布式数据一致性的解决方案分布式应用程序可以基于它实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能。
1集群角色
通常在分布式系统中构成一个集群的每一台机器都有自己的角色最典型的集群就是Master/Slave模式主备模式此情况下把所有能够处理写操作的机器成为Master机器把所有通过异步复制方式获取最新数据并提供读服务的机器成为Slave机器。
而在Zookeeper中这些概念备颠覆了。它没有沿用传统的Master/Slave概念而是引入了Leader、Follower、Observe三种角色。Zookeeper集群中的所有机器通过Leader选举来选定一台被称为Leader的机器Leader服务器为客户端提供读和写服务除Leader外其他机器包括Follower和ObserverFollower和Observer都能提供读服务唯一的区别在于Observe不参与Leader选举过程不参与写操作的过半写成功策略因此Observer可以在不影响写性能的情况下提升集群的性能。
2会话session
Session指客户端会话一个客户端连接是指客户端和服务端之间的一个TCP长连接Zookeeper对外的服务端口默认为2181客户端启动的时候首先会与服务器建立一个TCP连接从第一次连接建立开始客户端会话的生命周期也开始了通过这个连接客户端能够心跳检测与服务器保持有效的会话也能够向zookeeper服务器发送请求并接受响应同时还能通过该连接接受来自服务器的Watch事件通知
3数据节点Znode
在谈到分布式的时候我们通常说的“节点”是组成集群的每一台机器。 然而在Zookeeper中“节点”分为两类 第一类同样是指构成集群的机器我们称之为机器节点 第二类则是指数据模型中的数据单元我们称之为数据节点-ZNode。 Zookeeper将所有数据存储在内存中数据模型是一棵树ZNode Tree由斜杠/进行分割的路径就是一个ZNode例如/app/path1。每个ZNode上都会保存自己的数据内容同时还会保存一系列属性信息。
4版本
Zookeeper的每个ZNode上都会存储数据对于每个ZNodeZookeeper都会为其维护一个叫Stat的数据结构Stat记录了这个ZNode的三个数据版本分别是version当前ZNode的版本、cversion当前ZNode子节点的版本、aversion当前ZNode的ACL版本
5Watcher事件监听器
Watcher事件监听器是Zookeeper中一个很重要的特性Zookeeper允许用户在指定节点上注册一些Watcher并且在一些特定事件触发的时候Zookeeper服务端会将时间通知到感兴趣的客户端该机制是Zookeeper实现分布式协调服务的重要特性。
6ACL
Zookeeper采用ACLAccess Control Lists策略来进行权限控制其定义了如下五种权限
CREATE创建子节点的权限READ获取节点数据和子节点列表的权限WRITE更新节点数据的权限DELETE删除子节点的权限ADMIN设置节点ACL的权限
其中需要注意的是CREATE和DELETE这两种权限都是针对子节点的权限控制