热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dubbo学习笔记2:使用Zookeeper搭建服务治理中心

Zookeeper是ApacheHadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,推荐生成环境使用。,下面结合上图介绍Zoo

Zookeeper是Apache Hadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,推荐生成环境使用。

下面结合上图介绍Zookeeper在服务注册与发现里面的应用:

如上图整体Zookeeper的树根Root是Dubbo,说明建立的Zookeeper分组为Dubbo,树的第二层为Service层用来表示具体的接口服务,这里为com.test.UserServiceBo接口服务,树的第三层为Type层用来区分是服务提供者,还是服务消费者,还是路由规则等,树的第四层URL是具体服务提供者或者消费者对应的机器列表或者具体的路由规则。

假设服务提供者对外提供com.test.UserServiceBo的实现类的服务,那么当服务提供者启动时候,Provider会通过ZKClient在Zookeeper服务端的/dubbo/com.test.UserServiceBo/providers目录下写入自己的URL地址。如果服务提供者有多个,那么providers下就会有多个地址,这里需要注意的是这里的树形目录不一定是二叉树,假如服务提供者有100个机器,那么providers下就会有100个节点的。

假设服务消费者需要使用com.test.UserServiceBo接口的服务,那么当服务消费者启动时候,Consumer会通过ZKClient订阅Zookeeper服务端的/dubbo/com.test.UserServiceBo/providers目录下提供的服务提供方的URL地址列表。并且在/dubbo/com.test.UserServiceBo/consumers目录下写下自己的URL地址,这里要记录服务消费者的地址是为了当服务提供者地址列表变化时候(比如新增了机器,减少了机器)时候,Zookeeper可以通知订阅该服务的订阅者。

监控中心和管理控制台在启动时候会通过ZKClient订阅Zookeeper服务端的/dubbo/com.test.UserServiceBo/目录下的内容,并通过providers和consumers子目录区分哪些是服务提供者列表,哪些是服务消费者列表,另外管理控制台还可以写入路由规则到/dubbo/com.test.UserServiceBo/routers目录,这些路由规则也会被推送到服务消费端。

当服务提供者集群中有一台机器挂了后,Zookeeper能及时通过长链断开发现该机器挂了,并会从Zookeeper注册中心服务提供者的providers目录下删除该机器,然后会通知服务消费者更新可用的服务提供者地址列表。由于zookeeper支持持久化存储,所以当zookeeper重启后,可以自动恢复服务注册信息。

Zookeeper的安装

下面使用Apache Zookeeper作为服务注册中心,首先要进行Zookeeper的搭建。

首先需要到Apache官网上下载安装包,地址为http://zookeeper.apache.org/releases.html,本文使用的是zookeeper-3.4.11版本,如下图:

 

解压该包后,如下图:

然后修改zookeeper-3.4.11/conf文件夹里面的zoo.cfg文件。



  • 设置配置项dataDir为一个存在的以data结尾的目录;

  • 设置Zookeeper的监听端口clientPort=2181

  • 设置Zookeeper心跳检查间隔tickTime=2000

  • 设置Follower服务器启动时候从Leader同步完毕数据能忍受多少个心跳时间间隔数initLimit=5

设置运行过程中Leader同步数据到Follower后,Follower回复信息到Leader的超时时间syncLimit=2,如果Leader超过syncLimit个tickTime的时间长度,还没有收到Follower响应,那么就认为这个Follower已经不在线了,如下图:

最后在zookeeper-3.4.11/bin下运行sh zkServer.sh start-foreground就会启动Zookeeper,会有下面输出:

可知Zookeeper在2181端口进行监听,至此服务注册中心搭建完毕。

Zookeeper的使用

服务提供方和调用方需要引入ZKClient的jar包才能使用访问Zookeeper服务器,需要在pom里面添加下面依赖。


com.101tec
zkclient
0.10

Zookeeper单机配置:指定一个Zookeeper的ip作为服务注册中心。

或者:

其中Zookeeper指明使用Zookeeper作为服务注册中心,12.22.123.101:2181是Zookeeper的服务器地址和服务监听端口号。

Zookeeper集群配置:指定多个ip作为服务注册中心:

或者:

另外你还可以在同一个Zookeeper服务器上划分多个分组,例如下面:

oup="registry1" />
up="registry2" />

如上代码,在同一个Zookeeper服务器上划分了两个分组,也就是会有两棵树目录,树根分别为registry1和registry2。



推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
author-avatar
滑膛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有