<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之旅 廣告
                輪詢策略的算法如下: ``` 實際調用的服務器下標(Z)=同一接口的總請求數(Y) % 集群服務器總數(X) ``` 比如 8001服務端、8002服務端組成的集群有 2 臺機器,則如下進行輪詢: ``` 同一接口總請求數1 Z=1 % 2 = 1,調用8001服務; 同一接口總請求數2 Z=2 % 2 = 0,調用8002服務; 同一接口總請求數3 Z=3 % 2 = 1,調用8001服務; 同一接口總請求數4 Z=4 % 2 = 0,調用8002服務; ...如此類推... ``` <br/> Ribbon實現輪詢策略可以采用兩種方法實現: **1. 直接在`RestTemplate`組件上標注注解`@LoadBalanced`。** ```java @Configuration public class ApplicationContextConfig { @Bean @LoadBalanced //該注解默認的負載均衡策略是輪詢策略 public RestTemplate getRestTemplate() { return new RestTemplate(); } } ``` **2. 實現接口`LoadBalaner`來實現輪詢策略。** 步驟如下: (1)實現接口`LoadBalaner`。 ```java /** * 如果實現接口LoadBalaner,則不要使用注解@LoadBalanced */ @Component public class MyLoadBalaner implements LoadBalaner { private AtomicInteger atomicInteger = new AtomicInteger(0); public final int getIncrement() { int current; int next; do { //首次初始化current為 1 current = this.atomicInteger.get(); next = current >= 2147483647 ? 0 : current + 1; //compareAndSet方法判斷兩個參數值相等則返回true,否則返回false } while (!this.atomicInteger.compareAndSet(current, next)); System.out.print("總請求次數:" + next + " "); return next; } @Override public ServiceInstance instance(List<ServiceInstance> instances) { //實際調用的服務器下標(Z)=同一接口的總請求數(Y) % 集群服務器總數(X) int index = getIncrement() % instances.size(); return instances.get(index); } } ``` (2)調用該接口來訪問服務。 ```java @RestController @RequestMapping("/order") public class OrderController { @Value("${provider.payment.name}") private String PROVIDER_PAYMENT_NAME; @Resource private LoadBalaner loadBalaner; @GetMapping("/lb") public String getPaymentLB() { List<ServiceInstance> instances = discoveryClient.getInstances(PROVIDER_PAYMENT_NAME); if (instances == null || instances.size() == 0) { return null; } ServiceInstance serviceInstance = loadBalaner.instance(instances); URI uri = serviceInstance.getUri(); System.out.println(uri + "/payment/lb"); return restTemplate.getForObject(uri + "/payment/lb", String.class); } } ``` (3)刷新地址 6 次,控制臺輸出如下。 ```java 總請求次數:1 http://192.168.56.1:8002/payment/lb 總請求次數:2 http://192.168.56.1:8001/payment/lb 總請求次數:3 http://192.168.56.1:8002/payment/lb 總請求次數:4 http://192.168.56.1:8001/payment/lb 總請求次數:5 http://192.168.56.1:8002/payment/lb 總請求次數:6 http://192.168.56.1:8001/payment/lb ```
                  <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>

                              哎呀哎呀视频在线观看