可以看这个文档
http://dubbo.io/User+Guide-zh.htm
1.简介
Dubbo是一个框架,它能够暴露某个系统的服务接口,使得其他系统能够使用该系统的接口
Dubbo的框架如下图所示。框架主体分为4个部分
1.Provider 服务提供者
2.Registry 消息注册中心
3.Consumer 消费者
4.Monitor 监控中心
Container是服务运行的容器。
从上图中可以较为清晰的看到各个环节直接的关系。流程如下
1.容器启动服务
2.服务向注册中心注册
3.消费者启动,想注册中心请求服务列表
4.消费者请求需要的服务,提供方提供服务
5.在固定时间段后向检测中心发送服务调用的统计
需要注意的是,正常情况下服务方和消费方仅仅在启动的过程中向注册中心发送请求。如果在过程中服务方发生变动,也会通知注册中心,注册中心以长连接形式通知消费方更新缓存。
如果注册中心在运行了一段时间后挂了,也是不影响消费方继续使用服务方的服务的,因为相应的信息已经存进了缓存中。
2.使用
使用dubbo无论消费方还是服务方都需要添加依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> </dependency>
服务方需要暴露自己的接口,需要注册到zk上
消费方也需要连接zk
消费方和服务方需要共有接口 (做一个jar包两边都依赖)
(1)<dubbo:service>服务提供者暴露服务配置
<
dubbo:service
interface
=
"com.alibaba.dubbo.demo.DemoService"
ref
=
"demoService"
/>
<
bean
id
=
"demoService"
class
=
"com.alibaba.dubbo.demo.provider.DemoServiceImpl"
/>
interface表明要调用的接口,ref表明接口的实现类。这两项是必填的,其余的可以看文档来了解
(2)<dubbo:reference> 服务消费者引用服务配置
<
dubbo:reference
id
=
"demoService"
interface
=
"com.alibaba.dubbo.demo.DemoService"
/>
id 服务要引用的bean名称 inteface 需要的服务接口 。这两项是必填的,其余的可以看文档来了解
(3)<dubbo:protocol> 服务提供者协议配置
<
dubbo:protocol
name
=
"dubbo"
port
=
"20880"
/>
name 协议名称 port 协议端口(缺省端口为20880) name是必填项
(4)<dubbo:registry> 消息中心注册配置 消费和提供方都需要
<
dubbo:registry
address
=
"127.0.0.1:1234"
/>
address 注册中心的地址和端口 如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port,不同集群的注册中心需要配置多个<dubbo:registry>标签
(5)<dubbo:application> 项目名配置 消费和提供方都需要
<
dubbo:application
name
=
"hello-world-app"
/>
name 项目名称,必填项。注意:消费者和提供者应用名不要一样,此参数不是匹配条件,你当前项目叫什么名字就填什么,和提供者消费者角色无关
有以上几项,最简单的dubbo框架就搭建起来了,还有很多可以配置的,比如仅暴露接口中的一个方法,设置回调等等,还是推荐去看官方的文档,这样比较全面。
使用的过程中,服务提供不需要做任何修改,使用方只要获得接口bean,然后执行需要的方法就可以了。例如ApplicationContext.getBean("demoInteface")来获得bean
文档位置在开头