<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## **1. 客戶端負載均衡 與 服務端負載均衡** **1. 在客戶端負載均衡中,每個客戶端服務 都有一份自己要訪問的服務端清單,這些清單統統都是從Eureka服務注冊中心獲取的.** **2. 而在服務端負載均衡中,只要負載均衡器維護一份服務端列表 。** * **Spring Cloud Ribbon 是基于 Netflix 公司發布的開源項目 Ribbon 進行封裝的一套客戶端負載均衡器** * 所以說,服務提供端只要負責將服務注冊到Eureka集群就行,具體調用還主要在服務調用端配置 ![](https://img.kancloud.cn/d5/da/d5dafcb41b16e2787b5d4b652e4c39f8_1020x514.png) ## **2. Ribbon 服務調用配置** ### **2.1 應用消費端配置** **1. 修改pom文件加入 Eureka client啟動器, eureka會自動引入Ribbon** ~~~ <!-- Ribbon 相關依賴,eureka會自動引入Ribbon --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- 引入公共接口部分 --> <dependency> <groupId>com.tuna.springcloud</groupId> <artifactId>microservice-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> ~~~ 由于依賴了spring-cloud-starter-netflix-eureka-client,會自動添加spring-cloud-starter-netflix-ribbon依賴 **2. 修改yml,配置Eureka服務發現** ``` eureka: client: registerWithEureka: false # 服務注冊,false表示不將本消費者注冊到 Eureka 服務器 fetchRegistry: true # 服務發現,true從 Eureka 服務器中獲取注冊信息 serviceUrl: defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/ ``` **3. 添加配置類,配置負載均衡** > **@LoadBalanced表示這個RestTemplate開啟負載均衡,在調用服務提供者的接口時,可使用 服務名稱 替代真實IP地址。服務名稱 就是服務提供者在application.yml中配置的spring.application.name屬性的值** ![](https://img.kancloud.cn/ec/dd/ecddba786e7f6ad9419b31aabe716693_402x183.png) ~~~ @Configuration //標識配置類 public class ConfigBean { @LoadBalanced @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); } } ~~~ **4. 修改調用地址為 服務名稱,不必在寫ip地址,這樣的好處是 無論是有幾個服務提供者,消費端只需指定服務名稱去調用即可,不用擔心ip和端口** ``` //private static final String REST_URL_PREFIX = "http://localhost:8001"; //修改為商品提供者向Eureka服務器中注冊的地址 private static final String REST_URL_PREFIX = "http://microservice-product"; ``` 完整消費端代碼 ``` @RestController public class ProductController_Consumer { //private static final String REST_URL_PREFIX = "http://localhost:8001"; //修改為商品提供者向Eureka服務器中注冊的地址 private static final String REST_URL_PREFIX = "http://microservice-product"; @Autowired private RestTemplate restTemplate; @RequestMapping(value = "/consumer/product/add") public boolean add(Product product) { return restTemplate.postForObject(REST_URL_PREFIX + "/product/add", product, Boolean.class); } @RequestMapping(value = "/consumer/product/get/{id}") public Product get(@PathVariable("id") Long id) { return restTemplate.getForObject(REST_URL_PREFIX + "/product/get/" + id, Product.class); } @RequestMapping(value = "/consumer/product/list") public List<Product> list() { return restTemplate.getForObject(REST_URL_PREFIX + "/product/list", List.class); } } ``` 5. 測試 啟動Eureka 服務提供端和消費端 ![](https://img.kancloud.cn/07/1b/071b4ae0124e4bed0cd4d437360dac7b_718x125.png) 訪問正常,負載均衡有待測試 ## **3. Ribbon負載均衡測試** **Ribbon 在工作時分成兩步:** **第1步**先選擇 Eureka Server ,它優先選擇在同一個區域內負載較少的server **第2步**再根據用戶指定的策略,在從 Eureka Server 獲取的服務注冊列表中選擇一個地址。 其中Ribbon提供了多種策略:比如輪詢、隨機和根據響應時間加權等 ![](https://img.kancloud.cn/88/c4/88c473824e4f71417b6874650ae5fe80_795x448.png) ### 3.1 新建一個服務提供者 負載均衡測試一定要有兩個以上,才可以測試 在新見一個模塊,然后將原來的服務提供者工程代碼賦值一份,改下端口配置即可 ![](https://img.kancloud.cn/67/c2/67c2237e40ed1189fb0c498c9b8ead71_720x531.png) ![](https://img.kancloud.cn/3b/98/3b98bb1781cbc4087c788fee7b7f5ada_734x552.png) 得到一個新的服務端工程 ![](https://img.kancloud.cn/96/a7/96a7c0f6d44e9d3b55812f4d43c158ac_362x299.png) ### 3.2 新建一個數據庫 用新數據庫,得到不同的數據模擬負載到不同的服務提供者 ![](https://img.kancloud.cn/4e/63/4e63fd93c2aea0b823dffa4d1f10adaa_966x313.png) ### 3.3 啟動新的服務提供者測試 第一次請求 ![](https://img.kancloud.cn/62/07/620754c12aaf8340eaa02a1ec9b03155_529x151.png) 第二次請求 ![](https://img.kancloud.cn/3c/70/3c704952c98538a2edfa372787633f90_491x124.png) 證明負載已經生效
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看