• ZooKeeper 基本概念并介绍RPC中Netty和Zookeeper的使用


    前言

    ZooKeeper 是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。Zookeeper提供一个类似Linux文件系统的属性结构,每个节点可存储少量的内存文件,并提供每个节点的监控与通知机制。本文介绍一下Zookeeper基本概念以及介绍一下通过Netty 结合 Zookeeper 的来体验一下Zookeeper 的使用流程。

    1. ZooKeeper 基本概念

    Session:

    表示某个系统和ZooKeeper 之间的连接会话,连接后,此系统需要周期的向 ZooKeeper 发送心跳信息。如果 ZooKeeper 在特定时间内收不到心跳,就会认为这个系统已经死掉了, Session 就会结束。

    会话延续能力,方便在断开时间不长的时候找回原来的会话。

    znode:

    树形结构中的每个节点叫做znode, 按是否可永久保存可以分为永久的znode(除非主动删除,否则一直存在),临时的znode(Session结束就会删除)

    按是否唯一可以分为唯一节点和顺序znode。唯一节点再多个客户端同时创建时,只有一个可创建成功,其他均失败,创建的节点名称是和自己创建时指定的名称完全一样。顺序节点创建出的节点名在指定的名称之后带有10位10进制数的序号。多个客户端创建同一名称的节点时,都能创建成功,只是序号不同。

    Watch:

    某个客户系统(例如Batch Job)可以监控znode, znode节点的变化(删除,修改数据等)都可以通知Batch Job, 这样Batch Job可以采取相应的动作,例如争抢着去创建节点。

    这个Watch是一次性的,即只能使用一次。也就是说,zookeeper通知过进程B之后,Watch就被用掉了,以后就不会再通知了。

    如果进程B还需要被通知怎么办?很简单,那就在foo节点上再放一个新的Watch即可。如此这般下去,就可以保证一直被通知了。

    2. 使用 Netty 将服务端提供的服务存根注册到 ZooKeeper 上

    首先思考一下需要做那些事情:

    1. 服务端定义存根,开启Netty服务并基于Netty将存根注册到Zookeeper 上的临时节点上。 并和Zookeeper 保持Session 心跳
    2. 客户端watch Zookeeper 上的服务器列表,在服务端新增 删除服务时 进行获取服务端的可服务列表,进行访问。
    3. 客户端访问服务端地址,服务端Netty接收,通过反射获取结果返回给客户端。
    项目案例:

    案例

  • 相关阅读:
    springboot之Date格式化
    如何在vue的dialog弹窗中显示echarts图表,并且点击第一次就能显示,解决不会出现点击一次,不出现图表,第二次才出现图表的问题
    Vue中使用eldialog集成echarts
    VUE+ElementUi学习记录(一)tabs切换导致页面比例不自适应,包含echarts
    elementUI 使用echarts插件
    使用vue结合echarts封装成一个可复用Vue组件
    自定义Dataset Learner
    论文解读(MCGC)《Multiview Contrastive Graph Clustering》 Learner
    bat一直读取不了brconfig.json配置文件
    UOS系统UDP通信时绑定不了端口
  • 原文地址:https://www.cnblogs.com/wei57960/p/12601463.html
Copyright © 2020-2023  润新知