扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
图例说明:
1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互。
2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点。
3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用。
4)图中只包含 RPC 的层,不包含 Remoting 的层,Remoting 整体都隐含在 Protocol 中。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了天水免费建站欢迎大家使用!
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: 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.consume
2)消费方配置
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)提供方服务接口
@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)消费方接口
@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);
}
}
该配置可以在服务提供方配置,也可以在服务消费方配置,这里演示在提供方的配置。
注解: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.TimeoutException
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
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流