dubbo的基本介绍:
Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
基本架构设计:
- 服务提供者(provider): 暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务
- 服务消费者(consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务。集群环境下,服务消费者从提供者列表中,基于软负载均衡算法,选择一台提供者进行调用,如果调用失败,再选另一台调用(重试机制)。
- 注册中心(registry): 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长链接推送变更数据给消费者。
- 监控中心(monitor): 服务消费者和服务提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
- 服务运行容器(container):负责启动、加载、运行服务提供者
dubbo与springBoot环境搭建:
dubbo常用的注册中心是zookeeper,我们这里也是用zookeeper最为注册中心。
zookeeper的搭建过程可见博客: zookeeper集群搭建和常用命令
我们这里使用Idea来进行开发,先创建一个空的项目,然后在这个项目下创建服务的消费者、提供者等
1、创建公共接口和实体类:dubbo_entity(服务消费者和服务提供者两个服务的公共部分)
因为dubbo是面向接口的远程调用,所以这里需要有一个公共的接口和实体供两个服务使用。
2、创建一个springBoot web项目,作为服务的消费者dubbo_consumer:。
需要引入的主要依赖:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
该依赖中,包含了我们需要的基本的依赖包:
在该项目下,我们创建一个接口用于测试
添加dubbo配置:
server.port=8082
# 服务名
dubbo.application.name=zsm-dubbo-consumer
# 服务注册协议
dubbo.registry.protocol=zookeeper
# zookeeper 注册地址
dubbo.registry.address=192.168.5.183:2181
# 分布式固定是dubbo
dubbo.protocol.name=dubbo
# 如果机器是多网卡,可能会出现 BindException: Address already in use 异常
# 这时需给服务的提供者和消费者指定两个不同的本机网卡地址
dubbo.protocol.host= 192.168.5.1
springBoot的启动类上需要开启dubbo支持的注解:
3、创建一个服务提供者服务dubbo_provider:这里的服务提供者,仅用于服务的RPC调用,所以可以不是web服务
需要添加的依赖:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
注意: 这里的@service注解试dubbo中的注解,而且这里只是接口的实现,而对应的接口则提取出来作为公共部分引用。
添加dubbo配置:
# 服务名
dubbo.application.name = student-provider
# 注册中心协议
dubbo.registry.protocol = zookeeper
# 注册中心地址+端口号
dubbo.registry.address= 192.168.5.183:2181
# dubbo.registry.address = zookeeper://192.168.5.183:2181
dubbo.protocol.name = dubbo
dubbo.protocol.host= 192.168.16.1
启动类上开启dubbo的注解:同上
4、添开始编写和调用dubbo远程RPC服务
服务提供者:service实现类使用的@Service注解,要使用dubbo的注解。如上图中展示的
服务消费者:调用公共的UserService服务,需要使用@Reference注解
到这里,基本的dubbo远程服务调用服务搭建完成,分别启动服务消费者和服务提供者(前提先保证zookeeper服务正常且可连接),在浏览器中测试:
dubbo除了上述的功能外,还可以配置:重试次数、超时时间、服务容错、服务降级、负载均衡机制、本地存根等。dubbo官网使用示例
后面的章节中我们会逐步介绍dubbo的相关功能,还有dubbo的源码探索。