亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringCloud之Ribbon使用示例解析

 更新時間:2023年06月22日 10:06:19   作者:天還下著毛毛雨  
這篇文章主要為大家介紹了SpringCloud之Ribbon使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

Ribbon 是一個獨立的組件,是用來進行遠程接口調用的,代碼如下

通過 getForObject 方法可以掉到用 micro-order 服務的,order/list 接口。

然后在調用期間會存在負載均衡,micro-order 服務對應有幾個服務實例就會根據負載均衡算法選擇某一個去調用。

1. 測試代碼

1.1. 啟動兩個訂單服務

端口號分別為9011,9012

1.2. 改造獲取訂單接口

返回當前服務實例的占用的端口號,用來判斷當前服務是哪個實例

@RequestMapping("/order")
@RestController
public class OrderController {
    @Value("${server.port}")
    String port;
    @GetMapping("/list")
    public String getOrderList(String username) {
        return "該服務端口號:" + port + ",這是用戶 :" + username + " 所有的訂單信息";
    }
}

1.3. 調用用戶服務的獲取訂單接口,

@RequestMapping("/user")
@RestController
public class UserController {
    @Autowired
    private RestTemplate restTemplate;
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    @GetMapping("/orderList")
    public String getOrderList(String username) {
        return restTemplate.getForObject("http://" + "micro-order" + "/order/list?username=" + username, String.class);
    }
}

會發(fā)現,對訂單服務的調用會存在負載均衡,在兩個訂單服務之間 切來切去。

2. Ribbon 配置

2.1. Application.properties 配置

# 關閉 ribbon 訪問注冊中心 Eureka Server 發(fā)現服務,但是服務依舊會注冊。
#true 使用 eureka false 不使用。如果是false,那么表示要調用的服務列表從下面這個參數中獲取,不然就從eureka-server中獲取,這樣擴容服務提供方的話,需要改配置文件與動態(tài)擴容的理念相悖,不建議大家使用
ribbon.eureka.enabled=true
spring.cloud.loadbalancer.retry.enabled=true
###指定調用的節(jié)點
###ribbon.eureka.enabled=false
##micro-order.ribbon.listOfServers=localhost:8001
##單位 ms ,請求連接超時時間
#micro-order.ribbon.ConnectTimeout=1000
##單位 ms ,請求處理的超時時間
#micro-order.ribbon.ReadTimeout=2000
#micro-order.ribbon.OkToRetryOnAllOperations=true
##切換實例的重試次數
#micro-order.ribbon.MaxAutoRetriesNextServer=2
##對當前實例的重試次數 當 Eureka 中可以找到服務,但是服務連不上時將會重試
#micro-order.ribbon.MaxAutoRetries=2
##配置負載均衡
#micro.order.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
#micro-order.ribbon.NFLoadBalancerPingClassName=com.netflix.loadbalancer.PingUrl

2.2 代碼配置

2.2.1. 使用@RibbonClients 加載針對某一個服務的ribbon配置

這個配置類只針對 micro-order 服務,微服務系統(tǒng)里面有很多服務,這就可以區(qū)別化配置。

/*
* 這個是針對 micro-order服務的 ribbon配置
* */
@Configuration
@RibbonClients(value = {
        @RibbonClient(name = "micro-order",configuration = RibbonLoadBalanceMicroOrderConfig.class)
})
// 也可以這樣,只加載一個針對某個服務的ribbon配置
//@RibbonClient(name = "micro-order",configuration = RibbonLoadBalanceMicroOrderConfig.class
public class LoadBalanceConfig {
}

2.2.2. 配置 configuration

配置類的時候,一定要注意,配置類不能陪@ComponentScan 注解掃描到,如果被掃描到了則該配置類就是所有服務共用的配置了。

/*
* 這個類最好不要出現在啟動類的@ComponentScan掃描范圍
* 如果出現在@ComponentScan掃描訪問,那么這個配置類就是每個服務共用的配置了
* */
@Configuration
public class RibbonLoadBalanceMicroOrderConfig {
//    @RibbonClientName
    private String name = "micro-order";
    @Bean
    @ConditionalOnClass
    public IClientConfig defaultClientConfigImpl() {
        DefaultClientConfigImpl config = new DefaultClientConfigImpl();
        config.loadProperties(name);
        config.set(CommonClientConfigKey.MaxAutoRetries,2);
        config.set(CommonClientConfigKey.MaxAutoRetriesNextServer,2);
        config.set(CommonClientConfigKey.ConnectTimeout,2000);
        config.set(CommonClientConfigKey.ReadTimeout,4000);
        config.set(CommonClientConfigKey.OkToRetryOnAllOperations,true);
        return config;
    }
    /*
    * 判斷服務是否存活
    * 不建議使用
    * */
//    @Bean
//    public IPing iPing() {
//        //這個實現類會去調用服務來判斷服務是否存活
//        return new PingUrl();
//    }
    // 配置負載均衡,默認是輪訓
    @Bean
    public IRule ribbonRule() {
        //線性輪訓
        new RoundRobinRule();
        //可以重試的輪訓
        new RetryRule();
        //根據運行情況來計算權重
        new WeightedResponseTimeRule();
        //過濾掉故障實例,選擇請求數最小的實例
        new BestAvailableRule();
        return new RandomRule();
    }
}

3.Ribbon 單獨使用

Ribbon 是一個獨立組件,可以脫離 springcloud 使用的.

有這兩個jar包就可以

以上就是SpringCloud之Ribbon使用示例解析的詳細內容,更多關于SpringCloud Ribbon使用的資料請關注腳本之家其它相關文章!

相關文章

  • Maven鏡像地址配置示例大全

    Maven鏡像地址配置示例大全

    這篇文章主要介紹了Maven鏡像地址配置示例大全,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-06-06
  • java -jar命令的具體使用

    java -jar命令的具體使用

    java -jar命令是一種方便快捷地在命令行中運行Java可執(zhí)行jar文件的方法,本文主要介紹了java -jar命令的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java實現用Mysql存取圖片操作實例

    Java實現用Mysql存取圖片操作實例

    這篇文章主要介紹了Java實現用Mysql存取圖片操作實例,本文講解了使用BLOB類型保存和讀取圖片的代碼實例,需要的朋友可以參考下
    2015-06-06
  • SpringBoot獲取客戶端的IP地址的實現示例

    SpringBoot獲取客戶端的IP地址的實現示例

    在Web應用程序中,獲取客戶端的IP地址是一項非常常見的需求,本文主要介紹了SpringBoot獲取客戶端的IP地址的實現示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java替換中使用正則表達式實現中間模糊匹配的方法

    Java替換中使用正則表達式實現中間模糊匹配的方法

    今天小編就為大家分享一篇Java替換中使用正則表達式實現中間模糊匹配的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java 抽象類特點總結

    Java 抽象類特點總結

    在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類
    2021-10-10
  • springboot中如何實現kafa指定offset消費

    springboot中如何實現kafa指定offset消費

    這篇文章主要介紹了springboot中如何實現kafa指定offset消費,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Mybatis-Plus的應用場景描述及注入SQL原理分析

    Mybatis-Plus的應用場景描述及注入SQL原理分析

    MyBatis-Plus是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生,本文重點給大家介紹Mybatis-Plus的應用場景及注入SQL原理分析,感興趣的朋友跟隨小編一起學習吧
    2021-05-05
  • java json與map互相轉換的示例

    java json與map互相轉換的示例

    這篇文章主要介紹了java json與map互相轉換的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • 關于注解式的分布式Elasticsearch的封裝案例

    關于注解式的分布式Elasticsearch的封裝案例

    這篇文章主要介紹了關于注解式的分布式Elasticsearch的封裝案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論