
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
概述:
节点角色说明
调用关系说明
- 服务容器 Container 负责启动,加载,运行服务提供者。
- 服务提供者 Provider 启动的时候,向注册中心 Registry 注册自己提供的服务。
- 服务消费者 Consumer 在启动的时候,向注册中心 Registry 订阅自己所需要的服务。
- 注册中心 Registry 返回服务提供者的地址列表给消费者,如果有变更注册中心将基于长连接推送变更数据给消费者。
- 服务消费者从提供者地址列表中,基于软负载均衡算法,选择一台提供者进行进行调用,如果调用失败再选择另外一台。
- 服务消费者与提供者在内存中统计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心 Monitor 。
项目构建
开发环境主要涉及以下方面:
● Spring Boot
● JDK 8
● Dubbo 2.7.1
● Zookeeper
具体代码可以查看 github 的 dubbo 模块:https://github.com/UniqueDong/springboot-study
Dubbo API
定义服务接口,打成 jar 包让消费者依赖,服务者实现接口。该工程只有接口定义以及 model 对象。@Data 属于lombok 开源库提供的特性,方便开发。
● model 对象定义
● provider 接口定义:
Provider 服务提供者
● pom依赖:
引入spring-boot-starter,dubbo-api 接口就是我们上面提到的 接口定义 jar ,dubbo-spring-boot-starter ,dubbo-dependencies-zookeeper。
● 配置文件 yaml 定义:
● 实现 api 定义的接口
注意 @Service 是 Dubbo 的,不要导入了 Spring 的。
Consumer
● Pom 定义:
我们要依赖 spring-boot-starter-web 提供http rest接口给前端调用。同时内部通过 Dubbo 实现 RPC调用服务提供者。
● yaml 定义:
● 服务消费者调用服务生产者
● 我们通过一个RESTfull接口,提供给前端调用。
总结
各种具体协议、注册中心、多注册中心、超时等配置可以查看官方文档http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
文章转载自公众号:码哥字节
