统一配置中心实现系列-Zookeeper和Ignite

目录

一、前言

二、具体实现

1、基于Zookeeper的实现

2、基于Apache Ignite的实现(分布式缓存)

3、方案对比

三、惯例


一、前言

之前的文章我们介绍了基于定时任务的统一配置中心实现,本文将介绍另外两种实现,分别是基于Zookeeper的实现和基于Ignite的实现。

二、具体实现

1、基于Zookeeper的实现

本文并不打算讲解zookeeper的原理或者使用,只是提供一种基于zookeeper的实现方案和思路。

众所周知,Zookeeper的客户端可以读取其对应节点下的数据(任意字符串),同时能够对该节点进行监听,当存在数据变更的时候,其能够通知到所有的客户端。且Zookeeper本身就支持集群和数据持久化,因此我们就可以利用这些特性实现基于Zookeeper的统一配置中心。具体实现如下:

  1. 应用集群的每个节点启动的时候直接连接Zookeeper集群,并读取config节点下的数据,同时对config节点进行监听

  2. 管理人员直接通过客户端修改(增删改)Zookeeper集群中config的数据。修改之后Zookeeper能够自动将数据同步到file中持久化。

  3. 配置数据修改之后Zookeeper会通知所有的应用集群节点。节点就能够得到配置数据的最新数据。

2、基于Apache Ignite的实现(分布式缓存)

根据名称就可以指定Ignite是属于Apache旗下的。其是一个轻量级的内存分布式数据库。其官方称呼是”内存计算平台“,这里之所有说是内存分布式数据库,是因为我们这里刚好需要使用其这个分布式数据库的功能。

说到内存分布式数据库,大家都应该会想起大名鼎鼎的Redis,那么这个Ignite和Redis有什么区别呢?其主要区别就在于其轻量级上。使用它只需要依赖几个jar包,然后就可以很轻松的将其引入到我们的应用程序中。而不需要像Redis那样需要单独部署和维护。除了分布式内存数据库的功能外,它还支持集群化(无Leader节点)、分布式消息、分布式事件等,其主要功能组件如下(不要问我这些都是啥玩意,楼主也头疼,具体请查阅官网学习https://ignite.apache.org):

  1. 高级的集群化

  2. 数据网格(JCache)

  3. 流计算和CEP

  4. 计算网格

  5. 服务网格

  6. Ignite文件系统

  7. 分布式数据结构

  8. 分布式消息

  9. 分布式事件

  10. Hadoop加速器

  11. Spark共享RDD

回归正题,使用Ignite我们可以这样实现统一配置中心功能:

  1. 每个应用程序引入Ignite,配置内存大小(存储配置文件一般不需要多大)。

  2. 设置Ignite为复制集,指定持久化文件

  3. 每个应用集群节点读取配置的时候直接从本地的Ignite中读取即可

  4. 修改配置数据,我们只需要随便选择一台应用集群,对其中的配置数据就行修改即可。Ignite能够自动的将数据同步到其他节点,保证所有节点数据最终一致。

图中:红线表示Ignite集群之间的同步;绿线表示应用程序节点从Ignite分布式数据库中读取数据(从其中的本地节点读取即可)。

3、方案对比

Zookeeper方案:使用比较简单,毕竟大家对Zookeeper应该比较熟悉。但是需要搭建维护Zookeeper集群。

Ignite:因为不熟悉有入门成本,但是使用很简单,无需额外搭建任何三方集群。是一个去中心化的实现。

所以,推荐Ignite方案。

三、惯例

如果你对本文有任何疑问或者高见,欢迎添加公众号共同交流探讨(添加公众号可以获得”Java高级架构“上10G的视频和图文资料哦)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值