<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RabbitRpc基于 spring cloud 的微服務(wù) rpc 調(diào)用

          聯(lián)合創(chuàng)作 · 2023-09-28 04:47

          Spring Cloud RabbitRpc 是基于 spring cloud 的微服務(wù) rpc 調(diào)用。

          組件介紹

          目前微服務(wù)應(yīng)用和開發(fā)已經(jīng)成為主流,遠程調(diào)用,服務(wù)治理方面我們通常有兩個選擇,spring cloud 和 ali 的dubbo,spring cloud 提供了非常容易上手的全家桶模式,也是目前很多公司的選擇,在遠程調(diào)用方面基于openfeign實現(xiàn),底層邏輯是 http 協(xié)議,所以被一些人稱為偽 rpc,而選用 dubbo吧,生態(tài)不是很完整,ali 內(nèi)部更多卻在使用HSF 和 dubbo從遠程調(diào)用方面和服務(wù)治理方面 HSF的用戶多一些,但是HSF沒有開源,ali 也出了 spring cloud alibaba 版本。但是在一些需求上面趨向于商業(yè)化,很多公司不想上船,在并發(fā)要求不是很高的環(huán)境下,基于 http 協(xié)議的遠程調(diào)用無可厚非,但是如果要構(gòu)建高并發(fā)應(yīng)用,http 協(xié)議的解析效率低,同步等待問題就成了遠程調(diào)用的性能瓶頸。很多公司為了滿足需求,也有spring cloud 和 dubbo并存的奇葩方案。

          rabbitrpc 為解決這一需求而設(shè)計,既有dubbo的性能又能滿足在 spring cloud生態(tài)里輕松集成使用。

          v1.0.0 版本 的 features。

          1 支持與spring cloud 集成。

          2 支持異步請求。

          3 支持 eureka 注冊中心。

          4 自定義 rabbit 協(xié)議,請求頭只有15個字節(jié)。

          5 序列化 支持 hessian,后續(xù)會加入protolbuf實現(xiàn)

          6 支持SPI 動態(tài)加載機制。

          7 支持一個應(yīng)用雙端口,支持rabbit,http雙協(xié)議,根據(jù)需要來選擇。

          quick start

          maven 引入 rabbitrpc-spring-boot-starte

                  <dependency>
                      <groupId>com.yixiu.rabbitrpc</groupId>
                      <artifactId>rabbitrpc-spring-boot-starter</artifactId>
                      <version>1.0.0-SNAPSHOT</version>
                  </dependency>
          

          如果是服務(wù)端 1 需要提供api,需要定義如下,在提供的接口上添加注解配置。

          @RabbitRpcClient(facadeId = "userService",facadeType = "com.yixiu.server.api.facade.UserFacade",name = "rabbitrpc-user-server",group = "rabbit")
          public interface UserFacade {
              /**
               * 根據(jù)id 獲取一個用戶
               * @param id
               * @return
               */
              User getUser(Long id);
          }
          

          一般常用配置解釋 facadeId:接口id facadeType:接口類型 name:服務(wù)名稱 group:分組名稱

          2 在properties 文件添加如下配置

          protocol.name=rabbit
          protocol.port=20918
          

          protocol.name 定義 rabbitrpc 要使用的協(xié)議,protocol.por 服務(wù)端開放監(jiān)聽的端口號。

          3 在spring boot 啟動入口,添加如下注解配置 @EnableRabbitRpcServices

          @EnableEurekaClient
          @EnableDiscoveryClient
          @SpringBootApplication
          @EnableRabbitRpcServices(basePackages = "com.yixiu.server.api")
          public class RabbitRpcServerApplication {
              public static void main(String[] args) {
                  SpringApplication.run(RabbitRpcServerApplication.class);
              }
          }
          
          

          basePackages:接口定義包路徑

          如果是客戶端

          1 只需要將服務(wù)端提供的 api 引入,例如。

                  <dependency>
                      <groupId>org.example</groupId>
                      <artifactId>rabbitrpc-server-api</artifactId>
                      <version>1.0-SNAPSHOT</version>
                  </dependency>
          
          

          2 在spring boot 啟動入口添加如下注解配置 @EnableRabbitRpcClients

          @EnableEurekaClient
          @EnableDiscoveryClient
          @SpringBootApplication
          @EnableRabbitRpcClients(basePackages = "com.yixiu.server")
          public class RabbitClientApplication {
              public static void main(String[] args) {
                  SpringApplication.run(RabbitClientApplication.class);
              }
          }
          
          

          basePackages: 即api jar包的根路徑。

          如上配置完成就可以像本地方法一樣使用遠程服務(wù)了。

          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本一级片在线播放 | 日韩一级精品视频 | 亚洲午夜久久久久久久久红桃 | 超碰97人人操 | 中文字幕日产A片在线看 |