永康住房城乡建设局网站wordpress pc 客户端

pingmian/2025/10/14 7:28:38/文章来源:
永康住房城乡建设局网站,wordpress pc 客户端,网站备案期间做什么,扬中市人才网官网文章目录 前言声明前置知识服务注册和发现Zookeeper 工作原理实现过程注册中心服务注册服务发现 总结 前言 无论是采用SOA还是微服务架构#xff0c;都需要使用服务注册和服务发现组件。我刚开始接触 Dubbo 时一直对服务注册/发现以及 Zookeeper 的作用感到困惑#xff0c;现… 文章目录 前言声明前置知识服务注册和发现Zookeeper 工作原理实现过程注册中心服务注册服务发现 总结 前言 无论是采用SOA还是微服务架构都需要使用服务注册和服务发现组件。我刚开始接触 Dubbo 时一直对服务注册/发现以及 Zookeeper 的作用感到困惑现在看来是因为对分布式系统的理解不够深入对 Dubbo 和 Zookeeper 的工作原理不够清楚。 本文将基于 Zookeeper 实现服务注册和服务发现功能如果跟我一样有同样的困惑希望可以通过本文了解其他组件如何使用 Zookeeper 作为注册中心的工作原理。 声明 文章中所提供的代码仅供参考旨在帮助缺乏基础知识的开发人员更好地理解服务注册和服务发现的概念。请注意这些代码并不适用于实际应用中。 前置知识 服务注册和发现 在SOA或微服务架构中由于存在大量的服务以及可能的相互调用为了更有效地管理这些服务我们通常需要引入一个统一的地方即注册中心来集中管理它们而注册中心最基本的功能就是服务注册/发现。 服务注册将该服务实例的元数据如IP地址、端口号、健康状态等注册到注册中心这样其他服务或客户端可以发现和使用该服务。服务发现当一个服务需要调用别的服务时使用静态配置是不可行的这个时候可以去注册中心获取可用的服务实例并调用。 Zookeeper Zookeeper 是一个传统的分布式协调服务它更多的被用来作为一个协调器使用比如来协调管理 Hadoop 集群、协调 Kafka 的 leader 选举等。 为什么会有组件将其视为一个注册中心使用我想有几个原因 Zookeeper 在分布式系统中具有更强的一致性和可靠性可以确保各个服务的注册信息保持一致。Zookeeper 使用内存存储数据具有很高的读写性能。这对于注册中心来说非常关键因为它需要快速地响应客户端的请求。Zookeeper 的 Watcher 机制可以让客户端监听指定节点的变化。当某个节点注册中心发生变化时Zookeeper 可以通知其他服务实现实时更新。 工作原理 以下图为例可以看到 Dubbo 是如何使用 Zookeeper 实现服务注册/发现的。 服务提供者向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址。服务消费者订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址。 这里的目录就是 Zookeeper 的数据结构原理非常简单本质上就是服务提供者和消费者按照约定在 Zookeeper 上读写数据同时借用其 Watcher 机制、临时节点和可靠性等特性高效的实现以下功能 当提供者服务出现断电等异常停机时注册中心能自动删除提供者信息。当注册中心重启时能自动恢复注册数据以及订阅请求。 实现过程 注册中心 下面通过 Zookeeper 的 Java API 实现一个只包含服务注册/发现的注册中心代码如下 public class RegistrationCenter {// 连接信息private String connectString 192.168.10.11:2181,192.168.10.11:2182,192.168.10.11:2183;// 超时时间private int sessionTimeOut 30000;private final String ROOT_PATH /servers;private ZooKeeper client;public RegistrationCenter() {this(null);}public RegistrationCenter(ConsumerListString consumer) {try {getConnection(null consumer ? null : watchedEvent - {//监听服务器地址的上下线if (watchedEvent.getType() Watcher.Event.EventType.NodeChildrenChanged) {try {consumer.accept(subServers());} catch (Exception e) {e.printStackTrace();}}});Stat stat client.exists(ROOT_PATH, false);if (stat null) {//创建根节点client.create(ROOT_PATH, ROOT_PATH.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);}} catch (Exception e) {e.printStackTrace();}}/*** param serverName 将服务器注册到zk集群时所需的服务名称* param metadata 服务元数据* throws Exception*/public void doRegister(String serverName, Metadata metadata) throws Exception {/*** ZooDefs.Ids.OPEN_ACL_UNSAFE: 此权限表示允许所有人访问该节点服务器* CreateMode.EPHEMERAL_SEQUENTIAL: 由于服务器是动态上下线的上线后存在下线后不存在所以是临时节点* 而服务器一般都是有序号的所以是临时、有序的节点.*/String node client.create(ROOT_PATH / serverName, metadata.toString().getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);System.out.println(serverName 已经上线);}/*** 发现/订阅服务*/public ListString subServers() throws InterruptedException, KeeperException {ListString zkChildren client.getChildren(ROOT_PATH, true);ListString servers new ArrayList();zkChildren.forEach(node - {//拼接服务完整信息try {byte[] data client.getData(ROOT_PATH / node, false, null);servers.add(new String(data));} catch (Exception e) {e.printStackTrace();}});return servers;}private void getConnection(Watcher watcher) throws IOException {this.client new ZooKeeper(connectString, sessionTimeOut, watcher);}/*** 服务元数据*/public static class Metadata {public Metadata() {}public Metadata(String ip, int port) {this.ip ip;this.port port;}private String ip;private int port;public String getIp() {return ip;}public void setIp(String ip) {this.ip ip;}public int getPort() {return port;}public void setPort(int port) {this.port port;}Overridepublic String toString() {return { ip ip \ , port port };}} }该类中两个核心方法doRegister()、subServers() 服务注册和订阅。 doRegister()主要是往 Zookeeper 中创建了一个临时节点数据临时节点的优势就是当服务出现断电等异常停机时节点会自动删除。subServers()则是去 Zookeeper 读取了所有服务提供者的信息并且监听了节点状态当节点发生创建、删除、更新等事件时重新获取服务者的信息做到数据实时更新。 至此一个简单的注册中心就完成了当然如果要实现一个成熟的注册中心还要考虑负载均衡、高可用性和容错、服务治理和路由控制等功能这里先不展开。 服务注册 当有了注册中心服务提供者就可以调用 doRegister() 进行注册代码如下 public class ProviderServer {public static void main(String[] args) throws Exception {RegistrationCenter registrationCenter new RegistrationCenter();registrationCenter.doRegister(provider, new RegistrationCenter.Metadata(127.0.0.1, 8080));Thread.sleep(Long.MAX_VALUE);} } 服务发现 同样服务消费者可以调用 subServers() 发现服务提供者同时当服务提供者发生变化时会通知到消费者。代码如下 public class ConsumerServer {public static void main(String[] args) throws Exception {RegistrationCenter registrationCenter new RegistrationCenter(newServers - {System.out.println(服务更新了...newServers);});ListString servers registrationCenter.subServers();System.out.println(servers);Thread.sleep(Long.MAX_VALUE);} } 总结 服务注册和服务发现功能是为了解决分布式系统中的服务管理和通信问题而设计的经过不断的发展与负载均衡、健康监测、服务治理和路由控制等功能完善成为一个注册中心。服务注册和服务发现有助于实现系统的弹性和可扩展性因为新的服务实例可以动态地加入系统而无需手动配置和修改已有的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做搜索引擎优化网站费用云南设计网

引言 在C语言中,我们用结构体来描述一个复杂的对象,这个对象可能包括许多的成员,如用结构体描述一个学生的成绩,或者描述一个日期等。 struct Date {int _year;int _month;int _day; }; 如上是一个描述日期的结构体定义&#x…

网站做多少分辨率品牌网页设计图片

先看效果是否可以满足你们,如果可以满足你只要一步一步照着做绝对没有错。 本人技术不佳,研究了一整天,全网的大佬们写的博客看的晕头转向,避免大伙再走弯路,跟着我以下步骤一点一点来绝对可以实现。 最终效果图&#…

个人网站制作网站建设公司网站建设公司

作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的…

南昌做网站的公司哪家好wordpress私信功能

lsblk查看分区 Linux分区 挂载的经典案例 1. 虚拟机增加磁盘 点击这里,看我的这篇文章操作 添加之后,需要重启系统,不重启在系统里看不到新硬盘哦 出来了,但还没有分区 2. 分区 还没有格式化 3. 格式化磁盘 4. 挂载 5. 卸载…

做网站客户拖着不验收电商设计网站哪个好

Python第二十四课:Pandas库(四)点击上方“蓝字”,关注我们.不知不觉,我们已经跨越了千难万险,从零开始,一步步揭开了Python神秘的面纱。学到至今,回过头,才晓得自己在不知不觉已经学会了如此多的…

漯河市万金镇网站建设广州网站设计易企建站

Android Studio 代码模板插件 背景 可以跳过背景和简述,从模板插件实现开始看. 开发新页面时,原先需要写一堆模板代码。比如用Databinding写列表结构的页面,需要手写以下文件: XxActivity.ktXxFragment.ktXxViewModel.ktXxListA…

网站建设到本地浙江省湖州艺术与设计学校官网

bark_tokenize_input函数 bark是没有语言控制选项的,但是官方的版本无法运行中文bark_tokenize_input会调用bert_tokenize函数,bark_tokenize_input函数对中文分词失效,也就是导致不支持中文的原因。 void bark_tokenize_input(struct bark_…

做网站 简单外包wordpress系统

分类 名称 类比 说明压缩工具 RAR for Linux WinRAR Linux中压缩解压RAR格式文件的工具联络聊天 EVA QQ 一个界面、使用 类似QQ的聊天工具。MP3 播放 XMMS WinAmp Linux中MP3播放器下载工具 Downloader4X FlashGet Linux中的多线程下载利器流媒体播放 RealPlayer 10 RealPlaye…

做家装的网站有什么不同苏州餐饮 网站建设

任务 设计8路节日彩灯控制器,要求在Protues中设计接口电路图,并编程实现节日彩灯闪烁方式的控制: 通过P1.0到P1.2来控制3个按键。3个按键分别对应3种彩灯闪烁方式。彩灯闪烁方式分别为:从上往下的循环、从下往上以及从中间向两边…

湖北建设执业资格注册中心网站网站的通知栏一般用什么控件做

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、选择控制方式-程控方式-RS2324、代码编写 4、熟悉协议-SCPI协议5、测试实验-测试指令(1)硬件连接(…

潞城网站建设公司seo网络优化师招聘

Google身份验证器Google Authenticator是谷歌推出的一款基于时间与哈希的一次性密码算法的两步验证软件令牌,此软件用于Google的认证服务。此项服务所使用的算法已列于RFC 6238和RFC 4226中。谷歌验证器上的动态密码按照时间或使用次数不断动态变化(默认…

北京朝阳做网站wordpress 中文插件下载

需求描述对于数据分析人员来说,工作的基础是数据,没有数据分析就无从谈起,即巧妇难为无米之炊。#数据库# #数据迁移# #Oracle# 然而,数据分析往往在实验环境或者准生产环境中开展,而数据分布在生产环境,因此…

seo网站优化知识安阳做一个网站多少钱

深度学习包含深度迁移学习,它们都利用了深层神经网络(Deep Neural Network,DNN)来处理数据,并从中学习特征。但是,它们也有一些区别。 深度学习是一种机器学习方法,它通过多层神经网络来自动学…

制作网站制作网站建设的如何把网站能搜到

键盘和鼠标是与计算机交互的重要外围设备。有些人可能会争辩说,你只需要这些设备中的一个,但事实上,只使用其中一个设备的电脑可能非常困难。但是,如果你的鼠标或笔记本电脑的触控板突然停止工作,而你无法修复它或无法使用备用鼠标,该怎么办? 在这种情况下,你可以使用…

隆昌市住房和城乡建设厅网站网站设计是用ps做图吗

原文链接: go-zero 的自适应熔断器 上篇文章我们介绍了微服务的限流,详细分析了计数器限流和令牌桶限流算法,这篇文章来说说熔断。 熔断和限流还不太一样,限流是控制请求速率,只要还能承受,那么都会处理&…

dw怎么做网站珠海网站建设方案开发

(请先看置顶博文)本博打开方式,请详读_liO_Oil的博客-CSDN博客_怎么把androidstudio卸载干净 题目大意:王老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。例如:…

北京最大做网站的公司万全孔家庄做网站

深度剖析:六大虚拟DOM库的奥秘与应用场景 前言 虚拟DOM(Document Object Model)是用于表示和操作HTML文档的抽象数据结构。虚拟DOM库是构建用户界面的重要工具,它们提供了高效的更新机制、组件化开发等功能,使开发者…

福田设计网站华为手机软文范文300

大家好,我是等天黑。相信很多朋友应该注意到了,我最近发了很多系统设计的文章。是的,到目前为止,已经发了有 7 篇文章。这些内容主要翻译自 Alex Xu 的 《System Design Interview》,有卷一和卷二两本。System Design …

群晖nas做网站网站空间是先备案后买

智能优化算法应用:基于人工蜂群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工蜂群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工蜂群算法4.实验参数设定5.算法结果6.…