一、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、核心依賴
#<!-- 这里包含了Zookeeper依赖和Dubbo依赖 --> <dependency> <groupid>com.alibaba.boot</groupid> <artifactid>dubbo-spring-boot-starter</artifactid> <version>0.2.0</version> </dependency>
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.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、服務遠端呼叫
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.Referenceorg.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)測試介面
服務逾時拋出例外
3、介面多版本配置
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() ; } }
以上是SpringBoot2.0如何實現RPC服務遠端呼叫的詳細內容。更多資訊請關注PHP中文網其他相關文章!