Dubbo架构
- 服务器负责启动 加载 运行服务提供者
- 服务提供者在启动时 向注册中心注册自己提供的服务
- 服务消费者在启动时 向注册中心订阅自己所需的服务
- 注册中心返回服务提供的地址列表给消费者 如果有变更 注册中心将基于长连接推送变更数据给消费者
- 服务消费者 从提供者地址列表中 基于负载均衡算法 选一台提供者进行调用 如果调用失败 再另选一台调用
- 服务消费者和提供者 在内存中累计调用次数和调用时间 定时每分钟发送一次统计数据到监控中心
服务注册中心Zookeeper
流程说明:
- 服务提供者privoder启动时:向/dubbo/com.foo.BarService/provider目录下写入自己的url
- 服务消费者启动时:订阅/dubbo/com.foo.BarService/provider 目录下提供者的URL 并向/dubbo/com.foo.BarService/consumers目录下写入自己的URL地址
- 监控中心启动时:订阅/dubbo/com.foo.BarService目录下的所有提供者和消费者的URL
Privoder 提供者
web.xml的配置
- Spring的监听器
- 自定义Spring的配置文件名称和文件的位置
Spring-service.xml
- dubbo应用名称
- 配置注册中心地址
- 配置服务者提供的服务协议和端口号
- 将指定包下的使用@Service注解标识的类注册为服务
Transaction.xml 事务管理
-
配置Druid的数据源
-
数据源装配到事务管理中
-
开启事务注解
-
将Jdk的动态代理改成Cglib的动态代理
proxy-target-class=“true”
-
在对应的接口实现类上
@Service(interfaceClass = xxxService.class) @Transactional
Maven_interface 实现代码复用降低耦合
- 新建Maven项目
- 写入各个项目都调用的service接口
- 将项目install到本地仓库中
- 各个项目在依赖中导入Maven的坐标和位置
Consumer 消费者
web.xml
- 配置SpringMVC的前端控制器
Spring-web.xml
-
配置工程名称
-
配置注册中心的地址
-
扫描组件
<dubbo:annotation package=""></dubbo:annotation>
-
配置检查消费者启动
<dubbo:consumer check="false"></dubbo:consumer>