最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud注冊(cè)中心之consul詳細(xì)講解使用方法

 更新時(shí)間:2022年11月11日 10:23:16   作者:麻儂  
Consul是一款由HashiCorp公司開源的,用于服務(wù)治理的軟件,Spring Cloud Consul對(duì)其進(jìn)行了封裝,這篇文章主要介紹了springcloud組件consul服務(wù)治理,需要的朋友可以參考下

前言

今天我們開始學(xué)習(xí)spring cloud的又一個(gè)注冊(cè)中心consul,前面文章大概也講解了一下各個(gè)注冊(cè)中心的區(qū)別,今天我們直接開始配置consul到spring cloud。

從Springcloud官網(wǎng)Spring Cloud Consul篇章中我們可以看到官網(wǎng)對(duì)于consul的解釋

大致的意思就是Consul提供了自動(dòng)化配置的方式來使我們快速的綁定Consul到我們的spring環(huán)境及集成到我們的程序,使用一些簡單的注解方式就可以為我們快速的部署大型分布式系統(tǒng),Consul為我們提供服務(wù)注冊(cè)發(fā)現(xiàn)、分布式配置及控制總線。

繼續(xù)往下查看

Quick start中我們基本了解,與zk一樣的我們需要使用@EnableDiscoveryClient注解來聲明服務(wù)發(fā)現(xiàn),配置consul的url和port分別為spring.cloud.consul.host和spring.cloud.consul.port。

A local Consul agent must be running.See the Consul agent documentation on how to run an agent. 官網(wǎng)提示我們需要運(yùn)行一個(gè)consul才能使用,consul的agent分為client及server,對(duì)于我們的spring cloud而已,不管是client還是server,都是當(dāng)作服務(wù)注冊(cè)中心看待即可。

1、創(chuàng)建服務(wù)提供者

我們創(chuàng)建consul的服務(wù)提供者provider-consul8001,然后引入我們的maven依賴

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.6.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.6.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    </dependencies>

consul會(huì)默認(rèn)使用springboot的actuator來進(jìn)行健康檢查,所以這里我們引入它的依賴

這里我之前引用錯(cuò)了依賴spring-boot-actuator,注意正確的依賴應(yīng)該是spring-boot-starter-actuator

創(chuàng)建我們的配置文件application.yml,并將我們的consul進(jìn)行配置

server:
  port: 8001
spring:
  application:
    name: provider
  cloud:
    consul:
      host: 10.1.12.13
      port: 8500

創(chuàng)建主啟動(dòng)類ProviderConsul8001Application.class及我們的測試接口文件ProviderController.class

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderConsul8001Application {
    public static void main(String[] args) {
        SpringApplication.run(ProviderConsul8001Application.class,args);
    }
}
@RestController
public class ProviderController {
    @Value("${server.port}")
    private String port;
    @GetMapping("/consul/provider/getPort")
    public String getPort(){
        return "你請(qǐng)求的生產(chǎn)者的端口號(hào)為:" + port;
    }
}

2、創(chuàng)建服務(wù)消費(fèi)者

接下來我們創(chuàng)建消費(fèi)者的子工程consumer-consul8002,與生產(chǎn)者一樣我們引入maven依賴

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.6.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.6.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    </dependencies>

創(chuàng)建配置文件application.yml,并進(jìn)行配置

server:
  port: 8002
spring:
  application:
    name: consumer
  cloud:
    consul:
      port: 8500
      host: 10.1.12.13

創(chuàng)建主啟動(dòng)類,消費(fèi)接口類,負(fù)載Ribbon的配置文件

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerConsul8002Application {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerConsul8002Application.class,args);
    }
}
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
    @Autowired
    private RestTemplate loadBalancedRestTemplate;
    @GetMapping("/getProviderPort")
    public String getProviderPort(){
        return loadBalancedRestTemplate.getForObject("http://provider/consul/provider/getPort",String.class);
    }
}
@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate loadBalancedRestTemplate(){
        return new RestTemplate();
    }
}

3、測試

啟動(dòng)我們的生產(chǎn)者和消費(fèi)者,登錄10.1.12.13:8500進(jìn)行查看是否成功注冊(cè)到我們的consul服務(wù)中。

我們發(fā)現(xiàn)服務(wù)已經(jīng)成功注入,但是出現(xiàn)了一個(gè)紅色的叉,提示At least one health check on one instance is failing。是因?yàn)槲覀儧]有配置服務(wù)注冊(cè)到consul的地址和心跳等配置這里我們加上相應(yīng)的配置之后再啟動(dòng)服務(wù)。

spring:
  application:
    name: provider
  cloud:
    consul:
      host: 10.1.12.13
      port: 8500
      discovery:
        #hostname: localhost  此配置是服務(wù)注冊(cè)到consul的ip地址,因?yàn)榉?wù)部署有時(shí)候是沒有辦法確定的,所以盡量不要使用
        #這里是將服務(wù)運(yùn)行的ip作為注冊(cè)ip注冊(cè)到consul,consul在進(jìn)行健康檢查的時(shí)候會(huì)使用,替代掉consul.discovery.hostname
        prefer-ip-address: true
        #service-name: ${spring.application.name} 這個(gè)是服務(wù)注冊(cè)到consul的實(shí)例名稱,部署集群的時(shí)候會(huì)出現(xiàn)相同實(shí)例名稱會(huì)被頂替
        #替換service-name來進(jìn)行實(shí)例名稱注入,使用名稱加ip來識(shí)別唯一性,進(jìn)行集群部署防止同名頂替
        instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
        # 心跳開啟,如果不開啟心跳,注冊(cè)到consul會(huì)報(bào)錯(cuò)
        heartbeat:
          enabled: true

consul需要進(jìn)行健康檢查,所以需要服務(wù)將自己的ip進(jìn)行注冊(cè),hostname配置的是死的地址不夠靈活,使用prefer-ip-address來進(jìn)行動(dòng)態(tài)配置。

多個(gè)實(shí)例使用一個(gè)名稱的時(shí)候,會(huì)出現(xiàn)同名頂替,所以使用instance-id來做實(shí)例id注冊(cè)唯一性可避免,心跳需要手動(dòng)開啟,不開啟心跳consul無法進(jìn)行健康檢查會(huì)報(bào)錯(cuò)。

重新配置后啟動(dòng)項(xiàng)目,已經(jīng)正常注冊(cè)

這里注冊(cè)兩個(gè)provider來驗(yàn)證咱們的集群,上面講到會(huì)被頂替的問題,這里同一個(gè)服務(wù)器啟動(dòng)多個(gè)的時(shí)候,最好將端口號(hào)也加入來作為唯一健,這樣就不會(huì)頂替,上面錯(cuò)誤那個(gè)就是因?yàn)轫斕媪酥貑⒘粝聛淼摹?/p>

好了,現(xiàn)在我們項(xiàng)目已經(jīng)成功注冊(cè)到了consul,我們調(diào)用消費(fèi)者接口進(jìn)行驗(yàn)證http://localhost:8002/consumer/getProviderPort

到此我們使用consul作為注冊(cè)中心就完成了。

上面注冊(cè)的失效的服務(wù),如果不進(jìn)行移除,可能會(huì)出現(xiàn)請(qǐng)求會(huì)轉(zhuǎn)發(fā)到異常的服務(wù)上面,因?yàn)閏onsul不會(huì)自動(dòng)移除失效的注冊(cè)列表,所以這里可以參考官網(wǎng)文檔(Deregister Service)進(jìn)行手動(dòng)移除。

到此這篇關(guān)于SpringCloud注冊(cè)中心之consul詳細(xì)講解使用方法的文章就介紹到這了,更多相關(guān)SpringCloud consul內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot實(shí)現(xiàn)根據(jù)條件切換注入不同實(shí)現(xiàn)類的示例代碼

    Springboot實(shí)現(xiàn)根據(jù)條件切換注入不同實(shí)現(xiàn)類的示例代碼

    這篇文章主要介紹了Springboot實(shí)現(xiàn)根據(jù)條件切換注入不同實(shí)現(xiàn)類的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • cookie、session和java過濾器結(jié)合實(shí)現(xiàn)登陸程序

    cookie、session和java過濾器結(jié)合實(shí)現(xiàn)登陸程序

    這篇文章主要為大家詳細(xì)介紹了cookie、session和java過濾器結(jié)合實(shí)現(xiàn)登陸程序的具體代碼,感興趣的朋友可以參考一下
    2016-05-05
  • 徹底搞定堆排序:二叉堆

    徹底搞定堆排序:二叉堆

    二叉堆有兩種:最大堆和最小堆。最大堆:父結(jié)點(diǎn)的鍵值總是大于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值;最小堆:父結(jié)點(diǎn)的鍵值總是小于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值
    2021-07-07
  • java使用httpclient 發(fā)送請(qǐng)求的示例

    java使用httpclient 發(fā)送請(qǐng)求的示例

    HttpClient 是Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議,這篇文章主要介紹了java使用httpclient 發(fā)送請(qǐng)求的示例,需要的朋友可以參考下
    2023-10-10
  • springboot war包部署過程詳解

    springboot war包部署過程詳解

    這篇文章主要為大家介紹了springboot war包部署過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java將對(duì)象寫入文件讀出_序列化與反序列化的實(shí)例

    Java將對(duì)象寫入文件讀出_序列化與反序列化的實(shí)例

    下面小編就為大家?guī)硪黄狫ava將對(duì)象寫入文件讀出_序列化與反序列化的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java精品項(xiàng)目瑞吉外賣之員工新增篇

    Java精品項(xiàng)目瑞吉外賣之員工新增篇

    這篇文章主要為大家詳細(xì)介紹了java精品項(xiàng)目-瑞吉外賣訂餐系統(tǒng),此項(xiàng)目過大,分為多章獨(dú)立講解,本篇內(nèi)容為新增員工功能的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Spring Boot ActiveMQ連接池配置過程解析

    Spring Boot ActiveMQ連接池配置過程解析

    這篇文章主要介紹了Spring Boot ActiveMQ連接池配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Struts2框架初學(xué)接觸

    Struts2框架初學(xué)接觸

    本文主要給大家從初學(xué)者的角度介紹了Struts2框架結(jié)構(gòu)和基本頁面代碼等內(nèi)容,一起來學(xué)習(xí)一下。
    2017-11-11
  • Java異常跟蹤棧定義與用法示例

    Java異常跟蹤棧定義與用法示例

    這篇文章主要介紹了Java異常跟蹤棧定義與用法,結(jié)合具體實(shí)例形式分析了異常處理?xiàng)5母拍?、原理及相關(guān)使用技巧,需要的朋友可以參考下
    2018-05-05

最新評(píng)論

天长市| 大足县| 西和县| 理塘县| 沽源县| 扬中市| 南宁市| 景洪市| 新源县| 三河市| 霸州市| 清流县| 隆安县| 北海市| 安顺市| 嘉鱼县| 巫溪县| 威信县| 永和县| 黑龙江省| 河东区| 滕州市| 卢氏县| 龙游县| 乡宁县| 天柱县| 玉树县| 磴口县| 汪清县| 平塘县| 仁寿县| 云梦县| 馆陶县| 思南县| 天长市| 微博| 桂东县| 当涂县| 怀来县| 安阳市| 兴和县|