圖例說明:
1)圖中小方塊 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表層或模塊,藍色的表示與業(yè)務有交互,綠色的表示只對 Dubbo 內(nèi)部交互。
2)圖中背景方塊 Consumer, Provider, Registry, Monitor 代表部署邏輯拓撲節(jié)點。
3)圖中藍色虛線為初始化時調(diào)用,紅色虛線為運行時異步調(diào)用,紅色實線為運行時同步調(diào)用。
4)圖中只包含 RPC 的層,不包含 Remoting 的層,Remoting 整體都隱含在 Protocol 中。
1)Provider 暴露服務的服務提供方
2)Consumer 調(diào)用遠程服務的服務消費方(負載均衡)
3)Registry 服務注冊與發(fā)現(xiàn)的注冊中心(監(jiān)控、心跳、踢出、重入)
4)Monitor 服務消費者和提供者在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,主動定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。
5)Container 服務運行容器:遠程調(diào)用、序列化
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
結(jié)構(gòu)說明
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("字符參數(shù):{}",param);
return "[Hello,Cicada]";
}
@Override
public UserEntity getUserInfo(UserEntity userEntity) {
LOGGER.info("實體類參數(shù):{}",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)消費方調(diào)用
@Override
public String timeOut(Integer time) {
return dubboService.timeOut(time);
}
3)測試接口
服務超時拋出異常
com.alibaba.dubbo.remoting.TimeoutException
1)服務提供方
相同接口提供兩個版本實現(xiàn)。注解: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)消費方調(diào)用
通過@Reference(version)注解,將指向不同版本的接口實現(xiàn)。
@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官網(wǎng)的流程編寫的,Dubbo許多強大功能都可以參考官網(wǎng)一步步的配置。
GitHub地址:知了一笑
https://github.com/cicadasmile/middle-ware-parent
碼云地址:知了一笑
https://gitee.com/cicadasmile/middle-ware-parent
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。