国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解Spring Cloud Finchley版中Consul多實例注冊的問題處理

詳解Spring Cloud Finchley版中Consul多實例注冊的問題處理

2021-05-28 13:12翟永超 Java教程

這篇文章主要介紹了詳解Spring Cloud Finchley版中Consul多實例注冊的問題處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

consul 簡介

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

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

consul可運行在mac windows linux 等機器上。

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

本文就來說一下,當我們使用spring cloud最新的finchley版 + consul 1.2.x時候最嚴重的一個坑:多實例注冊的問題。

問題解讀

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

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

解決方法

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

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

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

 

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

 

方法二:通過擴展 consulserviceregistry 來重設(shè)實例名

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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地址”-“端口號”的方式,構(gòu)造了一個絕對唯一的實例名,這樣就可以讓每個服務(wù)實例都能正確的注冊到consul上了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.didispace.com/Spring-Cloud-Finchley-Consul-InstanceId/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人精品| 亚洲天堂黄色 | 欧美a视频 | 欧美成人免费在线视频 | 精品久久久久久久久久久久 | 91在线观看免费观看 | 日本久久精品视频 | 在线国产视频 | av午夜电影| 色天天天天色 | 国产激情久久久久久 | a v黄色| 亚洲高清在线观看 | 日韩精品一区二区三区 | 国产精品视频一区二区三区不卡 | 在线免费av观看 | 五月婷婷综合网 | 欧美亚洲自拍偷拍 | 成人免费黄色 | 色婷婷国产精品综合在线观看 | 人人爱av| 91精品国产日韩91久久久久久 | 亚洲成av人片在线观看 | 99亚洲精品 | 综合久久网 | 日韩影院在线 | 天天影视网色香欲综合网无拦截 | 欧美国产一区二区三区 | 精品国产乱码一区二区三区 | 日韩精品视频免费在线观看 | 精久久久 | 麻豆产精国品免费入口 | 日日撸| 91精品久久久久久久久久 | 国产成人精品综合 | 欧美成人黄色 | 精品久久久久一区二区国产 | av在线一区二区 | 91精品久久久久久久久久久久久久久 | 久久久精| 欧美一区高清 |