1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

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

        v1.0.0 版本 的 features。

        1 支持與spring cloud 集成。

        2 支持異步請(qǐng)求。

        3 支持 eureka 注冊(cè)中心。

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

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

        6 支持SPI 動(dòng)態(tài)加載機(jī)制。

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

        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 獲取一個(gè)用戶(hù)
             * @param id
             * @return
             */
            User getUser(Long id);
        }
        

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

        2 在properties 文件添加如下配置

        protocol.name=rabbit
        protocol.port=20918
        

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

        3 在spring boot 啟動(dòng)入口,添加如下注解配置 @EnableRabbitRpcServices

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

        basePackages:接口定義包路徑

        如果是客戶(hù)端

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

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

        2 在spring boot 啟動(dòng)入口添加如下注解配置 @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包的根路徑。

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

        瀏覽 22
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧洲黄视频 | 97香蕉久久国产超碰青草专区 | 又大又粗又硬的视频 | 国产丝袜精品视频 | 360偷拍富婆做私密按摩 | 欧美天堂五月天 | 人妖欧美一区二区三区 | 国产精品老女人 | 蘑菇视频红色logo黑料 | 女生被c视频 |