• Zookeeper使用场景


    参考:

    https://blog.csdn.net/liuchang19950703/article/details/111626305

    简介

    1,以下图片,绿色部分都是需要程序员实现的,一般是监控系统

    2,ZK是一个分布式协调服务,但是在底层只提供了2个功能:

    1,管理(存储,读取)用户程序提交的数据;
    
    2,为用户程序提供数据节点监听服务;

    1,配置中心

    zk 可以通过“发布/订阅模型”实现对集群配置文件的管理与维护。“发布/订阅模型”分为推模式(Push)与拉模式(Pull)。zk 的“发布/订阅模型”采用的是推拉相结合的模式。

    2,命名服务

    通过利用zk 中节点路径不可重复的特点来实现命名服务的。当然,也可以配带上顺序节点的有序性来体现唯一标识的顺序性。

    3,服务注册中心

    主要是实现消费者与提供者的解耦合,防止提供者的单点问题,实现对提供者的负载均衡。

    基本步骤:

    1,比如消费者想要调用service1,就先从ZK中把注册表(即Service1服务节点下所有主机列表)读到,然后内部根据负载均衡策略选一个主机调用服务
    2,此时ZK提供的功能就是把服务提供者注册到ZK里面,然后消费者通过读取的注册表,负载均衡调用服务,即提供者写,调用者读。Dubbo就是这样实现的。

    添加服务的状态节点:

    为主机定义临时节点

    服务降级:

    如果一个服务提供者全挂了怎么办?服务降级,降级点很多,例如消费者本身可以这么处理,提供者不行,用本地代码返回一些信息,增强用户体验。

    4,集群管理

    能够随时获取到当前集群中各个主机的运行时状态、当前集群中主机的存活状况等信息。通过 zk 可以实现对集群的随时监控。

    解释:

    监控系统启动的时候先在ZK中注册/clusterManager根节点,并注册子节点列表变更Watcher监听

    被监控集群的主机一启动,就在/clusterManager根节点下创建相应的临时子节点(临时节点好处就是被监听的服务器如果挂了,会话就没了,临时节点就没了)

    步骤:

    Step1:监控系统在启动时会在 zk 中创建一个根节点,例如/clusterManager
    Step2:当集群主机应用启动后,就会自动在 zk 的监控系统根节点下创建一个对应的临时子节点,并将自己的运行状态定时写入到该临时节点,或根节点的数据内容中,例如主机当前正在处理的连接请求有多少,当前主机的权重等。写入到这两个节点的效果是不同的:
    写到临时节点:临时节点消失后,从监控系统中根本就查找不到任何该临时节点对应主机的信息。
    写入到根节点:可以获取到所有曾经存在过的节点信息。
    Step3:监控系统在根节点/clusterManager 上注册一个 watcher 监听。一旦集群中增减主机,就会引发子节点数量变更的 watcher 事件。然后 zk 会将事件推送给监控系统
    Step4:监控系统在接收到 zk 发送的事件后,调用相应的 watcher 对象回调,将变化情况显示到监控平台。
    Step5:若集群主机状态信息是写入到根节点数据内容的,那么监控系统需要在根节点上再注册一个数据内容变更的 watcher 监听,以实时获取到集群主机的状态数据。
    Step6:若集群主机状态信息是写入到对应临时节点的,那么监控系统需要在每个主机临时节点上注册数据内容变更的 watcher 监听,以实时获取到集群主机的状态数据。

    5,分布式同步(难)

    6,master选举(难)

  • 相关阅读:
    vue全家桶
    uniapp——如何配置scss和uview ui框架
    uniapp——自定义input清除事件
    响应式页面中的echart
    elementui 切换下拉框值,改变验证规则prop的表单项是否为必填项
    小程序view标签内容 文本过长,自动换行的问题
    vue 中使用图片查看器插件Viewer.js
    跳转不同导航,滚动条滚回初始
    vue项目中回显当前时间的农历时间
    移动端点击导航滑动展示全部选项,以为跳转页面定位到相应位置
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/16549915.html
Copyright © 2020-2023  润新知