我是在linux下使用dubbo-2.3.3以上版本号的zookeeper注冊中心客户端。
Zookeeper是Apache Hadoop的子项目,强度相对较好,建议生产环境使用该注冊中心。
Dubbo未对Zookeeper服务器端做不论什么侵入改动。仅仅需安装原生的Zookeeper服务器就可以。全部注冊中心逻辑适配都在调用Zookeeper客户端时完毕。
Zooleeper安装
下载解压
wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz tar zxvf zookeeper-3.3.3.tar.gz cd zookeeper-3.3.3 cp conf/zoo_sample.cfg conf/zoo.cfg
配置:
vi conf/zoo.cfg
zoo.cfg的内容例如以下:(当中data文件夹需改成你真实输出文件夹)
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take #initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement #syncLimit=5 # the directory where the snapshot is stored. dataDir=/home/dubbo/zookeeper-3.3.3/data # the port at which the clients will connect clientPort=2181
假设须要集群。zoo.cfg的内容例如以下:(当中data文件夹和server地址需改成你真实部署机器的信息)
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/dubbo/zookeeper-3.3.3/data clientPort=2181 server.1=ip1 server.2=ip2
并在data文件夹下放置myid文件:(上面zoo.cfg中的dataDir)
mkdir data vi myid
启动
./bin/zkServer.sh start
停止
./bin/zkServer.sh stop
管理控制台安装
管理控制台为内部裁剪版本号,开源部分主要包括:路由规则。动态配置,服务降级。訪问控制。权重调整。负载均衡,等管理功能。
安装
wget http://apache.etoak.com/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz tar zxvf apache-tomcat-6.0.35.tar.gz cd apache-tomcat-6.0.35 rm -rf webapps/ROOT wget http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war unzip dubbo-admin-2.4.1.war -d webapps/ROOT
配置: (或将dubbo.properties放在当前用户文件夹下)
vi webapps/ROOT/WEB-INF/dubbo.properties dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest
启动
./bin/startup.sh
停止
./bin/shutdown.sh
訪问(注意我个人改动了默认的端口)(用户:root,密码:root)
http://127.0.0.1:8090/
注冊中心抽象
Dubbo将注冊中心进行抽象,使得它能够外接不同的存储媒介给注冊中心提供服务,有ZooKeeper。Memcached,Redis等。Dubbo抽象后,用户能够进行扩展,我们通过分析ZooKeeper这个实现来了解注冊中心的低层。
进过抽象之后,用户 仅仅须要实现相应的Registry和RegistryFactory就能够了,ZooKeeper就是实现了ZookeeperRegistry,和ZookeeperRegistryFactory。
ZookeeperRegistryFactory的实现非常简单。就是返回一个ZookeeperRegistry实例,所以基本的东西是在ZookeeperRegistry中实现的,在ZookeeperRegistry用户须要实现注冊URL。注销URL,URL订阅,URL注销订阅和URL查询,在这里面设计到Zookeeper服务端的调用,都被封装到ZookeeperClient中,ZookeeperClient服务进行Server连接,断链。资源的CRUD。
ZooKeeper的价值
因为引入了ZooKeeper作为存储媒介,也就把ZooKeeper的特性引进来。
首先是负载均衡。单注冊中心的承载能力是有限的,在流量达到一定程度的时候就须要分流,负载均衡就是为了分流而存在的,一个ZooKeeper群配合相应的Web应用就能够非常easy达到负载均衡。
资源同步。单单有负载均衡还不够。节点之间的数据和资源须要同步,ZooKeeper集群就天然具备有这种功能。
命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动的时候,向ZK上的指定节点/dubbo/${serviceName}/providers文件夹下写入自己的URL地址,这个操作就完毕了服务的公布。其它特性还有Mast选举。分布式锁等。