<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      全部文章

      5.Ribbon

      通過上面的學習,我們知道eureka可以實現(xiàn)多服務之間的相互注冊調用但是多個"相同服務"之間又該怎么管理呢?

      經過以上的學習,已經實現(xiàn)了服務的注冊和服務發(fā)現(xiàn)。當啟動某個服務的時候,可以通過HTTP的形式
      將信息注冊到注冊中心,并且可以通過SpringCloud提供的工具獲取注冊中心的服務列表。但是服務之
      間的調用還存在很多的問題,如何更加方便的調用微服務,多個微服務的提供者如何選擇,如何負載均
      衡等。

       Ribbon概述

      什么是Ribbon

      是 Netflflixfa 發(fā)布的一個負載均衡器,有助于控制 HTTP 和 TCP客戶端行為。在 SpringCloud 中,
      Eureka一般配合Ribbon進行使用,Ribbon提供了客戶端負載均衡的功能,Ribbon利用從Eureka中讀
      取到的服務信息,在調用服務節(jié)點提供的服務時,會合理的進行負載。
      在SpringCloud中可以將注冊中心和Ribbon配合使用,Ribbon自動的從注冊中心中獲取服務提供者的
      列表信息,并基于內置的負載均衡算法,請求服務

      Ribbon的主要作用

      (1)服務調用
      基于Ribbon實現(xiàn)服務調用, 是通過拉取到的所有服務列表組成(服務名-請求路徑的)映射關系。借助
      RestTemplate 最終進行調用
      (2)負載均衡
      當有多個服務提供者時,Ribbon可以根據負載均衡的算法自動的選擇需要調用的服務地址

      基于Ribbon實現(xiàn)訂單調用商品服務

      不論是基于Eureka的注冊中心還是基于Consul的注冊中心,SpringCloudRibbon統(tǒng)一進行了封裝,所
      以對于服務調用,兩者的方式是一樣的。

       坐標依賴

      在springcloud提供的服務發(fā)現(xiàn)(eureka)的jar中以及包含了Ribbon的依賴。所以這里不需要導入任何額外的坐標

       工程改造

      (1) 服務消費者
      修改服務消費者 order_service模塊中的啟動類OrderApplication ,在創(chuàng)建RestTemplate方法
      上添加 @LoadBalanced 注解 :

       

       修改controller代碼:

          /**
           * 基于Ribbon的形式調用遠程微服務
           * 1.在啟動類里面使用@LoadBalanced聲明RestTemplate
           * 2.使用服務名替換IP地址
           */
          @RequestMapping(value = "/buybuybuy/{id}", method = RequestMethod.GET)
          public Product findById3(@PathVariable Long id) {
      //        Product product = restTemplate.getForObject("http://127.0.0.1:9001/product/findById/1", Product.class);
              Product product = restTemplate.getForObject("http://service-product/product/findById/1", Product.class);
              return product;
          }

      服務調用Ribbon高級 

      負載均衡概述

      在搭建網站時,如果單節(jié)點的 web服務性能和可靠性都無法達到要求;或者是在使用外網服務時,經常
      擔心被人攻破,一不小心就會有打開外網端口的情況,通常這個時候加入負載均衡就能有效解決服務問
      題。
      負載均衡是一種基礎的網絡服務,其原理是通過運行在前面的負載均衡服務,按照指定的負載均衡算
      法,將流量分配到后端服務集群上,從而為系統(tǒng)提供并行擴展的能力。
      負載均衡的應用場景包括流量包、轉發(fā)規(guī)則以及后端服務,由于該服務有內外網個例、健康檢查等功
      能,能夠有效提供系統(tǒng)的安全性和可用性

       

      客戶端負載均衡與服務端負載均衡

      服務端負載均衡
      先發(fā)送請求到負載均衡服務器或者軟件,然后通過負載均衡算法,在多個服務器之間選擇一個進行訪
      問;即在服務器端再進行負載均衡算法分配
      客戶端負載均衡
      客戶端會有一個服務器地址列表,在發(fā)送請求前通過負載均衡算法選擇一個服務器,然后進行訪問,這
      是客戶端負載均衡;即在客戶端就進行負載均衡算法分配

      基于Ribbon實現(xiàn)負載均衡(客戶端負載均衡)

      Ribbon是一個典型的客戶端負載均衡器,Ribbon會獲取服務的所有地址,根據內部的負載均衡算法,獲取本次請求的有效地址

      搭建多服務實例:

      1.建立兩個商品服務9001,9011;

      2.在訂單服務中以負載均衡的方式調用商品服務

          @RequestMapping(value = "/buybuybuy/{id}", method = RequestMethod.GET)
          public Product findById3(@PathVariable Long id) {
      //        Product product = restTemplate.getForObject("http://127.0.0.1:9001/product/findById/1", Product.class);
              Product product = restTemplate.getForObject("http://service-product/product/findById/1", Product.class);//ribbon已經默認開啟負載均衡訪問
              return product;
          }

      3.通過訂單服務訪問商品服務:

       

       

       通過上面我們可以發(fā)現(xiàn),ribbon默認會對多個服務進行輪詢訪問

      ribbon負載均衡策略

      Ribbon內置了多種負載均衡策略,內部負責復雜均衡的頂級接口為
      com.netflix.loadbalancer.IRule ,實現(xiàn)方式如下

      com.netflix.loadbalancer.RoundRobinRule :以輪詢的方式進行負載均衡。(默認)
      com.netflix.loadbalancer.RandomRule :隨機策略
      com.netflix.loadbalancer.RetryRule :重試策略。
      com.netflix.loadbalancer.WeightedResponseTimeRule :權重策略。會計算每個服務的權
      重,越高的被調用的可能性越大。
      com.netflix.loadbalancer.BestAvailableRule :最佳策略。遍歷所有的服務實例,過濾掉
      故障實例,并返回請求數最小的實例返回。
      com.netflix.loadbalancer.AvailabilityFilteringRule :可用過濾策略。過濾掉故障和請
      求數超過閾值的服務實例,再從剩下的實力中輪詢調用。
      服務消費者的application.yml配置文件中修改負載均衡策略 :
      ##需要調用的微服務名稱
      service-product:
       ribbon:
         NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
      策略選擇:
      1、如果每個機器配置一樣,則建議不修改策略 (推薦)
      2、如果部分機器配置強部分配置低,則可以改為 WeightedResponseTimeRule

      ribbon請求重試

      在負載均衡的時候訪問某個服務,如果在指定時間內沒有獲得響應,那么ribbon會立即重試訪問其他節(jié)點:

       

       重試配置:

      1.消費者引入spring重試依賴

      2.在消費者yml文件里對ribbon進行重試配置

      <dependency>
      <groupId>org.springframework.retry</groupId>
      <artifactId>spring-retry</artifactId>
      </dependency>
      #ribbon重試機制配置
      service-product:
        ribbon:
          ConnectTimeout: 250 # Ribbon的連接超時時間(毫秒)
          ReadTimeout: 1000 # Ribbon的數據讀取超時時間(毫秒)
          OkToRetryOnAllOperations: true # 是否對所有操作都進行重試
          MaxAutoRetriesNextServer: 1 # 切換實例的重試次數
          MaxAutoRetries: 1 # 對當前(失敗)實例的重試次數

       

       

       

       

       

       

       

       

       

       

       

      posted @ 2020-08-28 00:46  指尖下的世界  閱讀(288)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产色无码专区在线观看| 国产裸体永久免费无遮挡| 亚洲人成小说网站色在线| 亚洲色一区二区三区四区| 日韩亚洲精品中文字幕| 又黄又刺激又黄又舒服| 性欧美牲交在线视频| 婷婷五月综合激情| 精品一区二区三区日韩版| 春菜花亚洲一区二区三区| 夜夜添无码试看一区二区三区 | xxxx丰满少妇高潮| 女高中生强奷系列在线播放| 免费无遮挡无码永久视频| 亚洲夂夂婷婷色拍ww47| 亚洲国产精品自产拍久久| 精品无码一区二区三区的天堂| 国产果冻豆传媒麻婆精东 | 少妇激情av一区二区三区 | 亚洲色欲色欱WWW在线| 玩弄放荡人妻少妇系列| 亚洲人妻系列中文字幕| 久久99国产精品久久99| 国产精品一二三区久久狼| 色吊丝二区三区中文字幕| 国产成人一区二区三区影院动漫| 国产午夜福利视频一区二区| 免费吃奶摸下激烈视频 | 亚洲精品无码久久一线| 9lporm自拍视频区| 国产在线视频导航| 中文字幕av国产精品| 啊灬啊灬啊灬快灬高潮了电影片段| 一区二区三区国产不卡| 欧美黑人添添高潮a片www| 日韩精品视频一二三四区| 国产午夜亚洲精品国产成人| 开阳县| 国产精品人妻久久ai换脸| 人妻精品动漫H无码中字| 扎鲁特旗|