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

詳解Spring Cloud Finchley版中Consul多實(shí)例注冊(cè)的問題處理

 更新時(shí)間:2018年08月27日 14:10:56   作者:翟永超  
這篇文章主要介紹了詳解Spring Cloud Finchley版中Consul多實(shí)例注冊(cè)的問題處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

consul 簡介

consul 具有以下性質(zhì):

  1. 服務(wù)發(fā)現(xiàn):consul通過http 方式注冊(cè)服務(wù),并且服務(wù)與服務(wù)之間相互感應(yīng)。
  2. 服務(wù)健康監(jiān)測
  3. key/value 存儲(chǔ)
  4. 多數(shù)據(jù)中心

consul可運(yùn)行在mac windows linux 等機(jī)器上。

由于Spring Cloud對(duì)Etcd的支持一直沒能從孵化器中出來,所以目前來說大多用戶還在使用Eureka和Consul,之前又因?yàn)镋ureka 2.0不在開源的消息,外加一些博眼球的標(biāo)題黨媒體使得Eureka的用戶有所減少,所以,相信在選擇Spring Cloud的用戶群體中,應(yīng)該有不少用戶會(huì)選擇Consul來做服務(wù)注冊(cè)與發(fā)現(xiàn)。

本文就來說一下,當(dāng)我們使用Spring Cloud最新的Finchley版 + Consul 1.2.x時(shí)候最嚴(yán)重的一個(gè)坑:多實(shí)例注冊(cè)的問題。

問題解讀

問題:該問題可能在開發(fā)階段不一定會(huì)發(fā)現(xiàn),但是在線上部署多實(shí)例的時(shí)候,將會(huì)發(fā)現(xiàn)Consul中只有一個(gè)實(shí)例。

原因:造成該問題的主要原因是Spring Cloud Consul在注冊(cè)的時(shí)候?qū)嵗↖nstanceId)采用了:“服務(wù)名-端口號(hào)”(即: {spring.application.name}-{server.port} )的值,可以看到這個(gè)實(shí)例名如果不改變端口號(hào)的情況下,實(shí)例名都是相同的。如果熟悉Spring Cloud Consul的讀者,可能會(huì)問老版本也是這個(gè)規(guī)則,怎么沒有這個(gè)問題呢?。主要是由于Consul對(duì)實(shí)例唯一性的判斷標(biāo)準(zhǔn)也有改變,在老版本的Consul中,對(duì)于實(shí)例名相同,但是服務(wù)地址不同,依然會(huì)認(rèn)為是不同的實(shí)例。在Consul 1.2.x中,服務(wù)實(shí)例名成為了集群中的唯一標(biāo)識(shí),所以,也就導(dǎo)致了上述問題。

解決方法

既然知道了原因,那么我們要解決它就可以有的放矢了。下面就來介紹兩個(gè)具體的解決方式:

方法一:通過配置屬性指定新的規(guī)則

下面舉個(gè)例子,通過 spring.cloud.consul.discovery.instance-id 參數(shù)直接來配置實(shí)例命名規(guī)則。這里比較粗暴的通過隨機(jī)數(shù)來一起組織實(shí)例名。當(dāng)然這樣的組織方式并不好,因?yàn)殡S機(jī)數(shù)依然有沖突的可能,所以您還可以用更負(fù)責(zé)的規(guī)則來進(jìn)行組織實(shí)例名。

復(fù)制代碼 代碼如下:
spring.cloud.consul.discovery.instance-id=${spring.application.name}-${random.int[10000,99999]}

方法二:通過擴(kuò)展 ConsulServiceRegistry 來重設(shè)實(shí)例名

由于通過配置屬性的方式對(duì)于定義實(shí)例名的能力有限,所以我們希望可以用更靈活的方式來定義。這時(shí)候我們就可以通過重寫 ConsulServiceRegistry register 方法來修改。比如下面的實(shí)現(xiàn):

public class MyConsulServiceRegistry extends ConsulServiceRegistry {

  public MyConsulServiceRegistry(ConsulClient client, ConsulDiscoveryProperties properties, TtlScheduler ttlScheduler, HeartbeatProperties heartbeatProperties) {
    super(client, properties, ttlScheduler, heartbeatProperties);
  }

  @Override
  public void register(ConsulRegistration reg) {
    reg.getService().setId(reg.getService().getName() + “-” + reg.getService().getAddress() + “-” + reg.getService().getPort());
    super.register(reg);
  }
}

上面通過拼接“服務(wù)名”-“ip地址”-“端口號(hào)”的方式,構(gòu)造了一個(gè)絕對(duì)唯一的實(shí)例名,這樣就可以讓每個(gè)服務(wù)實(shí)例都能正確的注冊(cè)到Consul上了。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中常用的五種List聲明并賦值操作方式

    Java中常用的五種List聲明并賦值操作方式

    在Java編程中經(jīng)常會(huì)使用到集合類來存儲(chǔ)和操作多個(gè)元素,List是一種常見的集合類,它允許存儲(chǔ)重復(fù)的元素,并且保持元素的插入順序,這篇文章主要給大家介紹了關(guān)于Java中常用的五種List聲明并賦值操作的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • java匿名內(nèi)部類實(shí)例簡析

    java匿名內(nèi)部類實(shí)例簡析

    匿名類是不能有名稱的類,所以沒辦法引用它們,必須在創(chuàng)建時(shí),作為new語句的一部分來聲明它們,需要了解更多的可以參考本文
    2012-11-11
  • Java+EasyExcel實(shí)現(xiàn)文件上傳功能

    Java+EasyExcel實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了如何通過Java和EasyExcel實(shí)現(xiàn)文件上傳功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • Spring Boot的Profile配置詳解

    Spring Boot的Profile配置詳解

    本篇文章主要介紹了Spring Boot的Profile配置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • java實(shí)現(xiàn)gif動(dòng)畫效果(java顯示動(dòng)態(tài)圖片)

    java實(shí)現(xiàn)gif動(dòng)畫效果(java顯示動(dòng)態(tài)圖片)

    這篇文章主要介紹了java實(shí)現(xiàn)gif動(dòng)畫效果示例(java顯示動(dòng)態(tài)圖片),需要的朋友可以參考下
    2014-04-04
  • Java continue break制作簡單聊天室程序

    Java continue break制作簡單聊天室程序

    這篇文章主要為大家詳細(xì)介紹了Java continue break制作簡單聊天室程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java網(wǎng)絡(luò)編程之群聊功能

    java網(wǎng)絡(luò)編程之群聊功能

    這篇文章主要為大家詳細(xì)介紹了java網(wǎng)絡(luò)編程之群聊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • WebUploader實(shí)現(xiàn)圖片上傳功能

    WebUploader實(shí)現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了WebUploader實(shí)現(xiàn)圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Springboot使用Maven占位符@替換不生效問題及解決

    Springboot使用Maven占位符@替換不生效問題及解決

    這篇文章主要介紹了Springboot使用Maven占位符@替換不生效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java與C 代碼運(yùn)行效率的對(duì)比(整理)

    java與C 代碼運(yùn)行效率的對(duì)比(整理)

    最近和朋友無意間討論起了 有關(guān)java 和C 的 效率問題, (我是java 推介者, 他是 c 語言推介者, 他做的是嵌入式)故,想通過網(wǎng)絡(luò)查詢一下, 總結(jié)一下,兩者到底效率如何,其有何差異,原因又是啥?各種優(yōu)勢有在何處?
    2021-04-04

最新評(píng)論