Zookeeper命名服务

前言

命名服务,简单来说就是对某一资源命名,使其可以通过路径名称对资源唯一定位,zookeeper节点具有唯一性,可以保证ZNode在分布式系统中唯一。

应用方向

1.提供类似JNDI的功能

利用zookeeper中的树形分层结构,可以把系统中的各种服务的名称,地址以及目录信息存放在zookeeper中,需要的时候去zookeeper中去读取。

2.利用zookeeper中的顺序节点的特性,制作分布式的序列号生成器(ID生成器)

在往数据库中插入数据,通常是要有一个ID号,在单机环境下,可以利用数据库的主键自动生成id号,但是这种在分布式环境下就无法使用了,可以使用UUID,但是UUID有一个缺点,就是没有什么规律很难理解。使用zookeeper的命名服务可以生成有顺序的容易理解的,支持分布式的编号。

例子

1.命名服务之统一的资源定位获取

我利用zookeeper的注册中心功能,将我的zero服务注册到zookeeper,默认的服务注册中心根路径是/services,zero是我的服务名称,zero子节点是具体的实例,这个实例节点上存储的是具体的服务数据,如下图所示,只要约定好路径,可以在任何服务下获取到这个路径资源的信息。

Zookeeper命名服务

Talk is cheap,show me the code...

Zookeeper命名服务

控制台输出,就获取到了这个资源的数据信息:

Zookeeper命名服务

2.命名服务之分布式的序列号生成器

直接上代码:

Zookeeper命名服务

结果:

Zookeeper命名服务


分享到:


相關文章: