亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

nginx負(fù)載均衡原理 服務(wù)器負(fù)載均衡是什么意思( 四 )


接著執(zhí)行完畢getServer這個(gè)方法后,我們發(fā)現(xiàn),只有一個(gè)服務(wù)實(shí)例了為8090 。第二次調(diào)試代碼后發(fā)現(xiàn)獲取的是8091.多次調(diào)試后發(fā)現(xiàn)是8090和8091是輪詢出現(xiàn)的,


也就是說getServer這個(gè)方法給我們實(shí)現(xiàn)了負(fù)載均衡 。看源代碼知道,如果未設(shè)置負(fù)載均衡參數(shù),就使用default 。否則就根據(jù)配置的參數(shù)選擇服務(wù) 。
protected Server getServer(ILoadBalancer loadBalancer, Object hint) { if (loadBalancer == null) {return null; } // Use 'default' on a null hint, or just pass it on? return loadBalancer.chooseServer(hint != null ? hint : "default");}具體的實(shí)現(xiàn)的負(fù)載均衡算法,本文不做討論 。
4.負(fù)載均衡代碼驗(yàn)證演示通過上述源碼分析,我們發(fā)現(xiàn)如果我們開啟了負(fù)載均衡,但是沒有配置負(fù)載均衡參數(shù),則會(huì)采用默認(rèn)的配置,也就是輪詢算法來實(shí)現(xiàn)負(fù)載均衡 。
通過上述的debug閱讀,我們參照getServer這個(gè)方法來寫代碼測試下負(fù)載均衡
@Autowiredprivate LoadBalancerClient loadBalancerClient;@GetMapping(value = "https://www.520longzhigu.com/shenghuo/order/{orderId}")public Order queryOrderById(@PathVariable("orderId") String orderId) { String serviceId = "hutao-microservice-item"; for(int i = 0 ; i < 10 ; i++) {ServiceInstance choose = loadBalancerClient.choose(serviceId);System.out.println(choose); } //List<ServiceInstance> instances = discoveryClient.getInstances(serviceId); //ServiceInstance serviceInstance = instances.get(0); //String url = serviceInstance.getHost() + ":" + serviceInstance.getPort(); //Items items = restTemplate.getForObject("http://" + serviceId + "/itemservice/item/1" , Items.class); //System.out.println(items); return null;}5.負(fù)載均衡配置在我們之前調(diào)試代碼的時(shí)候我們發(fā)現(xiàn)源碼中定義了IRule.choose(Object objet)這個(gè)接口,并且如下幾個(gè)實(shí)現(xiàn) 。
各個(gè)實(shí)現(xiàn)如下所示 。
如果我們不想要默認(rèn)的輪詢機(jī)制,我們可以采用如上實(shí)現(xiàn)中的任何一種
比如,我們設(shè)置為隨機(jī)策略 。

  • hutao-microservice-item是我們需要對(duì)某個(gè)服務(wù)設(shè)定
  • NFLoadBalancerRuleClassName是我們的策略(也就是實(shí)現(xiàn)類的路徑)
hutao-microservice-item:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule重啟服務(wù)后,再看我們的負(fù)載均衡,是隨機(jī)的,而不是輪詢的 。
6.總結(jié)
  1. 注冊多個(gè)服務(wù):將項(xiàng)目部署在不同的服務(wù)器,或者同一個(gè)服務(wù)器不同端口號(hào),然后注冊到注冊中心的服務(wù)ID(serviceId)保持一致即可;
  2. 負(fù)載均衡實(shí)現(xiàn):通過對(duì)RestTemplate添加注解@LoadBalanced,使用代理模式,攔截RestTemplate請求時(shí),訪問指定的負(fù)載服務(wù),從而實(shí)現(xiàn)負(fù)載均衡 。
  3. DiscoveryClient接口他是用來發(fā)現(xiàn)服務(wù)的,比如發(fā)現(xiàn)Netflix服務(wù),其中有個(gè)方法List getInstances(String serviceId)是根據(jù)服務(wù)ID獲取服務(wù)實(shí)例集合 。
  4. LoadBalancerInterceptor進(jìn)行請求攔截處理
  5. RibbonLoadBalancerClient首先通過getLoadBalancer根據(jù)服務(wù)ID獲取到負(fù)載,然后getServer會(huì)從多個(gè)負(fù)載中獲取到適合的服務(wù) 。其實(shí)現(xiàn)chooseServer如果沒有設(shè)置負(fù)載均衡規(guī)則,則使用默認(rèn)的輪詢算法 。
  6. IRule接口定義了choose方法 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: