Dubbo学习笔记1:使用Zookeeper搭建服务治理中心
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里面添加下面依赖。
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
Zookeeper单机配置:指定一个Zookeeper的ip作为服务注册中心。
<dubbo:registry address="zookeeper://12.22.123.101:2181" />
或者:
<dubbo:registry protocol="zookeeper" address="12.22.123.101:2181" />
其中Zookeeper指明使用Zookeeper作为服务注册中心,12.22.123.101:2181是Zookeeper的服务器地址和服务监听端口号。
Zookeeper集群配置:指定多个ip作为服务注册中心:
<dubbo:registry address="zookeeper://11.10.13.10:2181?backup=11.20.153.111:2181,11.30.
133.112:2181" />
或者:
<dubbo:registry protocol="zookeeper" address="11.10.13.10:2181,11.20.153.111:2181,11.30.
133.112:2181" />
另外你还可以在同一个Zookeeper服务器上划分多个分组,例如下面:
<dubbo:registry id="registry1" protocol="zookeeper" address="10.20.153.10:2181" gr
oup="registry1" />
<dubbo:registry id="registry2" protocol="zookeeper" address="10.20.153.10:2181" gro
up="registry2" />
如上代码,在同一个Zookeeper服务器上划分了两个分组,也就是会有两棵树目录,树根分别为registry1和registry2。
Dubbo学习笔记1:使用Zookeeper搭建服务治理中心的更多相关文章
- Dubbo学习笔记10:Dubbo服务消费方启动流程源码分析
同理我们看下服务消费端启动流程时序图: 在<Dubbo整体架构分析>一文中,我们提到服务消费方需要使用ReferenceConfig API来消费服务,具体是调用代码(1)get()方法来 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- Nutch1.7学习笔记:基本环境搭建及使用
Nutch1.7学习笔记:基本环境搭建及使用 作者:雨水,时间:2013-10-31博客地址:http://blog.csdn.net/gobitan 说明:Nutch有两个主版本1.x和2.x,它们 ...
- 使用Spring Cloud搭建服务注册中心
我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo[Linux上安装Zookeeper以及一些注意事项][一个简单的案例带你入门Dubbo分布式框架],但是小伙伴们应该也看到了,阿里的dubb ...
- 笔记:Spring Cloud Eureka 服务治理
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务 ...
- Spring cloud Eureka 服务治理(搭建服务注册中心)
服务之类是微服务架构中最为核心的基础模块,它主要用来实现各个微服务实例的自动化注册和发现. 1. 服务注册 在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机. ...
- Dubbo学习笔记2:Dubbo服务提供端与消费端应用的搭建
Demo结构介绍 Demo使用Maven聚合功能,里面有三个模块,目录如下: 其中Consumer模块为服务消费者,里面TestConsumer和consumer.xml组成了基于Spring配置方式 ...
- Dubbo学习笔记4:服务消费端泛化调用与异步调用
本文借用dubbo.learn的Dubbo API方式来解释原理. 服务消费端泛化调用 前面我们讲解到,基于Spring和基于Dubbo API方式搭建简单的分布式系统时,服务消费端引入了一个SDK二 ...
- Dubbo学习笔记3:Dubbo管理控制台与监控中心的搭建
Dubbo源码下载与编译 本文来讲下如何在Dubbo源码编译后,得到用于搭建管理控制台的war包和监控平台的jar包. 首先需要到Github上下载Dubbo的源码,解压后如下: 在dubbo-2.5 ...
随机推荐
- ASP.NET中实现封装与策略模式
首先把运算方法封装起来,这样在网页界面中直接就可以调用了,不过是换张脸而已! using System; using System.Collections.Generic; using System. ...
- unique STL讲解和模板
unique()是C++标准库函数里面的函数,其功能是去除相邻的重复元素(只保留一个),所以使用前需要对数组进行排序. 代码: #include<bits/stdc++.h> using ...
- Week4-作业1
第四章 这一章主要讲了代码规范.复审和团队合作这两项内容. 在关于代码设计规范方面,书中讲到了关于goto的使用: “函数最好有单一的出口,为了达到这一目的, ...
- 项目总结之关于JQuery一些常用的函数
最近做一个小的项目,用到了很多关于jquery函数,下面简单总结下自我感觉比较常用的一些函数. jquery函数--Hide函数用法 jquery中,hide函数用于实现层的消失,相反,show函数用 ...
- Rsyslog日志服务搭建
rsyslog是比syslog功能更强大的日志记录系统,可以将日志输出到文件,数据库和其它程序.Centos 6.x默认的rsyslog版本是5.x. 网上关于rsyslog的安装配置文档倒是不少,但 ...
- 转载LoadRunner的常用Java API
Java API是访问Vuser函数的基础,通过LoadRunner的Java API可以在脚本中很容易地创建事务与并发点.获取用户信息等功能. 1. 事务函数(Transaction Functio ...
- eureka集群高可用配置
譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配区别在哪里:eureka的客户端添加service-url时,是不是需要把所有的 ...
- 微信 小程序布局 swiper 页面
JS // pages/classify/swiper.js Page({ /** * 页面的初始数据 */ data: { current:0 }, titleBtn:function(e){ ...
- 如何在Windows下查看JAVA端口占用情况(阿里面试)
如需要确定谁占用了9050端口 为例: 1.Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\>netstat -ano 协议 本地地址 外部地址 状态 ...
- UVALive6442_Coins on a Ring
真正的水题,可惜无法当场机智一下. 这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少? 其实是这样来考虑的,我们可以随便设置 ...