eureka 其它語言_SpringCloud之Eureka-Go語言中文社區

一、使用方法:

1、添加maven依賴

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

版本一般交由spring-cloud-dependencies管理。注意這個依賴的artifactId在Edgware以前是spring-cloud-starter-eureka-server,而在之后變成了spring-cloud-starter-netflix-eureka-server。其他組件也是類似。

2、在啟動類中加入注解@EnableEurekaServer

@SpringBootApplication

@EnableEurekaServer

public class EurekaCenter {

public static void main(String[] args) {

SpringApplication.run(EurekaCenter.class, args);

}

}

二、屬性優化:

1. 關于eureka的配置

大致分為eureka.instance, eureka.clinet,eureka.server三大類。大部分的參數都可以不管,有默認值。需要時查一下就可以了。下面列出幾個比較有用的參數

eureka.client.registerWithEureka

表示是否將自己注冊到Eureka Server,默認為true。由于當前應用就是Eureka Server,所以不需要注冊,修改為false。

eureka.client.fetchRegistry

表示是否從Eureak Server獲取注冊信息,默認為true。由于示例中是單點的Eureka Server,不需要同步其他的Eureka Server節點的數據,所以修改為false。

eureka.client.serviceUrl.defaultZone

設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。

另外,可以給eureka的監控頁面增加簡單的權限驗證security.basic.enabled=true

security.user.name=admin

security.user.password=123

Eureka的其他配置屬性可在spring-cloud-netflix-eureka-client的jar包中META-INF目錄下尋找spring-configuration-metadata.json文件中有詳細描述。這是starter組件的開發流程,其他組件的配置信息也有類似的描述文件。

2. 關于eureka注冊中心的自我保護模式

關于自我保護模式,最直觀的體現是進入eureka的監控頁面時,頁面上出現紅色的警告信息

默認情況下,Eureka Server在一定時間內沒有接收到某個微服務的心跳,Eureka Server就會注銷該實例(默認90秒,可以通過參數自行配置)。這本是正常的微服務治理機制,但是如果問題的原因只是因為網絡分區故障而發生時,就會出現比較不好的結果。即服務本身其實是健康的,但是Eureka Server卻把他注銷掉了。

為了防止這種情況,Eureka Server采用了自我保護模式。即當服務失聯后,會繼續保存該服務的注冊信息-不會分配請求。而當網絡故障恢復后,該服務就會退出自我保護模式,重新分配請求。

而在SpringCloud中,可以通過配置參數

eureka.server.enable-self-preservation= false

來禁用自我保護模式

另外,對于自我保護模式下的服務,可以通過手動訪問接口方式進行管理,即手動下線已經失效的微服務。具體方式可以訪問Eureka Server的REST接口,例如下線服務只需要給如下地址發送DELETE請求(可以用POSTMAN等工具發送)

http://${Eureka_URL}:${Eureka_port}/eureka/apps/${AppName}/${instance}

其中,AppName和{AppName}和AppName和{instance}就是在頁面上看到的服務節點。

3. Eureka的高可用配置

Eureka通過多個節點相互注冊的方式來實現集群高可用。

為了在單機模擬HA配置方式,可以采用在單機監聽兩個不同端口的方式啟動更多個實例。

使用yml文件配置方式如下:

---

server:

port: 8001

spring:

profiles: server1

application:

name: eureka-ha

eureka:

instance:

hostname: server1

client:

serviceUrl:

defaultZone: http://server2:8002/eureka/

---

server:

port: 8002

spring:

profiles: server2

application:

name: eureka-ha

eureka:

instance:

hostname: server2

client:

serviceUrl:

defaultZone: http://server1:8001/eureka/

然后使用指令啟動兩個實例:

java -jar ./eurekaCenter-0.0.1-SNAPSHOT.jar --spring.profiles.active=server1

java -jar ./eurekaCenter-0.0.1-SNAPSHOT.jar --spring.profiles.active=server2

啟動兩個實例后可以訪問server1:8001和server2:8002頁面,可以看到兩個實例完成了相互注冊。

4.Eureka跨機房災備

Eureka通過增加region和zone的定義可以快速時間跨機房災備(region和zone的概念均來自于亞馬遜的AWS)

一般region概念指代區域,如亞洲地區、華北地區、北京等。而zone概念指代具體機房。

災備原則是一個機房內的Consumer優先調用同機房的Service,當同一機房的service或者eureka不可用時,再去調用其他機房的服務。

1、Eureka分區服務配置

eureka.client.prefer-same-zone-eureka=true

eureka.client.region=beijing

eureka.client.availability-zones.beijing=zone1,zone2

eureka.client.serviceUrl.zone1=http://localhost:9002/eureka

eureka.client.serviceUrl.zone2=http://localhost:9003/eureka

注冊中心選擇邏輯:

如果prefer-same-zone-eureka為false,按照service-url下的 list取第一個注冊中心來注冊,并和其維持心跳檢測。不會再向list內的其它的注冊中心注冊和維持心跳。只有在第一個注冊失敗的情況下,才會依次向其它的注冊中心注冊,總共重試3次,如果3個service-url都沒有注冊成功,則注冊失敗。每隔一個心跳時間,會再次嘗試。

如果prefer-same-zone-eureka為true,先通過region取availability-zones內的第一個zone,然后通過這個zone取service-url下的list,并向list內的第一個注冊中心進行注冊和維持心跳,不會再向list內的其它的注冊中心注冊和維持心跳。只有在第一個注冊失敗的情況下,才會依次向其它的注冊中心注冊,總共重試3次,如果3個service-url都沒有注冊成功,則注冊失敗。每隔一個心跳時間,會再次嘗試。

所以說,為了保證服務注冊到同一個zone的注冊中心,一定要注意availability-zones的順序,必須把同一zone寫在前面

2、對于服務調用者和服務提供者,都是通過eureka.instance.metadata-map.zone來設置屬于哪個zone

服務消費者會先通過ribbon去注冊中心拉取一份服務提供者的列表,然后通過eureka.instance.metadata-map.zone指定的zone進行過濾,過濾之后如果同一個zone內的服務提供者有多個實例,則會輪流調用。

只有在同一個zone內的所有服務提供者都不可用時,才會調用其它zone內的服務提供者。

3、擴展配置

eureka.instance.lease-renewal-interval-in-seconds: 30

服務和注冊中心的心跳間隔時間,默認為30s

eureka.instance.lease-expiration-duration-in-seconds: 90

服務和注冊中心的心跳超時時間,默認為90s

三、Eureka與Zookeeper

Dubbo使用Zookeeper作為注冊中心,而SpringCloud使用Eureka作為注冊中心。兩者作為服務中心,在單點使用時差別不大,但是在作為集群服務時有些區別。

1、以CAP理論,zookeeper是保證CP的,而Eureka是保證AP的。即在集群面臨各種宕機、網絡波動等分布式問題時,前者更偏向保證數據一致,而后者更偏向保證服務可用。

2、集群方式:zookeeper集群需要以選舉算法保證集群中有一個唯一的leader,這樣,集群在選舉過程中,容易導致短暫服務不可用。而Eureka集群的方式則是簡單的互相注冊,即把當前Eureka節點也作為一個服務,向其他Eureka節點進行注冊。這樣當有節點宕機后,直接用另外一些節點提供服務即可。但是這時,就存在節點之間數據同步沒有完成的問題。這個集群方式也是兩者CP與AP之爭的根本。

3、Eureka的自我保護機制也是別人說Eureka更適合做服務中心的特點之一。

個人觀點,如果不是云環境,用哪個隨緣把。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270916.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270916.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270916.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

操作系統:Win10系統下LocalNow和Roaming文件夾介紹

Win10操作系統下AppData文件夾包括以下子文件夾 - 漫游,本地和本地。 幾乎每個在Win10 PC上安裝的程序都會在AppData文件夾中創建自己的文件夾,并將其所有相關信息存儲在其中。AppData或應用程序數據是Windows 10中的一個隱藏文件夾,可幫助保…

c語言des算法實驗報告,C語言實現DES算法實驗報告解析.doc

C語言實現DES算法實驗報告解析xx工程大學實驗報告(2015-2016學年第一學期)報告題目: DES加密算法課程名稱: 密碼學B任課教員:專 業:學 號:姓 名:二O一六年一月十八日一、課程概述目的:培養學員的…

[noip2010]關押罪犯 并查集

第一次看的時候想到了并查集&#xff0c;但是不知道怎么實現&#xff1b; 標解&#xff0c;f[i]表示i所屬的集合&#xff0c;用f[in]表示i所屬集合的補集&#xff0c;實現的很巧妙&#xff0c;可以當成一個使用并查集的巧妙應用&#xff1b; 1 #include<iostream>2 #incl…

jvm什么是本地方法

一&#xff1a;什么是本地方法 二&#xff1a;舉例 三&#xff1a;為什么要使用Native Method

SQLServer:用戶自定義數據類型用法

今天給大家梳理一下SQLServer:用戶自定義數據類型用法&#xff0c;希望對大家能有所幫助&#xff01;1、基于基本數據類型創建的別名數據類型-- 創建生日的數據類型 CREATE TYPE birthday FROM datetime NULL; -- 創建用戶表 CREATE TABLE userInfo (id varchar(32), userNam…

python fsolve說明_Python fsolve()抱怨形狀.為什么?

具有函數f(x,y,z),我需要解決限制f(x,y,z) 0然后繪制它.我試圖為每對(y,z)找到f(x,y,z) 0的值x&#xff1a;from numpy import *from scipy.optimize import fsolvedef func(x,y,z):return xyzy linspace(0,1,100)z linspace(0,1,100)x0 zeros((y.size,z.size)) 0.5 # the …

C語言實現與功能的程序,用C語言實現Ping程序功能

2001 年 10 月 01 日大部分人用ping命令只是作為查看另一個系統的網絡連接是否正常的一種簡單方法。在這篇文章中&#xff0c;作者將介紹如何用C語言編寫一個模擬ping命令功能的程序。ping命令是用來查看網絡上另一個主機系統的網絡連接是否正常的一個工具。ping命令的工作原理…

數據庫知識:SQLServer變量相關知識介紹

今天給大家分享SQLServer變量相關介紹&#xff0c;希望對大家能有所幫助&#xff01;1、概述SQLServer變量對應內存中的一個存儲空間。它和常量不同&#xff0c;變量的值可以在執行過程中改變。2、分類SQLServer變量根據作用范圍不同主要分為局部變量和全局變量。2.1.局部變量局…

oauth基本流程和原理

組裝loginurl-》去第三方登錄驗證-》回調callbackurlcode&#xff08;票據&#xff09;-》本地根據codeappidappkey組裝url隱式curl獲取用戶信息-》完成登錄。 之所以要用callbackurl的形式是因為不能讓用戶在你本地輸入賬號密碼防止被盜號。 之所以不在callbackurl的時候&…

halcon輪廓擦除_halcon第十二講,毛刺去除

在視覺測量中我們很會被毛刺問題困擾&#xff0c;產生干擾的因素很多&#xff0c;有打光問題和產品本生帶毛刺&#xff0c;接下來給兄弟們帶來兩種去毛刺的方法。第一種read_image (Image1323153Ba0b96cf52f88f1, 1)rgb1_to_gray (Image1323153Ba0b96cf52f88f1, GrayImage)lapl…

c語言雙循環計算n的階乘,用C語言用循環實現N的階乘

匿名用戶1級2014-03-04 回答不要用數組&#xff0c;用vector來實現相應的功能&#xff0c;我給你寫個大概的框架&#xff0c;你向里面添加就好了1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include …

存儲知識:U盤的實際容量要比標注容量小,你知道原因嗎?

用過U盤的朋友一定都會知道&#xff0c;U盤的實際容量往往是達不到它標注的容量。比如一個16G的U盤&#xff0c;其實際容量一般只有14.7G左右。今天本文會給大家解釋其中的原因。 原因一&#xff1a;計算容量方法不同 存儲設備制造商為了計算方便&#xff0c;采用十進制計算方法…

CentOS 7 防止端口自動關閉

tl;dr firewall-cmd --permanent --zonepublic --add-port2888/tcp firewall-cmd --reload #重新載入服務 永久配置firewalld開啟端口。 之前的一些坑 之前的一篇文章CentOS 7部署Node.jsMongoDB&#xff1a;在VPS上從安裝到Hello world中&#xff0c;講到了CentOS開啟端口用這…

jio文件 久其_功能強大的Windows文件管理器工具

Windows文件管理功能體驗只能說中規中矩&#xff0c;批量處理文件時非常的慢&#xff0c;而且在模糊搜索文件時的速度以及資源占用實在是感人&#xff0c;再加上功能較少&#xff0c;只能實現重命名、復制、粘貼、剪切這些基礎功能&#xff0c;因此想要提高文件之間處理效果通常…

C語言補丁原理,C語言可變長參數實現原理

(1) C語言可變參數我們能夠從C語言的printf得出可變參數的作用。printf函數的原型例如以下&#xff1a;int printf ( const char * format, ... );通過使用可變個數參數&#xff0c;就是傳入的參數個數是可變的&#xff0c;如printf須要依據format實參傳入多個實參。(2) …

辦公技巧:各類特殊符號輸入快捷鍵,瞬間提高你的辦公效率

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

前端構建工具的用法—grunt、gulp、browserify、webpack

隨著前端項目的飛速發展&#xff0c;項目越來越大、文件越來越多&#xff0c;前端工程化的工具也越來越多。下面介紹目前最流行的四種構建工具——grunt、gulp、browserify、webpack 所有的構建工具都是基于NodeJs和Npm&#xff0c;所以使用下面任何工具都需要安裝Node 一、gru…

adb命令刷機vivox20_vivo手機變磚 刷機手機端口連上顯示adb

展開全部vivo的刷機解賬戶鎖方法如下 有了這個方法 以后不管手機出現啥毛病 只要是軟件系統引32313133353236313431303231363533e4b893e5b19e31333365643535起的故障 都能一招搞定提示&#xff1a;刷機有風險 刷機需謹慎 對于刷機造成的一切后果均與本處無關 而避免風險的最好…