dubbo zookeeper案例
Alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题。
- ConfigServer
配置中心,和每个Server/Client之间会作一个实时的心跳检测(因为它们都是建立的Socket长连接),比如几秒钟检测一次。收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务列表,如:
| serviceName | serverAddressList | clientAddressList |
| UserService | 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4 | 172.16.0.1,172.16.0.2 |
| ProductService | 192.168.0.3,192.168.0.4,192.168.0.5,192.168.0.6 | 172.16.0.2,172.16.0.3 |
| OrderService | 192.168.0.10,192.168.0.12,192.168.0.5,192.168.0.6 | 172.16.0.3,172.16.0.4 |
- Client
调用服务的机器,每个Client启动时,主动与ConfigServer建立Socket长连接,并将自己的IP等相应信息发送给ConfigServer。
- Server
真正提供服务的机器,每个Server启动时,主动与ConfigServer建立Scoket长连接,并将自己的IP,提供的服务名称,端口等信息直接发送给ConfigServer,ConfigServer就会收集到每个Server提供的服务的信息。
1.开发软件、资料
- jdk1.7.0_79 ,安装并配置好java开发环境
- zookeeper-3.4.5 下载地址:http://download.csdn.net/detail/adam_zs/9470314
- Tomcat 7.0 配置入eclipse或者myeclipse都可以
- dubbo-admin-2.5.3.war 下载地址:http://download.csdn.net/detail/adam_zs/9470323
- apache-maven-3.2.5 配置入eclipse或者myeclipse都可以
- dubbo官方文档 http://dubbo.io/Home-zh.htm
Dubbo安装 下载地址:https://github.com/alibaba/dubbo/releases pom.xml:http://files.cnblogs.com/files/belen/pom.xml
2.关键步骤
zookeeper安装部署(
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。实例中,zookeeper将作为dubbo服务的注册中心。同时负责集群调度。
为什么要用zookeeper?
Zookeeper可以提供配置管理、命名服务、分布式算法、集群管理功能。具体说明参看如下文章:
)
Zookeeper部署
1、dubbo依赖于Zookeeper,实现任务的分布式配置及各服务间的交互通信,Zookeeper以TreeNode类型进行存储,支持Cluster形式部署且保证最终数据一致性,关于ZK的资料网上比较丰富,相关概念不再重复介绍,本文以zookeeper-3.4.6为例,请从官网下载http://zookeeper.apache.org。
2、创建ZookeeperLab文件夹目录,模拟部署3台Zookeeper服务器集群,目录结构如下。
- ConfigServer
配置中心,和每个Server/Client之间会作一个实时的心跳检测(因为它们都是建立的Socket长连接),比如几秒钟检测一次。收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务列表,如:
| serviceName | serverAddressList | clientAddressList |
| UserService | 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4 | 172.16.0.1,172.16.0.2 |
| ProductService | 192.168.0.3,192.168.0.4,192.168.0.5,192.168.0.6 | 172.16.0.2,172.16.0.3 |
| OrderService | 192.168.0.10,192.168.0.12,192.168.0.5,192.168.0.6 | 172.16.0.3,172.16.0.4 |
- Client
调用服务的机器,每个Client启动时,主动与ConfigServer建立Socket长连接,并将自己的IP等相应信息发送给ConfigServer。
- Server
真正提供服务的机器,每个Server启动时,主动与ConfigServer建立Scoket长连接,并将自己的IP,提供的服务名称,端口等信息直接发送给ConfigServer,ConfigServer就会收集到每个Server提供的服务的信息。
1.开发软件、资料
- jdk1.7.0_79 ,安装并配置好java开发环境
- zookeeper-3.4.5 下载地址:http://download.csdn.net/detail/adam_zs/9470314
- Tomcat 7.0 配置入eclipse或者myeclipse都可以
- dubbo-admin-2.5.3.war 下载地址:http://download.csdn.net/detail/adam_zs/9470323
- apache-maven-3.2.5 配置入eclipse或者myeclipse都可以
- dubbo官方文档 http://dubbo.io/Home-zh.htm
Dubbo安装 下载地址:https://github.com/alibaba/dubbo/releases pom.xml:http://files.cnblogs.com/files/belen/pom.xml
2.关键步骤
zookeeper安装部署(
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。实例中,zookeeper将作为dubbo服务的注册中心。同时负责集群调度。
为什么要用zookeeper?
Zookeeper可以提供配置管理、命名服务、分布式算法、集群管理功能。具体说明参看如下文章:
)
3、解压从官网下载的zookeeper-3.4.6.tar文件,并分别复制到三台ZkServer的zookeeper-3.4.6文件夹。

4、分别在三台ZkServer的data目录下创建myid文件(注意没有后缀),用于标识每台Server的ID,在Server1\data\myid文件中保存单个数字1,Server2的myid文件保存2,Server3的myid保存3。
5、创建ZkServer的配置文件,在zookeeper-3.4.6\conf文件夹目录下创建zoo.cfg,可以从示例的zoo_sample.cfg 复制重命名。因为在同一台机器模拟Cluster部署,端口号不能重复,配置文件中已经有详细的解释,修改后的配置如下,其中Server1端口号2181,Server2端口号2182,Server3端口号2183。
6、通过zookeeper-3.4.6\bin文件夹zkServer.bat文件启动ZKServer,由于Cluster部署需要选举Leader和Followers,所以在3个ZKServer全部启动之前会提示一个WARN,属正常现象。

7、Zookeeper启动成功后可以通过zookeeper-3.4.6\bin文件夹的 zkCli.bat验证连接是否正常,比如创建节点“create /testnode helloworld”,查看节点“get /testnode”,连接到组群中其它ZkServer,节点数据应该是一致的。更多指令请使用help命令查看。

8、对于Linux环境下部署基本一致,zoo.cfg配置文件中data和datalog文件夹路径改为linux格式路径,使用“./zkServer.sh start-foreground”命令启动ZkServer,注意start启动参数不能输出异常信息。

9、至此Zookeeper的配置完毕。
dubbo治理平台部署(
上面内容看起来没那么直观。如果有一个控制台来管理和展现就太棒了。不得不说dubbo还是挺贴心的。
下载
官网下载地址:
http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war
但是该地址最近一直无法下载。
http://pan.baidu.com/share/link?shareid=2205137761&uk=3442370350&fid=707816148751698 可以通过这里下载。
安装
将war包拷贝到tomcat/webapps目录下,启动tomcat。浏览器中输入:
)
dubbo-admin-2.5.3.war解压后得到如下文件

删除D:\ProgramFiles_java\Apache Software Foundation\Tomcat 7.0\webapps\ROOT路径下所有文件,复制解压文件到该路径,效果如下

如需要修改登陆dubbo治理平台密码,进入D:\ProgramFiles_java\Apache Software Foundation\Tomcat 7.0\webapps\ROOT\WEB-INF路径,打开dubbo.properties

默认两个用户,用户名密码分别为 root/root guest/guest
启动tomcat,浏览器输入地址:http://localhost:8080/ 进入dubbo治理平台

出现上图说明dubbo治理平台部署完毕
服务提供者打包给服务消费者引用


3.源码
<!-- zookeeper -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<artifactId>jmxtools</artifactId>
<groupId>com.sun.jdmk</groupId>
</exclusion>
<exclusion>
<artifactId>jmxri</artifactId>
<groupId>com.sun.jmx</groupId>
</exclusion>
<exclusion>
<artifactId>jms</artifactId>
<groupId>javax.jms</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- dubbo-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.4.9</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>



Provider applicationContext.xml:
服务消费方代码dubbo-consumer 下载地址:http://download.csdn.net/detail/adam_zs/9470354
Consumer applicationContext.xml:
调用方式 注入spring后,通过ApplicationContext获取对应服务接口,调用服务方法。
4.启动顺序
- 启动zookeeper
- 启动tomcat,启动完毕可以输入地址http://localhost:8080/可以看到dubbo治理平台
- 启动服务提供者 Provider.java
- 启动消费者 Consumer.java
5.成功启动截图




dubbo zookeeper案例的更多相关文章
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...
- Dubbo+Zookeeper集群案例
一.开源分布式服务框架 1.Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以Spring框架无缝集成. Dubbo是一款高性 ...
- 从头开始搭建一个dubbo+zookeeper平台
本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...
- 通过单元测试理解spring容器以及dubbo+zookeeper单元测试异常处理
一.先说一个结论:单元测试与主项目的spring容器是隔离的,也就是说,单元测试无法访问主项目spring容器,需要自己加载spring容器. 接下来是代码实例,WEB主项目出于运行状态,单元测试中可 ...
- 用dubbo+zookeeper+spring搭建一个简单的http接口程序
dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能. zookeeper是hadoop的一个子项目,主要用来解决分布式系统的 ...
- 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!
平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis ...
- 分布式服务:Dubbo+Zookeeper+Proxy+Restful 分布式架构
分布式 分布式服务:Dubbo+Zookeeper+Proxy+Restful 分布式消息中间件:KafKa+Flume+Zookeeper 分布式缓存:Redis 分布式文件:FastDFS ...
- 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis
分类: 分布式技术(3) 目录(?)[+] 平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...
- dubbo+zookeeper+jenkins从打包开始
一.jenkins中maven构建 有如下图构建设置 解释说明: pom.xml 此处jenkins打包依赖的主要配置文件(规则) settings.xml 全局配置文件,主要用于配置maven的运行 ...
随机推荐
- sqlserver不能创建数据库关系图
use [你的数据库名]EXEC sp_changedbowner 'sa'
- C#知识点<2>
1. ? : 运算符(真2假3) 我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if...else 语句.它的一般形式如下: Exp1 ? Exp2 : Exp3; 其中,Exp1. ...
- springboot添加事务
(转自:http://www.cnblogs.com/xingzc/p/6029483.html) 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合.由于数据 ...
- script error总结
移动端的页面在控制台报出一个script error,通常的原因有一下几点: 1. 脚本引入错误 可能是脚本的地址不对,协议不对(http或https问题),本地host文件绑定的地址不对 2. 方法 ...
- 想象一下(imagine)
想象一下(imagine) 题目描述 我们高大的老班举起了有半个他那么高的三角板,说:"你们想象一下--" 于是你就陷入了想象-- 有一棵n个点的树,每个叶子节点上都有一个人,他们 ...
- Python 安装MySQLdb模块遇到报错及解决方案:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
一.问题 系统:win7 64位 在下载MySQL-python-1.2.5.zip,使用python setup.py install 安装时,出现以下报错: _mysql.c(42) : fata ...
- CSS3 基本属性 浅析(含选择器、背景阴影、3D转换、动画等)
1渐进增强原则 2私有前缀 不同浏览器在发布不同版本(一般测试版)时会加前缀,新增属性加上前缀进行支持测试: Chrome浏览器:-webkit-border-radius: 5px; ...
- 汽车加油行驶(cogs 737)
«问题描述:给定一个N*N 的方形网格,设其左上角为起点◎,坐标为(1,1),X 轴向右为正,Y轴向下为正,每个方格边长为1,如图所示.一辆汽车从起点◎出发驶向右下角终点▲,其坐标为(N,N).在若干 ...
- 深入学习MongoDB
NoSQL(Not Only SQL)为什么使用NoSQL 对数据库高并发读写 对海量数据的高效存储与访问 对数据库的高可拓展性和高可用性 NoSQL的弱点 数据库事务一致性需求 数据库的写实时性和读 ...
- 在LINQ TO SQL 中使用MVC3中的DataAnnotations 【MetadataType】
原文发布时间为:2011-04-07 -- 来源于本人的百度文章 [由搬家工具导入] http://stackoverflow.com/questions/1535662/asp-net-mvc-li ...
