ZERO
持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/articles/2018/12/28/1546010863015
背景
本文主要是记录在学习 Java - Zookeeper 过程中的一些知识点备忘!
20181228
1、Zookeeper是一个开源的分布式协调服务,其设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用
原语:操作系统或计算机网络用户范畴,是由若干条指令组成的,用于完成一定功能的一个过程;具有不可分割性,即原语的执行必须是连续的,在执行过程中不允许被中断
Zookeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能
Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心。服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到ZK中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容和数据
2、ZK作为Dubbo注册中心,主要提供以下几个功能:
- 集群管理:容错、负载均衡
- 配置文件的集中管理
- 集群的入口
为什么要使用奇数台服务器构成ZK集群?
所谓的ZK容错是指,当宕掉几个ZK服务器之后,剩下的个数必须大于宕掉的个数的话,整个ZK才依然可用!因此,对于2n和2n-1台数量的服务器的容忍度是一样的,即均是n-1;那么,何必再增加一个不必要的ZK服务器呢?
3、重要概念
- ZK本身就是一个分布式程序(只要半数以上节点存活,ZK就能正常服务)
- 为了保证高可用,最好以集群形态来部署ZK,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么ZK本身仍然是可用的
网友评论