亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Cloud根據(jù)服務(wù)名獲取服務(wù)的ip端口問題

 更新時間:2022年09月09日 09:47:36   作者:怪 咖@  
這篇文章主要介紹了Spring Cloud根據(jù)服務(wù)名獲取服務(wù)的ip端口,本篇示例我就以Nacos注冊中心為例了,下面是我注冊的兩個服務(wù),需要的朋友可以參考下

本篇示例我就以Nacos注冊中心為例了,下面是我注冊的兩個服務(wù)。其中nacos-payment-provider服務(wù)是集群,有兩個實例。

方式一:通過loadBalancerClient來獲取

如果使用的Nacos為注冊中心的時候會發(fā)現(xiàn)一個問題,當引入的依賴版本比較高的時候,RestTemplate+@LoadBalanced 通過服務(wù)名稱調(diào)用的時候會報錯,使用其他注冊中心默認都會引用ribbon依賴,因此我們只需要在注入RestTemplate的時候加上@LoadBalanced就可以實現(xiàn)根據(jù)名稱負載均衡調(diào)用。

而nacos高版本依賴包沒有引用ribbon依賴。ribbon早就已經(jīng)徹底停更了,spring又自己出了一個loadbalancer負載均衡框架,來配合RestTemplate使用。但是他并沒有自動引用loadbalancer依賴所以我們需要自己引用才可以使用。

@Configuration
public class ApplicationContextBean {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

使用如下獲取ip端口的前提:引用了loadbalancer來作為負載均衡

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

loadBalancerClient.choose()這個方法就是負載均衡的核心方法。假如服務(wù)名稱為nacos-payment-provider有兩個實例,一個9001一個9002,通過如下方法調(diào)用會發(fā)現(xiàn)每次都是在輪詢。

@Autowired
private LoadBalancerClient loadBalancerClient;

@GetMapping("/getServiceInstance")
public ServiceInstance getServiceInstance() {
    ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-payment-provider");
    System.out.println(serviceInstance.getHost()); // ip
    System.out.println(serviceInstance.getPort()); // 端口
    System.out.println(serviceInstance.getInstanceId()); // 實例id
    System.out.println(serviceInstance.getServiceId()); // 服務(wù)id
    System.out.println(serviceInstance.getMetadata()); // 與服務(wù)實例關(guān)聯(lián)的元數(shù)據(jù)
    System.out.println(serviceInstance.getScheme());    // 返回服務(wù)實例的方案
    System.out.println(serviceInstance.getUri().toString()); // 返回服務(wù)的uri地址
    return serviceInstance;
}

loadbalancer源碼:

方式二:通過discoveryClient來獲取

這種方式其他注冊中心也可以使用!

@Resource
private DiscoveryClient discoveryClient;

@GetMapping("/getServiceInstanceList")
public List<ServiceInstance> getServiceInstanceList() {
	// 根據(jù)服務(wù)名稱查找所有的實例
    return discoveryClient.getInstances("nacos-payment-provider");
}

DiscoveryClient這個其實是個接口存放于cloud-commons包當中。

既然是接口為什么他能獲取到呢?我們可以看他的實現(xiàn)類,是有如下實現(xiàn)類的,也就是在nacos的服務(wù)發(fā)現(xiàn)依賴當中會存在他的實現(xiàn)類,并注入到容器當中了。其他注冊中心也是同樣如此。可以說這個接口是共用的,其他的注冊中心都可以來實現(xiàn)。

方式三:通過NacosServiceManager來獲取

這個是nacos獨有的!

@Autowired
private NacosServiceManager nacosServiceManager;

@Autowired
private NacosDiscoveryProperties nacosDiscoveryProperties;
    
@GetMapping("/nacos")
public List<Instance> getGatewayAddress() {
    String res = null;
    try {
        NamingService namingService = nacosServiceManager.getNamingService(nacosDiscoveryProperties.getNacosProperties());
        List<Instance> allInstances = namingService.getAllInstances("nacos-payment-provider");
        return allInstances;
    } catch (NacosException e) {
        e.printStackTrace();
        return null;
    }
}

到此這篇關(guān)于Spring Cloud根據(jù)服務(wù)名獲取服務(wù)的ip端口的文章就介紹到這了,更多相關(guān)Spring Cloud ip端口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合freemarker實現(xiàn)代碼生成器

    SpringBoot整合freemarker實現(xiàn)代碼生成器

    這篇文章主要為大家詳細介紹了SpringBoot如何整合freemarker實現(xiàn)一個簡單的代碼生成器,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-03-03
  • Java mysql特殊形式的查詢語句詳解

    Java mysql特殊形式的查詢語句詳解

    這篇文章主要介紹了Java mysql特殊形式的查詢,包括子查詢和聯(lián)合查詢、自身連接查詢問題,本文通過sql語句給大家介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • 關(guān)于Java的Condition接口最佳理解方式

    關(guān)于Java的Condition接口最佳理解方式

    這篇文章主要介紹了關(guān)于Java的Condition接口最佳理解方式,Condition就是實現(xiàn)了管程里面的條件變量,Java?語言內(nèi)置的管程里只有一個條件變量,而Lock&Condition實現(xiàn)的管程支持多個條件變量,需要的朋友可以參考下
    2023-05-05
  • 在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程

    在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程

    這篇文章主要介紹了在Ubuntu系統(tǒng)下安裝JDK和Tomcat的教程,這樣便是在Linux系統(tǒng)下搭建完整的Java和JSP開發(fā)環(huán)境,需要的朋友可以參考下
    2015-08-08
  • Java實現(xiàn)對象復(fù)制的方法實例

    Java實現(xiàn)對象復(fù)制的方法實例

    這篇文章主要介紹了Java實現(xiàn)對象復(fù)制的方法實例,深復(fù)制:復(fù)制出來的對象中的變量(包括基本類型和字符串)和原來的對象的值都相同,引用對象也會指向復(fù)制出來的對象,需要的朋友可以參考下
    2023-08-08
  • Java web Hibernate如何與數(shù)據(jù)庫鏈接

    Java web Hibernate如何與數(shù)據(jù)庫鏈接

    這篇文章主要介紹了Java web Hibernate如何與數(shù)據(jù)庫鏈接,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-06-06
  • VsCode搭建Spring Boot項目并進行創(chuàng)建、運行、調(diào)試

    VsCode搭建Spring Boot項目并進行創(chuàng)建、運行、調(diào)試

    這篇文章主要介紹了VsCode搭建Spring Boot項目并進行創(chuàng)建、運行、調(diào)試 ,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-05-05
  • SpringIOC DI循環(huán)依賴實例詳解

    SpringIOC DI循環(huán)依賴實例詳解

    這篇文章主要介紹了SpringIOC——DI循環(huán)依賴,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-03-03
  • Gson序列化指定忽略字段的三種寫法詳解

    Gson序列化指定忽略字段的三種寫法詳解

    在我們?nèi)粘J褂胘son序列化框架過程中,經(jīng)常會遇到在輸出json字符串時,忽略某些字段,那么在Gson框架中,要想實現(xiàn)這種方式,可以怎么處理呢,本文就來介紹一下
    2021-10-10
  • 詳解Java類加載器與雙親委派機制

    詳解Java類加載器與雙親委派機制

    這篇文章主要為大家介紹一下Java中的類加載器與雙親委派機制,文中通過示例為大家進行了詳細的介紹,對我們學(xué)習Java有一定幫助,需要的可以參考一下
    2022-08-08

最新評論