简介
分布式框架,本身就是用阿里解决SOA的问题的,前期是阿里巴巴的项目,后来和SHF有冲突,就不再维护了,当当网就把这个捡起来了,进行继续维护,所以加了最后的x字符。
Dubbox 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbox这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。
暴露服务的服务提供方(Demo)
- 创建Maven工程(WAR), 在pom.xml中引入依赖(Spring框架等,要引入Tomcat,因为分布式本地项目要设置不同的端口,真实的就放在不同的ip)
- 在webapps下创建WEB-INF文件夹,创建web.xml
- 创建业务接口
- 创建业务实现类
注意:Service注解要用com.alibaba包下的(分布式)
- 编写配置文件(src/main/resources下创建applicationContext-service.xml)
<dubbo:application name="dubboxdemo-service"/> <dubbo:registry address="zookeeper://192.168.25.132:2181"/> 这里是本机虚拟机linux的ip <dubbo:annotation package="cn.itcast.dubboxdemo.service" />
- 测试运行(tomcat7:run)
调用远程服务的服务消费方(Demo)
- 创建Maven工程(WAR)dubboxdemo-web,在pom.xml引入依赖,同提供方。区别就是把tomcat插件的运行端口改为8082
- 在webapps目录下创建WEB-INF目录,并创建web.xml
- 拷贝业务接口,将服务提供方的service接口包都拷贝过来
- 编写Controller
- 编写Spring配置文件
- 在src/main/resources下创建applicationContext-web.xml
- 测试运行
- 浏览器输入http://localhost:8082/user/showName.do
统计服务的调用次调和调用时间的监控中心
- 管理中心的部署
我们在开发时,需要知道注册中心都注册了哪些服务,以便我们开发和测试。我们可以通过部署一个管理中心来实现。其实管理中心就是一个web应用,部署到tomcat即可。- 编译源码,得到war包
- 解压dubbox-master.zip进入dubbo-admin目录,输入maven命令
mvn package -Dmaven.skip.test=true
- target文件夹里会有一个war包,在linux服务器上安装tomcat,将该包上传到linux服务器的tomcat的webapps下即可。
如果部署在zookeeper同一台主机并且端口是默认的2181,则无需修改任何配置。如果不是在一台主机上或端口被修改,需要修改WEB-INF下的dubbo.properties ,修改如下配置:
dubbo.registry.address=zookeeper://127.0.0.1:2181
- 管理端使用
- 打开浏览器,输入http://192.168.25.132:8080/dubbo-admin/ ,登录用户名和密码均为root 进入首页。 (192.168.25.132:)是我部署的linux主机地址。
- 启动服务提供者工程,即可在服务治理-提供者查看到该服务
服务运行容器
服务注册与发现的注册中心(Dubbo Registry)
- 服务开启的时候服务的提供方把地址登记在注册中心
- 起一个服务,就在注册中心挂一个,(哪个地址对应哪个服务)
- 服务的消费方起来了,要订阅地址,能把注册中心的地址拿过来,调用哪个功能就可以对照了
- Dubbo Monitor(监控中心)可以监控到哪些服务的提供方和调用方,哪个有问题也可以获知
注册中心其实是一个软件,官方推荐的软件是Zookeeper,是Apache Hadoop的子项目,树型的目录服务
(要安装在Linux系统上)
安装Dubbox(简略流程)
操作环境:linux
- 安装jdk
- 把zookeeper压缩包上传到linux系统(secureCRT)
- secureCRT连接地址看linux(控制台 -> ifconfig))
- 进入sftp,输入put 文件路径 回车上传
- 解压
tar -zxvf zookeeper-3.4.6.tar.gz
- 进入zookeeper-3.4.6目录,创建data文件夹 mkdir data
- 进入conf目录,把zoo_sample.cfg改名为zoo.cfg
mv zoo_sample.cfg zoo.cfg
- 打开zoo.cfg,修改data属性
dataDir=/root/zookeeper-3.4.6/data
- 启动服务(进入bin目录)
- 启动 ./zkServer.sh start
- 关闭 ./zkServer.sh stop
- 查看状态 ./zkServer.sh status
- Dubbox本地Jar包部署和安装
因为maven里没有新版本的这个,所以要弄到本地仓库里
先将dubbo-2.8.4.jar包放到‘存放目录’, 然后输入命令
mvn install:install-file -Dfile=存放目录 -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar
- 配置离线约束
Eclipse配置Dubbox离线约束