欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot2.0 整合 Dubbo框架實現(xiàn)RPC服務遠程調用方法

 更新時間:2019年07月08日 08:44:19   作者:知了一笑  
這篇文章主要介紹了SpringBoot2.0 整合 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 服務消費者和提供者在內存中累計調用次數和調用時間,主動定時每分鐘發(fā)送一次統(tǒng)計數據到監(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("字符參數:{}",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)測試接口

服務超時拋出異常

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官網的流程編寫的,Dubbo許多強大功能都可以參考官網一步步的配置。

四、源代碼地址

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

總結

以上所述是小編給大家介紹的SpringBoot2.0 整合 Dubbo框架 實現(xiàn)RPC服務遠程調用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • java面向對象之學生信息管理系統(tǒng)

    java面向對象之學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java面向對象之學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 關于SpringSecurity的基本使用示例

    關于SpringSecurity的基本使用示例

    這篇文章主要介紹了關于SpringSecurity的基本使用示例,SpringSecurity 本質是一個過濾器鏈SpringSecurity 采用的是責任鏈的設計模式,它有一條很長的過濾器鏈,需要的朋友可以參考下
    2023-05-05
  • 通過Java實現(xiàn)反向代理集群服務的平滑分配

    通過Java實現(xiàn)反向代理集群服務的平滑分配

    這篇文章主要介紹了如何通過Java語言,自己編寫的平滑加權輪詢算法,結合線程池和Socket?網絡編程等,并實現(xiàn)反向代理集群服務的平滑分配,需要的可以參考一下
    2022-04-04
  • java ArrayList中的remove方法介紹

    java ArrayList中的remove方法介紹

    大家好,本篇文章主要講的是java ArrayList中的remove方法介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • ReentrantLock源碼詳解--公平鎖、非公平鎖

    ReentrantLock源碼詳解--公平鎖、非公平鎖

    ReentrantLock重入鎖,是實現(xiàn)Lock接口的一個類,也是在實際編程中使用頻率很高的一個鎖,表示能夠對共享資源能夠重復加鎖,即當前線程獲取該鎖再次獲取不會被阻塞。下面我們來深入了解一下它吧
    2019-06-06
  • Java中如何使用Redis GEO測算經緯度距離

    Java中如何使用Redis GEO測算經緯度距離

    GEO也是Redis中提供的一種數據類型,可以將其理解成ZSet有序集合類型,本文給大家介紹Java-使用Redis GEO測算經緯度距離,感興趣的朋友一起看看吧
    2023-11-11
  • IDEA 單元測試覆蓋技巧分享

    IDEA 單元測試覆蓋技巧分享

    這篇文章主要介紹了IDEA 單元測試覆蓋技巧分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project

    IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project

    這篇文章主要介紹了IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • mybatis的mapper.xml中resultMap標簽的使用詳解

    mybatis的mapper.xml中resultMap標簽的使用詳解

    這篇文章主要介紹了mybatis的mapper.xml中resultMap標簽的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java并發(fā)編程之Semaphore詳解

    Java并發(fā)編程之Semaphore詳解

    這篇文章主要介紹了Java并發(fā)編程之Semaphore詳解,Semaphore信號量可以用來控制同時訪問特定資源的線程數量,常用于限流場景,Semaphore接收一個int整型值,表示 許可證數量,需要的朋友可以參考下
    2023-11-11

最新評論