zookeeper命名服务

zookeeper概念

zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,底层组成单元是znode,对于zookeeper来说,所有的功能都是基于znode来实现的,因此有万物皆节点的说法。

zookeeper命名服务

zookeeper的命名服务功能主要是根据指定名字来获取资源或服务的地址,提供者等信息,利用其znode的特点和watcher机制,将其作为动态注册和获取服务信息的配置中心,统一管理服务名称和其对应的服务器列表信息,我们能够近乎实时地感知到后端服务器的状态(上线、下线、宕机)。
举例来说,B服务部署在六台服务器上,存在六个完全不同的ip地址,同时B服务本身提供一个dubbo接口对外,此时有个A服务需要调用此接口,如果提供某一台服务器的ip,则存在该服务器宕机情况下接口不可用的情况,再切换ip就会影响服务的正常使用。此时,可以使用zookeeper作为注册中心,B服务的六台服务在指定znode下创建子节点,而A服务调用之前先通过指定znode的路径获取B服务的任意子节点中的ip信息,然后通过ip访问。同时zookeeper动态维护这部分节点,定时利用心跳请求检查B服务的服务器状态,一旦发现某服务器无反馈,就删除节点,防止被A服务获取调用,整个流程如下:
流程图

zookeeper命名服务作用

负载均衡

轮询服务注册表,尽可能将服务请求均匀分配到所有注册有效的服务器上。

健康检查

动态维护服务地址注册表,利用心跳请求实时监控注册服务状态,删除无效服务节点,维护有效的地址注册表。

调用监控

通过统计注册表各个子节点被访问次数来监控服务调用情况。

动态路由

可以通过配置注册表参数,在不修改服务代码的情况下,动态指定服务访问的机器。

动态配置

注册表的子节点可以作为单服务器的配置中心,可以直接修改节点配置而不是修改代码的方式,动态修改服务运行的部分参数。

posted @ 2019-03-23 22:45  balvender  阅读(4541)  评论(1编辑  收藏  举报