SpringBoot整合Dubbo框架,實現(xiàn)RPC服務遠程調用
一、Dubbo框架簡介
1、框架依賴

圖例說明:
1)圖中小方塊 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表層或模塊,藍色的表示與業(yè)務有交互,綠色的表示只對 Dubbo 內部交互。
2)圖中背景方塊 Consumer, Provider, Registry, Monitor 代表部署邏輯拓撲節(jié)點。
3)圖中藍色虛線為初始化時調用,紅色虛線為運行時異步調用,紅色實線為運行時同步調用。
4)圖中只包含 RPC 的層,不包含 Remoting 的層,Remoting 整體都隱含在 Protocol 中。
2、核心角色說明
1)Provider 暴露服務的服務提供方
2)Consumer 調用遠程服務的服務消費方(負載均衡)
3)Registry 服務注冊與發(fā)現(xiàn)的注冊中心(監(jiān)控、心跳、踢出、重入)
4)Monitor 服務消費者和提供者在內存中累計調用次數(shù)和調用時間,主動定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。
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("字符參數(shù):{}",param);
return "[Hello,Cicada]";
}
@Override
public UserEntity getUserInfo(UserEntity userEntity) {
LOGGER.info("實體類參數(shù):{}",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.TimeoutException
3、接口多版本配置
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)消費方調用
通過@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
以上就是SpringBoot整合Dubbo框架,實現(xiàn)RPC服務遠程調用的詳細內容,更多關于SpringBoot整合Dubbo框架的資料請關注腳本之家其它相關文章!
相關文章
2023最新版IDEA創(chuàng)建javaweb項目的詳細圖文教程
之前用的社區(qū)版IDEA無法部署JavaWeb項目,于是裝了一個最新版的IDEA,下面這篇文章主要給大家介紹了關于2023最新版IDEA創(chuàng)建javaweb項目的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-06-06
springboot+vue+elementsUI實現(xiàn)分角色注冊登錄界面功能
這篇文章主要給大家介紹了關于springboot+vue+elementsUI實現(xiàn)分角色注冊登錄界面功能的相關資料,Spring?Boot和Vue.js是兩個非常流行的開源框架,可以用來構建Web應用程序,需要的朋友可以參考下2023-07-07
SpringBoot整合Redis使用@Cacheable和RedisTemplate
本文主要介紹了SpringBoot整合Redis使用@Cacheable和RedisTemplate,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
Redis 訂閱發(fā)布_Jedis實現(xiàn)方法
下面小編就為大家?guī)硪黄猂edis 訂閱發(fā)布_Jedis實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
Spring Cloud Hystrix實現(xiàn)服務容錯的方法
Hystrix是SpringCloud中重要的熔斷保護組件,由Netflix開源,主要提供延遲和容錯管理,以保障分布式系統(tǒng)的高可用性和魯棒性,通過封裝依賴項實現(xiàn)服務間隔離,引入回退邏輯應對依賴服務故障,有效防止系統(tǒng)崩潰和服務級聯(lián)故障2024-10-10

