Zookeeper应用之一:数据发布与订阅初体验
Zookeeper到底是什么?可以从Zookeeper提供的功能来理解。本篇小作文就是使用其提供的功能之一:数据发布与订阅。
需求:服务端开启多个实例提供服务,客户端使用服务。如果服务端某个服务下线或者新服务上线,客户端可感知并与客户端断开或者接连服务端。
分析:利用Zookeeper作为注册中心,服务端进行注册,客户端读取注册信息。
实现:
一、服务器端启动时自动将ip/port注册到Zookeeper
1、注册时点:服务端绑定端口后注册

2、注册具体实现:

3、验证:
启动两个服务端实例,查看Zookeeper节点信息(Zookeeper服务端启动,参考CentOS8系统上Zookeeper安装启动 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com))
1)未启动服务端实例前,Zookeeper节点信息

具体节点信息

2)启动一个服务127.0.0.1:8899,查看节点信息


3)启动一个服务127.0.0.1:8989,查看节点信息

二、客户端启动使用浏览器访问服务端时,自动捕获服务实例上下线地同时链接服务器端
1、仅初始两个服务:8899和8989


2、上线一个服务:127.0.0.1:8889



3、下线一个服务



以上是客户端结果验证,那么是如何实现的呢?
分析:客户端访问服务器端,重点是获得服务端的ip:port。如果没有Zookeeper注册中心提供数据的发布(此案例中服务端ip:port作为数据发布到Zookeeper相关节点),那么客户端可能就需要硬编码,如下:

一旦有新的服务实例上线或者某个服务下线,那么就得重新编写代码。如果是生产环境,服务由于某种未知原因下线,那么会直接影响生产运行。
客户端如何利用Zookeeper实现客户端订阅注册信息数据信息的呢?此案例订阅的事lf_provider节点下所有子节点的数据信息,具体实现如下:
1、链接Zookeeper服务

2、获取注册中心数据信息(ip:port 列表)

3、新建客户端实例链接所有地址信息建立客户端链接列表

4、实际业务逻辑中随机使用一个客户端链接

以上就是Zookeeper应用之一~数据发布与订阅,在实际业务中解决共享数据的集中管理及动态更新并动态获取数据。
在以上体验中,用到了Zookeeper提供的API及命令行,后续将分别介绍。
Zookeeper应用之一:数据发布与订阅初体验的更多相关文章
- ZooKeeper 典型应用场景-数据发布与订阅
ZooKeeper 是一个高可用的分布式数据管理与系统协调框架.基于对 Paxos 算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得 ZooKeeper 可以解决很多分 ...
- Zookeeper学习(八):Zookeeper的数据发布与订阅模式
http://blog.csdn.net/ZuoAnYinXiang/article/category/6104448 1.发布订阅的基本概念 1.发布订阅模式可以看成一对多的关系:多 ...
- OpenStack最新版本--Victoria发布亮点与初体验
前言 `OpenStack`是一个云操作系统,可控制整个数据中心内的大型计算,存储和网络资源池,所有资源均通过具有通用身份验证机制的`API`进行管理和配置. 还提供了一个仪表板,可让管理员进行控制, ...
- Dubbo基础一之实战初体验
本以为写这个小作文没什么难度的,可是好像并不是.前段时间重心放在驾考科目二,就想着小作文科二考过了再写也不是事,因为都实战过了.今天想着写却发现脑袋里啥都想不起来了,得翻项目和笔记回忆一下.所以还是那 ...
- SQLServer 中发布与订阅
在对数据库做迁移的时候,会有很多方法,用存储过程,job,也可以用开源工具kettle,那么今天这些天变接触到了一种新的方法,就是SqlServer中自带的发布与订阅. 首先说明一下数据复制的流程.如 ...
- 发布与订阅SQLServer
SQLServer 中发布与订阅 在对数据库做迁移的时候,会有很多方法,用存储过程,job,也可以用开源工具lettle,那么今天这些天变接触到了一种新的方法,就是SqlServer中自带的发布与订阅 ...
- (原)3.2 Zookeeper应用 - 数据的发布与订阅
本文为原创文章,转载请注明出处,谢谢 数据的发布与订阅 1.应用 服务端监听数据改变,客户端创建/更新节点数据,客户端提供数据,服务端处理 2.原理 客户端监控节点数据改变事件(例如配置信息,下图的c ...
- Zookeeper实现数据的发布和订阅
使用场景 当一个对象的改变,需要通知其他对象而且不知道要通知多少个对象,可以使用发布订阅模式 .在分布式中的应用有配置管理(Configuration Management) .集群管理 ...
- SQL 2012 发布与订阅实现数据同步 图解(解决 错误22022)
概念参见:https://msdn.microsoft.com/zh-cn/library/ms151170.aspx 推送订阅 对于推送订阅,发布服务器将更改传播到订阅服务器,而无需订阅服务器发出请 ...
随机推荐
- python+selenium 元素定位--iframe
1. 一般webdriver要操作页面元素需要在Top Window的状态下,如下: 2.当浏览器显示iframe时,用正常的元素定位是没有效果的,需要将页面装换到iframe下再对页面元素进行操作 ...
- 【爬虫】从零开始使用 Scrapy
一. 概述 最近有一个爬虫相关的需求,需要使用 scrapy 框架来爬取数据,所以学习了一下这个非常强大的爬虫框架,这里将自己的学习过程记录下来,希望对有同样需求的小伙伴提供一些帮助. 本文主要从下面 ...
- 【C】C语言大作业——学生学籍管理系统
文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...
- Android官方文档翻译 十六 4.Managing the Activity Lifecycle
Managing the Activity Lifecycle 管理activity的生命周期 Dependencies and prerequisites 依赖关系和先决条件 How to crea ...
- selenium - 弹出框死活定位不到
先要确定是不是alert,是才能用,不是的话肯定不能用. 有些弹出框是div层,这种跟平常定位方法一样 有些弹出框是嵌套的iframe层,这种切换iframe就可以了 有些弹出框比较坑,是嵌入的一个窗 ...
- 带你十天轻松搞定 Go 微服务系列(三)
序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务(本文) 产品服务 订单服务 支付服务 RPC 服务 Auth ...
- 字的研究(3)fontTools-TrueType轮廓坐标的获取以及基于TrueType的Glyph实例的构建
前言 本文主要介绍如果使用Python第三方库fontTools提取OpenType字体文件中的TrueType轮廓坐标以及如何构建基于TrueType的Glyph实例 TrueType轮廓坐标的获取 ...
- Hadoop支持LZO
0. 环境准备 maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)gcc-c++zlib-develautoconfautomakelibtool通过yum安装即可 yum ...
- Django之ajax(jquery)封装(包含 将 csrftoken 写入请求头方法)
由于支持问题,未使用 es6 语法 _ajax.js /** * 发起请求 * @param url 请求地址 * @param data 请求数据 { } json格式 * @param type ...
- jsp 中 include指令 用法, <%@ include file="..."%> 和 <jsp:include page="..." flush="true" />的区别?
原文链接https://blog.csdn.net/u012187452/article/details/51779052 1. 什么是jsp 文件? 个人理解. jsp 是一个容器,可以将我们编写 ...