程序员:分布式架构,Spring Boot项目实战之整合Apache Dubbo
Apache Dubbo是一款高性能的Java RPC(远程过程调用:服务者、调用者隶属不同的服务器)框架!
dubbo基础架构
服务容器主要负责启动、加载、运行服务的提供者;服务提供者启动服务时,向注册中心注册自己的提供的服务;同样服务消费者启动服务时,向注册中心订阅自己的服务;注册中心(推荐zookeeper)主要负责返回服务提供者的地址列表给服务消费者,如果有修改,则基于长连接方式推送给服务消费者。
服务消费者是从提供者地址列表中,采用负载均衡的算法,选取一台服务提供者进行调用,如果调用时失败,则选取另一台服务提供者进行调用。
服务提供者与服务消费者,在内存中累计调用次数与时间,都会定时每分钟发送统计数据到注册中心,我们可以认为这就是“心跳机制”。
dubbo整合步骤
(1)导入相关依赖
<dependencies>
<!--引入dubbo的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.0</version>
</dependency>
<!--引入zookeeper注册中心依赖-->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>com.gitee.reger</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.10<</version>
</dependency>
</dependencies>
(2)两个注解
//服务提供者:import com.alibaba.dubbo.config.annotation.Service;
@Service //接口的实现类注解
public class TestServiceImpl implements TestService{ }
//服务消费者:import com.alibaba.dubbo.config.annotation.Reference;
@Reference //取代@Autowired注解,一般contorller类时自动注入使用
private TestService testService;
(3)两个配置(properties文件)
服务提供者添加至注册中心:
spring.dubbo.application.name=自定义服务名(不要下划线)
spring.dubbo.registry.protocol=zookeeper(推荐注册中心)
spring.dubbo.registry.address=192.168.xx.xxx:2181(注册中心)
spring.dubbo.base-package=com.xxxxx.yyy(服务提供者注册公共包名)
spring.dubbo.protocol.name=dubbo(dubbo协议)
服务消费者添加至注册中心:
spring.dubbo.application.name=自定义服务名
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=192.168.xx.xxx:2181(注册中心)
spring.dubbo.base-package=com.xxxxx.yyy(服务消费者注册公共包名)
spring.dubbo.protocol.name=dubbo
spring.dubbo.consumer.timeout=10000 #消费者超时时间设置
spring.dubbo.consumer.check=false #
dubbo监控中心
监控中心的主要目的:监控服务是否注册到注册中心中!
启动Spring Boot项目时,不启动监控中心也是可以的。监控中心的本质就是war(dubbo-admin-2.6.0),一个动态的web工程。其运行环境是jdk与tomcat,放在tomcat的webapps(存放应用程序)下。
tomcat会自动解压,将webapps 中xxx.war 删除,重启即可!
测试地址