ZooKeeper场景实践:(1)准备工作

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ZooKeeper是一个高可用的分布式数据管理与系统协调框架。保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。 有人认为ZooKeeper之于分布式的意义正如同lex/yacc之于编译的意义。我们知道lex/yacc是一套强大的语法编译工具。使用lex/yacc可以很轻松的完成许多语法规则的编写。同样道理,Zookee

ZooKeeper是一个高可用的分布式数据管理与系统协调框架。保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。

有人认为ZooKeeper之于分布式的意义正如同lex/yacc之于编译的意义。我们知道lex/yacc是一套强大的语法编译工具。使用lex/yacc可以很轻松的完成许多语法规则的编写。同样道理,Zookeeper作为一个分布式的数据管理和协调框架,没有它依然可以做分布式,但是有了它,你的分布式会更轻松。
本系列文章主要是从学习的角度对Zookeeper常用的场景进行实践,从而更好的理解和掌握Zookeeper。

下面是学习过程中收集到的一些资料

ZooKeeper典型应用场景
ZooKeeper入门到精通视频百度云盘地址,(个人认为要去掉“到精通”三个字,入门介绍还是不错的)。
Zookeeper安装和C语言API库指南
ZooKeeper常用命令

如果之前没有接触过ZooKeeper的话,建议还是先看看上面这些博客,有了大致的了解然后在来看这个系列的学习笔记。

网上的一些实践的代码通常都是Java的,本系列则是利用Zookeeper的C语言API完成的。

ZooKeeper典型应用场景中介绍了以下几种场景:

  • 数据发布与订阅(配置中心)
  • 负载均衡
  • 命名服务(Naming Service)
  • 分布式通知/协调
  • 集群管理与Master选举
  • 分布式锁
  • 分布式队列

我们的目标就是将上面的场景都一一实践一遍。首先说明,涉及到的代码都是在学习Zookeeper的过程完成的,很多都非常简单,我希望能够通过一两百行的代码来简单而又直接的体会Zookeeper的使用。如果想要深入实现上面说到的每个场景,恐怕还有许多欠考虑的地方。

所有的代码你都可以到我的github上面下载。点击这里.不正之处,敬请谅解。


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
存储 Linux 开发者
Zookeeper基本原理与运用场景
Zookeeper基本原理与运用场景一、什么是Zookeeper? zookeeper是一个分布式的一致性协调服务。 换句话说,也可以把zookeeper看成一个小型的分布式文件系统。但是和FastDFS不同,zookeeper只适合用来存储一些小型的数据或者配置信息。
1063 0
|
Java
|
关系型数据库 MySQL C++
ZooKeeper场景实践:集中式配置管理
ZooKeeper场景实践:集中式配置管理http://www.bieryun.com/1742.html 1. 基本介绍 在分布式的环境中,可能会有多个对等的程序读取同样的配置文件,程序可以部署在多台机器上,如果配置采用文件的话,则需要为部署该程序的机器也部署一个配置文件,一旦要修改配置的时候就会非常麻烦,需要修改多个配置文件,而且容易产生不一致。
1420 0
|
Web App开发 存储 分布式计算
zookeeper基本原理及适用场景 转:http://blog.chinaunix.net/uid-26748613-id-4536290.html
1.1 zookeeper简介        Zookeeper 是 Hadoop 生态系统中的协同实现,是Hadoop集群管理的一个必不可少的模块,它主要来控制集群中的数据,如它管理Hadoop集群中的NameNode,还有Hbase中Master Election、Server之间状态同步等。Zookeeper 实际上是 Google 的 Chubby 一个开源的实现。Zookeepe
1724 0
|
关系型数据库 MySQL 数据库
ZooKeeper场景实践:(2)集中式配置管理
1. 基本介绍 在分布式的环境中,可能会有多个对等的程序读取同样的配置文件,程序可以部署在多台机器上,如果配置采用文件的话,则需要为部署该程序的机器也部署一个配置文件,一旦要修改配置的时候就会非常麻烦,需要修改多个配置文件,而且容易产生不一致。 集中式配置管理的思路是,将配置数据集中发布到ZooKeeper的节点上,供订阅者动态获取数据。实现配置的集中式管理和动态更
1814 0
|
监控 Dubbo 应用服务中间件
Zookeeper场景实践:(4)命名服务
1.基本介绍 命名服务是指通过指定的名字来获取资源或者服务的地址,提供者的信息。利用Zookeeper很容易创建一个全局的路径,而这个路径就可以作为一个名字,它可以指向集群中的集群,提供的服务的地址,远程对象等。简单来说使用Zookeeper做命名服务就是用路径作为名字,路径上的数据就是其名字指向的实体。 阿里巴巴集团开源的分布式服务框架Dubbo中使用ZooKee
1959 0
|
监控 调度
Zookeeper场景实践:(5)分布式通知/协调
1.基本介绍 通知/协调机制通常有两种方式。 系统调度模式:操作人员发送通知实际是通过控制台改变某个节点的状态,然后Zookeeper将这些变化发送给注册了这个节点的Watcher的所有客户端。 工作汇报模式:这个情况是每个工作进程都在某个目录下创建一个临时节点,并携带工作的进度数据。这样汇总的进程可以监控目录子节点的变化获得工作进度的实时的全局情况。 总的
1849 0
|
监控
ZooKeeper场景实践:(7) 分布式锁
1.基本介绍 分布式锁是控制分布式系统之间同步访问共享资源的一种方式,需要互斥来防止彼此干扰来保证一致性。利用Zookeeper的强一致性可以完成锁服务。Zookeeper的官方文档是列举了两种锁,独占锁和共享锁。独占锁保证任何时候都只有一个进程能或者资源的读写权限。共享锁可以同时有多个读,但是同一时刻最多只能有一个写,读和写是互斥的。 2.场景分析 我们
1433 0
|
安全 C++
Zookeeper场景实践:(8) 分布式队列
1.基本介绍 按照ZooKeeper典型应用场景一览里的说法,分布式队列有两种,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。 第二种队列可以先建立一个/queue,赋值为n,表达队列的大小。然后每个队列成员加入时,就判断是否达到队列要求的大小,如果是可以进行下一步动作,否则继续等待队列成员的加入。比较典型的情况是,当一个大的任务可能需要
1236 0
|
14天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
30 2