1、dubbo定义
Dubbo |dʌbəʊ| 是一个高性能,基于Java的RPC框架,由阿里巴巴开源。和许多RPC系统一样,dubbo基于定义一个服务的思想,指定可以通过参数和返回类型远程调用的方法。在服务器端,服务器实现这个接口并运行一个dubbo服务器来处理客户端调用。在客户端,客户端有一个存根,提供与服务器相同的方法。
Dubbo提供三个关键功能,包括基于接口的远程调用,容错和负载均衡,以及自动服务注册和发现。
官方地址:http://dubbo.io/
git地址:https://github.com/alibaba/dubbo
2、maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
目前最新版本是2.6.0
3、各组件介绍
1)服务提供者(provider),暴露服务方称之为服务提供方,它的作用就是给调用方提供服务,git-demo示例中的provider,通常会开放出一个api接口列表供外部调用方使用。
2)服务消费者(consumer),使用服务的调用方,一般是远程调用模式(RPC),git-demo示例中的consumer。
3)服务注册中心(register),服务注册与发现的中心目录服务称之为服务注册中心,服务的提供者与消费者需要在配置项中声明注册中心地址,在项目启动时会自动与注册中心交互。
4)服务监控中心(Monitor),统计服务的调用次数、调用时间、成功失败等信息称之为服务监控中心。
5)服务提供者、消费者以及注册中心三者之间均为长连接,它们只在启动时与注册中心交互,在后续通信中消费者会缓存提供者列表信息并根据自己的负载均衡策略调用服务,注册中心并不转发请求,所以即使运行过程中注册中心宕机也不会影响整个系统。
6)zookeeper,dubbo的注册中心可以是Multicast、Zookeeper、Redis和Simple等,官方推荐使用zookeeper,所以这里需要下载并运行zookeeper。zookeeper可以自动删除故障提供者,而当其恢复时也能自动恢复注册服务。
4、各组件使用
1)服务提供者,需要配置项有命名(name)、所有者(owner)、注册中心地址(register-address)、client、缓存地址(file)、服务启动地址(port)、服务超时时间(timeout)等
2)服务消费者,需要的配置项有是否检测提供方(check)、失败重试次数(retries)、调用端超时时间(timeout)、组(group)、版本号(version)等
3)zookeeper:开源的分布式应用协调系统,详见 http://blog.youkuaiyun.com/wollzengji/article/details/79189412
4)dubbo-admin
dubbo-admin为整个dubbo服务的管理控制台,主要功能包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡等管理功能。
官方下载地址:http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war(试了下下载不了)
可用这个下载地址:http://download.youkuaiyun.com/download/wollzengji/10229343
下载后放入tomcat中,修改配置文件(dubbo.properties)注册中心地址,再运行tomcat即可启动服务,修改的配置如下图介绍:
5)dubbo-monitor
dubbo-monitor是dubbo服务的监测中心,可用于监测整个服务的系统信息、状态信息等,比较实用的是它可以监测各个dubbo服务的成功/失败次数、平均耗时、最大耗时、最大并发数等非常有用的信息。
dubbo-monitor的官方下载地址是:code.alibabatech.com/mvn/releases/com/alibaba/dubbo-monitor-simple/2.4.1/dubbo-monitor-simple-2.4.1-assembly.tar.gz(也无法下载)
可用这个地址下载:http://download.youkuaiyun.com/download/wollzengji/10229303
下载后解压文件,修改配置文件(dubbo.properties)注册中心地址,再运行./bin/start.sh即可启动服务,修改的配置如下图介绍:
成功启动后在浏览器输入地址可看到如下页面
注意dubbo-monitor中的数据是由dubbo服务提供者定时(默认1分钟)向其发送数据,所以在服务提供者的配置文件中必须加上<dubbo:monitor protocol="registry" />的配置,否则dubbo-monitor将得不到数据。