本文共 4016 字,大约阅读时间需要 13 分钟。
本文源码: ||
1)Provider 暴露服务的服务提供方
2)Consumer 调用远程服务的服务消费方(负载均衡)3)Registry 服务注册与发现的注册中心(监控、心跳、踢出、重入)4)Monitor 服务消费者和提供者在内存中累计调用次数和调用时间,主动定时每分钟发送一次统计数据到监控中心。5)Container 服务运行容器:远程调用、序列化com.alibaba.boot dubbo-spring-boot-starter 0.2.0
dubbo-consume:服务消费方dubbo-provider:服务提供方dubbo-common:公共代码块,Dubbo接口,实体类
1)提供方配置
server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 port: 7007 connection-timeout: 5000msspring: 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.consume
2)消费方配置
server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 port: 7008 connection-timeout: 5000msspring: application: name: block-dubbo-consume# Dubbo 配置文件dubbo: application: name: block-dubbo-consume registry: address: 127.0.0.1:2181 protocol: zookeeper
1)提供方服务接口
@Service@Componentpublic 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)消费方接口
@Servicepublic 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); }}
该配置可以在服务提供方配置,也可以在服务消费方配置,这里演示在提供方的配置。
注解:timeout1)服务接口注解@Service(timeout = 2000)@Componentpublic class DubboServiceImpl implements DubboService {}
2)消费方调用
@Override public String timeOut(Integer time) { return dubboService.timeOut(time); }
3)测试接口
服务超时抛出异常com.alibaba.dubbo.remoting.TimeoutException
1)服务提供方
相同接口提供两个版本实现。注解:version。版本一:@Service(version = "1.0.0")@Componentpublic class VersionOneImpl implements VersionService { @Override public String getVersion() { return "{当前版本:1.0.0}"; }}
版本二:
@Service(version = "2.0.0")@Componentpublic class VersionTwoImpl implements VersionService { @Override public String getVersion() { return "{当前版本:2.0.0}"; }}
2)消费方调用
通过@Reference(version)注解,将指向不同版本的接口实现。@Servicepublic 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
阅读标签
【】【】【】【】【】
【】【】【】【】【】【】【】【 】推荐阅读:编程体系分类整理
序号 | 项目名称 | GitHub地址 | GitEE地址 | 推荐指数 |
---|---|---|---|---|
01 | Java描述设计模式,算法,数据结构 | ☆☆☆☆☆ | ||
02 | Java基础、并发、面向对象、Web开发 | ☆☆☆☆ | ||
03 | SpringCloud微服务基础组件案例详解 | ☆☆☆ | ||
04 | SpringCloud微服务架构实战综合案例 | ☆☆☆☆☆ | ||
05 | SpringBoot框架基础应用入门到进阶 | ☆☆☆☆ | ||
06 | SpringBoot框架整合开发常用中间件 | ☆☆☆☆☆ | ||
07 | 数据管理、分布式、架构设计基础案例 | ☆☆☆☆☆ | ||
08 | 大数据系列、存储、组件、计算等框架 | ☆☆☆☆☆ |
转载地址:http://unqkz.baihongyu.com/