Zookeeper在哪些具体应用场景中使用,其核心的ZAB协议又是如何运作的?

2026-05-22 17:110阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2918个文字,预计阅读时间需要12分钟。

Zookeeper应用场景:数据发布/订阅(配置中心)+ 常见需求:系统中需要一些通用的配置信息,如运行时的开关、前端展示的通知栏信息等。

Zookeeper应用场景 数据发布/订阅(配置中心)

我们平常的开发过程中,经常会碰到这样的需求:系统中需要一些通用的配置信息,如一些运行时的开关、前端需要展示的通知栏信息、数据库配置信息等等。这些需求通常都要求具备3个特性:

  • 数据量比较小
  • 数据内容在运行时会变化
  • 集群中的所有机器共享,数据一致

我们假设把这些数据存储在应用的内存中,那么数据共享是一个问题,数据变更的通知又是一个问题。

那我们使用Zookeeper怎么实现呢?

  1. 配置存储

我们可以先把数据存储在Zookeeper的一个节点上。如/app/database_config
2. 配置获取

应用启动时,首先会去前面存储的节点上去拿数据,并且在这个节点上注册一个数据变更的Watcher监听。一旦发送数据变化,集群中所有应用都能收到通知
3. 配置变更

我们需要修改的时候,就利用Zookeeper的修改内容接口对节点上的数据进行修改即可。Zookeeper会自动帮我们发送数据变更通知。

命名服务

命名服务是分布式系统中比较常见的一个场景。比如我们需要在创单的时候给这个订单生成一个全局唯一的订单号。如果是单体应用那么还比较好做,数据库就有自增ID,再拼上一些订单号前缀就可以了。但是如果是分布式环境下,就会麻烦一些。

那我们使用Zookeeper怎么实现呢?

  • 利用Zookeeper的顺序节点能够维护每个数据节点的顺序的特性,就可以做到。

Master选举

我们有时候有这样的一个需求,在集群环境下,只需要一个应用来处理某个耗时资源。

阅读全文

本文共计2918个文字,预计阅读时间需要12分钟。

Zookeeper应用场景:数据发布/订阅(配置中心)+ 常见需求:系统中需要一些通用的配置信息,如运行时的开关、前端展示的通知栏信息等。

Zookeeper应用场景 数据发布/订阅(配置中心)

我们平常的开发过程中,经常会碰到这样的需求:系统中需要一些通用的配置信息,如一些运行时的开关、前端需要展示的通知栏信息、数据库配置信息等等。这些需求通常都要求具备3个特性:

  • 数据量比较小
  • 数据内容在运行时会变化
  • 集群中的所有机器共享,数据一致

我们假设把这些数据存储在应用的内存中,那么数据共享是一个问题,数据变更的通知又是一个问题。

那我们使用Zookeeper怎么实现呢?

  1. 配置存储

我们可以先把数据存储在Zookeeper的一个节点上。如/app/database_config
2. 配置获取

应用启动时,首先会去前面存储的节点上去拿数据,并且在这个节点上注册一个数据变更的Watcher监听。一旦发送数据变化,集群中所有应用都能收到通知
3. 配置变更

我们需要修改的时候,就利用Zookeeper的修改内容接口对节点上的数据进行修改即可。Zookeeper会自动帮我们发送数据变更通知。

命名服务

命名服务是分布式系统中比较常见的一个场景。比如我们需要在创单的时候给这个订单生成一个全局唯一的订单号。如果是单体应用那么还比较好做,数据库就有自增ID,再拼上一些订单号前缀就可以了。但是如果是分布式环境下,就会麻烦一些。

那我们使用Zookeeper怎么实现呢?

  • 利用Zookeeper的顺序节点能够维护每个数据节点的顺序的特性,就可以做到。

Master选举

我们有时候有这样的一个需求,在集群环境下,只需要一个应用来处理某个耗时资源。

阅读全文