Dubbo 简 单 应 用
一、Dubbo概述:
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 spring框架无缝集成,也是一个非常全面的SOA基础框架。其是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点.
基于Zookeeper实现服务的输出和输入功能,并对服务调用进行协调和监控的框架应用。
详情参考博文:
http://blog.csdn.net/lishehe/article/details/46652497
http://www.oschina.net/p/dubbox?fromerr=ZNY2M0u5
https://www.oschina.net/p/dubbox
二、Zookeeper的安装和使用:
Dubbo基于zookeeper来运行,因此在安装使用dubbed之前需要先安装配置zookeeper。Zookeeper是Apache Hadoop的子项目,强度相对较好,建议生产环境使用该注册中心。Dubbo未对Zookeeper服务器端做任何侵入修改,只需安装原生的Zookeeper服务器即可,所有注册中心逻辑适配都在调用Zookeeper客户端时完成。
2.1安装:
Wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.3.tar.gz
tar zxvf zookeeper-3.3.6.tar.gz
cd zookeeper-3.3.6
cp conf/zoo_sample.cfg conf/zoo.cfg
2.2配置
vi conf/zoo.cfg
#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/dubbed/zookeeper-3.3.3/data
# the port at which the clients will connect
clientPort=2181
启动:./bin/zkServer.sh start
停止:./bin/zkServer.sh stop
三、Dubbo安装:
3.1、下载和构建:
下载地址:https://github.com/dangdangdotcom/dubbox
通过git方式将dubbed源码clone到本地文件夹。Cmd进入文件夹,直接在dubbox根目录执行mvn –U eclipse:myeclipse和mvn install,最终会在dubbed应用中生产dubbo-2.8.4.jar(使用了dubbox的最新版本)包。(切勿一个应用一个应用构建,会有些构建不过去,另外构建的时候使用maven3.3.2以上版本,源码中有些测试代码执行不过去,在mvn install的时候执行:mvn install -Dmaven.test.skip=true打包时跳过测试代码)
3.2、dubbed-admin的安装和使用
将打包好的dubbo-2.8.4.jar包拷贝到dubbed-admin的WEB-INF/lib文件夹下。修改WEB-INF/dubbo.properties中的zookeeper注册地址修改为zookeeper的安装服务器IP和端口;下边两行分别是root和guest用户的密码。
文件修改完后将dubbed-admin打包部署到Web容器。访问应用(http://192.168.11.111:8000/dubbo_admin/)输入用户名和密码进入dubbed管理页面。可查看注册到zookeeper中的服务,应用和机器。
四、调用方和消费方的使用:
调用方和消费方都会用到api的接口,因此需要单独创建api应用,调用方和消费方引入jar包。应用结构构建的时候可以参考dubbed的结构,先创建一个大的文件工程做为parent,然后api,消费方和调用方做为子模块创建。
4.1、创建公用接口:
创建maven工程应用,在应用中创建接口和消费调用方数据传输使用的DTO或json。将创建的应用打包成jar.
4.2、Provider-提供服务的应用:
创建provider应用。Provider不提供web页面支持,因此运行的时候脱离web容器,以java进程运行,减少系统额外开销。创建pom.xml,引入zookeeper,zkclient,dubbo,api的jar包,并且引用maven-assembly-plugin插件将系统应用打包成tar.gz的压缩包。
与不使用dubbed应用不同的地方如下:
1、创建impl类,实现api中的接口和接口中的方法;
2、添加provider.xml配置文件,将应用注册到zookeeper,并提供服务:
<!--提供方应用信息-->
<dubbo:applicationname="mining-pub-provider" owner="mining-pub"organization="com.mining"/>
<!--dubbed zookeeper的注册地址-->
<dubbo:registryaddress="zookeeper://192.168.11.112:2181"/>
<!--用dubbed协议在30883端口暴露服务-->
<dubbo:protocol name="dubbed"port="30883" />
<!--服务方暴露的服务-->
<dubbo:serviceinterface="com.mining.pub.api.MiningPub"ref="miningPubService" />
创建完后运行mvn install将程序打包成tar.gz压缩包,发布到服务器。运行后在dubbed管理界面会看到提供的服务,机器和应用。
4.3、Consumer-消费服务的应用:
创建provider后consumer通过zookeeper调用provider进行消费。创consumer maven工程。在pom.xml中引入zookeeper,zkclient,dubbo,api的jar包。
添加consumer.xml配置文件,引入provider服务的消费bean:
<!--提供方应用信息-->
<dubbo:applicationname="mining-pub-consumer" owner="mining-pub"organization="com.mining"/>
<!--dubbedzookeeper的注册地址-->
<dubbo:registryaddress="zookeeper://192.168.11.112:2181"/>
<!--服务方暴露的服务-->
<dubbo:referenceinterface="com.mining.pub.api.MiningPub"id="miningPub"/>
配置文件中参数的含义参看文档:http://dubbo.io/Developer+Guide-zh.htm
创建完后将系统打包发布到web容器,运行后dubbed管理界面会看到提供的服务。
关注微信公众号和今日头条,精彩文章持续更新中。。。。。