分类 标签 存档 社区 博客 友链 GitHub 订阅 搜索

Java - Zookeeper

371 浏览

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 本身仍然是可用的

评论  
留下你的脚步
推荐阅读