日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用

發(fā)布時(shí)間:2025/3/17 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Dubbo框架簡介

1、框架依賴


圖例說明:
1)圖中小方塊 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表層或模塊,藍(lán)色的表示與業(yè)務(wù)有交互,綠色的表示只對 Dubbo 內(nèi)部交互。
2)圖中背景方塊 Consumer, Provider, Registry, Monitor 代表部署邏輯拓?fù)涔?jié)點(diǎn)。
3)圖中藍(lán)色虛線為初始化時(shí)調(diào)用,紅色虛線為運(yùn)行時(shí)異步調(diào)用,紅色實(shí)線為運(yùn)行時(shí)同步調(diào)用。
4)圖中只包含 RPC 的層,不包含 Remoting 的層,Remoting 整體都隱含在 Protocol 中。

2、核心角色說明

1)Provider 暴露服務(wù)的服務(wù)提供方
2)Consumer 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方(負(fù)載均衡)
3)Registry 服務(wù)注冊與發(fā)現(xiàn)的注冊中心(監(jiān)控、心跳、踢出、重入)
4)Monitor 服務(wù)消費(fèi)者和提供者在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,主動(dòng)定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。
5)Container 服務(wù)運(yùn)行容器:遠(yuǎn)程調(diào)用、序列化

二、與SpringBoot2.0整合

1、核心依賴

<!-- 這里包含了Zookeeper依賴和Dubbo依賴 --> <dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version> </dependency>

2、項(xiàng)目結(jié)構(gòu)說明


結(jié)構(gòu)說明

dubbo-consume:服務(wù)消費(fèi)方 dubbo-provider:服務(wù)提供方 dubbo-common:公共代碼塊,Dubbo接口,實(shí)體類

3、核心配置

1)提供方配置

server:tomcat:uri-encoding: UTF-8max-threads: 1000min-spare-threads: 30port: 7007connection-timeout: 5000ms spring:application:name: block-dubbo-provider # Dubbo 配置文件 dubbo:application:name: block-dubbo-providerregistry:address: 127.0.0.1:2181protocol: zookeeperprotocol:name: dubboport: 20880scan:base-packages: com.boot.consume

2)消費(fèi)方配置

server:tomcat:uri-encoding: UTF-8max-threads: 1000min-spare-threads: 30port: 7008connection-timeout: 5000msspring:application:name: block-dubbo-consume # Dubbo 配置文件 dubbo:application:name: block-dubbo-consumeregistry:address: 127.0.0.1:2181protocol: zookeeper

三、演示案例

1、服務(wù)遠(yuǎn)程調(diào)用

1)提供方服務(wù)接口

  • 注意這里的注解
  • com.alibaba.dubbo.config.annotation.Service
@Service @Component public class DubboServiceImpl implements DubboService {private static Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ;@Overridepublic String getInfo(String param) {LOGGER.info("字符參數(shù):{}",param);return "[Hello,Cicada]";}@Overridepublic UserEntity getUserInfo(UserEntity userEntity) {LOGGER.info("實(shí)體類參數(shù):{}",userEntity);return userEntity;} }

2)消費(fèi)方接口

  • 注意這里注解
  • com.alibaba.dubbo.config.annotation.Reference
  • org.springframework.stereotype.Service
@Service public class ConsumeService implements DubboService {@Referenceprivate DubboService dubboService ;@Overridepublic String getInfo(String param) {return dubboService.getInfo(param);}@Overridepublic UserEntity getUserInfo(UserEntity userEntity) {return dubboService.getUserInfo(userEntity);} }

2、接口超時(shí)配置

該配置可以在服務(wù)提供方配置,也可以在服務(wù)消費(fèi)方配置,這里演示在提供方的配置。
注解:timeout
1)服務(wù)接口注解

@Service(timeout = 2000) @Component public class DubboServiceImpl implements DubboService { }

2)消費(fèi)方調(diào)用

@Overridepublic String timeOut(Integer time) {return dubboService.timeOut(time);}

3)測試接口
服務(wù)超時(shí)拋出異常

com.alibaba.dubbo.remoting.TimeoutException

3、接口多版本配置

1)服務(wù)提供方
相同接口提供兩個(gè)版本實(shí)現(xiàn)。注解:version。
版本一:

@Service(version = "1.0.0") @Component public class VersionOneImpl implements VersionService {@Overridepublic String getVersion() {return "{當(dāng)前版本:1.0.0}";} }

版本二:

@Service(version = "2.0.0") @Component public class VersionTwoImpl implements VersionService {@Overridepublic String getVersion() {return "{當(dāng)前版本:2.0.0}";} }

2)消費(fèi)方調(diào)用
通過@Reference(version)注解,將指向不同版本的接口實(shí)現(xiàn)。

@Service public class VersionServiceImpl implements VersionService {@Reference(version = "1.0.0")private VersionService versionService1 ;@Reference(version = "2.0.0")private VersionService versionService2 ;@Overridepublic String getVersion() {return versionService1.getVersion();}public String version2 (){return versionService2.getVersion() ;} }

以上案例都是參照Dubbo官網(wǎng)的流程編寫的,Dubbo許多強(qiáng)大功能都可以參考官網(wǎng)一步步的配置。

四、源代碼地址

GitHub地址:知了一笑 https://github.com/cicadasmile/middle-ware-parent 碼云地址:知了一笑 https://gitee.com/cicadasmile/middle-ware-parent


總結(jié)

以上是生活随笔為你收集整理的SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。