一、Dubbo框架简介
1、框架依赖

图例说明:
1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互。
2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点。
3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用。
4)图中只包含 RPC 的层,不包含 Remoting 的层,Remoting 整体都隐含在 Protocol 中。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了天水免费建站欢迎大家使用!
2、核心角色说明
1)Provider 暴露服务的服务提供方
2)Consumer 调用远程服务的服务消费方(负载均衡)
3)Registry 服务注册与发现的注册中心(监控、心跳、踢出、重入)
4)Monitor  服务消费者和提供者在内存中累计调用次数和调用时间,主动定时每分钟发送一次统计数据到监控中心。
5)Container    服务运行容器:远程调用、序列化
二、与SpringBoot2.0整合
1、核心依赖
    com.alibaba.boot 
    dubbo-spring-boot-starter 
    0.2.0 
 2、项目结构说明

结构说明
dubbo-consume:服务消费方
dubbo-provider:服务提供方
dubbo-common:公共代码块,Dubbo接口,实体类3、核心配置
1)提供方配置
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
  port: 7007
  connection-timeout: 5000ms
spring:
  application:
    name: block-dubbo-provider
# Dubbo 配置文件
dubbo:
  application:
    name: block-dubbo-provider
  registry:
    address: 127.0.0.1:2181
    protocol: zookeeper
  protocol:
    name: dubbo
    port: 20880
  scan:
    base-packages: com.boot.consume2)消费方配置
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
  port: 7008
  connection-timeout: 5000ms
spring:
  application:
    name: block-dubbo-consume
# Dubbo 配置文件
dubbo:
  application:
    name: block-dubbo-consume
  registry:
    address: 127.0.0.1:2181
    protocol: zookeeper三、演示案例
1、服务远程调用
1)提供方服务接口
- 注意这里的注解
- com.alibaba.dubbo.config.annotation.Service
@Service @Component public class DubboServiceImpl implements DubboService { private static Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ; @Override public String getInfo(String param) { LOGGER.info("字符参数:{}",param); return "[Hello,Cicada]"; } @Override public UserEntity getUserInfo(UserEntity userEntity) { LOGGER.info("实体类参数:{}",userEntity); return userEntity; } }2)消费方接口 - 注意这里注解
- com.alibaba.dubbo.config.annotation.Reference
- org.springframework.stereotype.Service
@Service public class ConsumeService implements DubboService { @Reference private DubboService dubboService ; @Override public String getInfo(String param) { return dubboService.getInfo(param); } @Override public UserEntity getUserInfo(UserEntity userEntity) { return dubboService.getUserInfo(userEntity); } }2、接口超时配置该配置可以在服务提供方配置,也可以在服务消费方配置,这里演示在提供方的配置。 
 注解:timeout
 1)服务接口注解@Service(timeout = 2000) @Component public class DubboServiceImpl implements DubboService { }2)消费方调用 @Override public String timeOut(Integer time) { return dubboService.timeOut(time); }3)测试接口 
 服务超时抛出异常com.alibaba.dubbo.remoting.TimeoutException3、接口多版本配置1)服务提供方 
 相同接口提供两个版本实现。注解:version。
 版本一:@Service(version = "1.0.0") @Component public class VersionOneImpl implements VersionService { @Override public String getVersion() { return "{当前版本:1.0.0}"; } }版本二: @Service(version = "2.0.0") @Component public class VersionTwoImpl implements VersionService { @Override public String getVersion() { return "{当前版本:2.0.0}"; } }2)消费方调用 
 通过@Reference(version)注解,将指向不同版本的接口实现。@Service public class VersionServiceImpl implements VersionService { @Reference(version = "1.0.0") private VersionService versionService1 ; @Reference(version = "2.0.0") private VersionService versionService2 ; @Override public String getVersion() { return versionService1.getVersion(); } public String version2 (){ return versionService2.getVersion() ; } }以上案例都是参照Dubbo官网的流程编写的,Dubbo许多强大功能都可以参考官网一步步的配置。 四、源代码地址GitHub地址:知了一笑 https://github.com/cicadasmile/middle-ware-parent 码云地址:知了一笑 https://gitee.com/cicadasmile/middle-ware-parent
 
网站名称:SpringBoot2整合Dubbo框架,实现RPC服务远程调用
链接地址:http://www.cqwzjz.cn/article/ihpjpc.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 