zoukankan      html  css  js  c++  java
  • 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命名服务作用

    负载均衡

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

    健康检查

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

    调用监控

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

    动态路由

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

    动态配置

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

  • 相关阅读:
    解决问题,别扩展问题
    Hystrix 配置参数全解析
    请求合并哪家强
    在Spring-Boot中实现通用Auth认证的几种方式
    Java高级特性之泛型
    一键部署进化史
    JavaScript Alert 函数执行顺序问题
    新版的 Springsecurity request.getRequestDispatcher).forward(request, response); 404 问题,已解决
    maridb 10.3 主从复制,待机情况下从库 cpu 占用率高的处理方法
    springboot 2.0 mariadb hikari-cp连接池
  • 原文地址:https://www.cnblogs.com/lixuan1998/p/10586077.html
Copyright © 2011-2022 走看看