统一命名服务
命名服务也是分布式系统中比较常见的一类场景。在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务地址,进程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框架中的服务地址列表。通过调用Zookeeper提供的创建节点的 API,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。接下来,我们介绍统一命名服务的主要应用场景。
阿里开源的分布式服务框架Dubbo中使用ZooKeeper来作为其命名服务,维护全局的服务地址列表,点击这里查看Dubbo开源项目。在Dubbo实现中:服务提供者在启动的时候,向ZooKeeper上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就完成了服务的发布。服务消费者启动的时候,订阅
/dubbo/${serviceName}/providers
目录下的提供者URL地址,并向/dubbo/${serviceName}/consumers
目录下写入自己的URL地址。