最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud之Ribbon使用示例解析

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

正文

Ribbon 是一個(gè)獨(dú)立的組件,是用來進(jìn)行遠(yuǎn)程接口調(diào)用的,代碼如下

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

然后在調(diào)用期間會(huì)存在負(fù)載均衡,micro-order 服務(wù)對(duì)應(yīng)有幾個(gè)服務(wù)實(shí)例就會(huì)根據(jù)負(fù)載均衡算法選擇某一個(gè)去調(diào)用。

1. 測(cè)試代碼

1.1. 啟動(dòng)兩個(gè)訂單服務(wù)

端口號(hào)分別為9011,9012

1.2. 改造獲取訂單接口

返回當(dāng)前服務(wù)實(shí)例的占用的端口號(hào),用來判斷當(dāng)前服務(wù)是哪個(gè)實(shí)例

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

1.3. 調(diào)用用戶服務(wù)的獲取訂單接口,

@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);
    }
}

會(huì)發(fā)現(xiàn),對(duì)訂單服務(wù)的調(diào)用會(huì)存在負(fù)載均衡,在兩個(gè)訂單服務(wù)之間 切來切去。

2. Ribbon 配置

2.1. Application.properties 配置

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

2.2 代碼配置

2.2.1. 使用@RibbonClients 加載針對(duì)某一個(gè)服務(wù)的ribbon配置

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

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

2.2.2. 配置 configuration

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

/*
* 這個(gè)類最好不要出現(xiàn)在啟動(dòng)類的@ComponentScan掃描范圍
* 如果出現(xiàn)在@ComponentScan掃描訪問,那么這個(gè)配置類就是每個(gè)服務(wù)共用的配置了
* */
@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;
    }
    /*
    * 判斷服務(wù)是否存活
    * 不建議使用
    * */
//    @Bean
//    public IPing iPing() {
//        //這個(gè)實(shí)現(xiàn)類會(huì)去調(diào)用服務(wù)來判斷服務(wù)是否存活
//        return new PingUrl();
//    }
    // 配置負(fù)載均衡,默認(rèn)是輪訓(xùn)
    @Bean
    public IRule ribbonRule() {
        //線性輪訓(xùn)
        new RoundRobinRule();
        //可以重試的輪訓(xùn)
        new RetryRule();
        //根據(jù)運(yùn)行情況來計(jì)算權(quán)重
        new WeightedResponseTimeRule();
        //過濾掉故障實(shí)例,選擇請(qǐng)求數(shù)最小的實(shí)例
        new BestAvailableRule();
        return new RandomRule();
    }
}

3.Ribbon 單獨(dú)使用

Ribbon 是一個(gè)獨(dú)立組件,可以脫離 springcloud 使用的.

有這兩個(gè)jar包就可以

以上就是SpringCloud之Ribbon使用示例解析的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud Ribbon使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring框架AOP基礎(chǔ)之代理模式詳解

    Spring框架AOP基礎(chǔ)之代理模式詳解

    代理模式(Proxy Parttern)為一個(gè)對(duì)象提供一個(gè)替身,來控制這個(gè)對(duì)象的訪問,即通過代理對(duì)象來訪問目標(biāo)對(duì)象。本文將通過示例詳細(xì)講解一下這個(gè)模式,需要的可以參考一下
    2022-11-11
  • Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過程詳解

    Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過程詳解

    這篇文章主要介紹了Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Spring AOP入門Demo分享

    Spring AOP入門Demo分享

    這篇文章主要介紹了Spring AOP入門Demo分享,涉及創(chuàng)建maven項(xiàng)目,編寫切面類,通過bean配置關(guān)聯(lián)等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java案例之HashMap集合存儲(chǔ)學(xué)生對(duì)象并遍歷

    Java案例之HashMap集合存儲(chǔ)學(xué)生對(duì)象并遍歷

    這篇文章主要介紹了Java案例之HashMap集合存儲(chǔ)學(xué)生對(duì)象并遍歷,創(chuàng)建一個(gè)HashMap集合,鍵是學(xué)號(hào)(String),值是學(xué)生對(duì)象(Student),存儲(chǔ)三個(gè)鍵值對(duì)元素并遍歷,下文具體操作需要的朋友可以參考一下
    2022-04-04
  • Java easyExcel實(shí)現(xiàn)導(dǎo)入多sheet的Excel

    Java easyExcel實(shí)現(xiàn)導(dǎo)入多sheet的Excel

    這篇文章主要為大家詳細(xì)介紹了如何使用Java easyExcel實(shí)現(xiàn)導(dǎo)入多sheet的Excel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-06-06
  • java如何通過IP解析地理位置

    java如何通過IP解析地理位置

    這篇文章主要介紹了java如何通過IP解析地理位置的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • java實(shí)現(xiàn)的n*n矩陣求值及求逆矩陣算法示例

    java實(shí)現(xiàn)的n*n矩陣求值及求逆矩陣算法示例

    這篇文章主要介紹了java實(shí)現(xiàn)的n*n矩陣求值及求逆矩陣算法,結(jié)合具體實(shí)例形式分析了java基于數(shù)組的矩陣定義、遍歷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • JavaAPI中BigInteger、BigDecimal的使用方法及應(yīng)用

    JavaAPI中BigInteger、BigDecimal的使用方法及應(yīng)用

    這篇文章主要給大家介紹了關(guān)于JavaAPI中BigInteger、BigDecimal的使用方法及應(yīng)用,BigInteger是Java中用于表示任意大小整數(shù)的類,它提供了加、減、乘、除等多種運(yùn)算方法,適用于大整數(shù)處理和高精度計(jì)算場(chǎng)景,需要的朋友可以參考下
    2024-11-11
  • springboot多文件或者文件夾壓縮成zip的方法

    springboot多文件或者文件夾壓縮成zip的方法

    最近碰到個(gè)需要下載zip壓縮包的需求,于是我在網(wǎng)上找了下別人寫好的zip工具類,下面通過本文給大家分享springboot多文件或者文件夾壓縮成zip的方法,感興趣的朋友一起看看吧
    2024-07-07
  • Java中ASCII到十六進(jìn)制的轉(zhuǎn)換指南

    Java中ASCII到十六進(jìn)制的轉(zhuǎn)換指南

    在軟件開發(fā)、網(wǎng)絡(luò)通信與底層系統(tǒng)交互中,ASCII 字符與十六進(jìn)制表示之間的轉(zhuǎn)換是一項(xiàng)基礎(chǔ)且高頻的操作,本文將從計(jì)算機(jī)編碼的底層邏輯出發(fā),結(jié)合 Java 平臺(tái)的特性,系統(tǒng)探討 ASCII 轉(zhuǎn)十六進(jìn)制的核心機(jī)制、應(yīng)用場(chǎng)景、設(shè)計(jì)考量與最佳實(shí)踐,需要的朋友可以參考下
    2026-05-05

最新評(píng)論

咸阳市| 察隅县| 天峻县| 安阳市| 富锦市| 祁门县| 永安市| 白河县| 乐东| 北碚区| 阿鲁科尔沁旗| 东乌珠穆沁旗| 开鲁县| 嫩江县| 南京市| 隆尧县| 察哈| 漳平市| 凤山县| 定南县| 株洲县| 阿克陶县| 武穴市| 崇信县| 牡丹江市| 会东县| 武功县| 额尔古纳市| 年辖:市辖区| 襄垣县| 深水埗区| 新乐市| 故城县| 西贡区| 田东县| 朝阳市| 浦东新区| 图们市| 柞水县| 华容县| 南京市|