springCloud學習筆記——Eureka

注:參考大佬博客 https://mp.weixin.qq.com/s?__biz=MzI1NDY0MTkzNQ==&mid=2247483878&idx=1&sn=d49f2eb61bada3d34443a0a4017a7b72&scene=21#wechat_redirect

服務(wù)治理

服務(wù)治理是微服務(wù)架構(gòu)中最為核心和基礎(chǔ)的模塊。它主要用來實現(xiàn)各個微服務(wù)實例的自動化注冊與發(fā)現(xiàn)戒悠。隨著服務(wù)的越來越多舞虱,越來越雜,服務(wù)之間的調(diào)用會越來越復雜,越來越難以管理凉袱。而當某個服務(wù)發(fā)生了變化闷板,或者由于壓力性能問題,多部署了幾臺服務(wù)蛹头,怎么讓服務(wù)的消費者知曉變化顿肺,就顯得很重要了戏溺。不然就會存在調(diào)用的服務(wù)其實已經(jīng)下線了,但調(diào)用者不知道等異常情況挟冠。這個時候有個服務(wù)組件去統(tǒng)一治理就相當重要了于购。Eureka便是服務(wù)治理的組件。

Eureka介紹

Eureka包含Server和Client兩部分知染。Server也稱為注冊中心肋僧,用于提供服務(wù)的注冊與發(fā)現(xiàn)(服務(wù)注冊是指微服務(wù)在啟動時,將自己的信息注冊到服務(wù)治理組件上的過程控淡,服務(wù)發(fā)現(xiàn)是指查詢可用微服務(wù)列表及其網(wǎng)絡(luò)地址的機制嫌吠。)。支持高可用配置掺炭,依托與強一致性提供良好的服務(wù)實例可用性辫诅,可以應對多種不同的故障場景。

Client主要處理服務(wù)的注冊與發(fā)現(xiàn)涧狮;客戶端服務(wù)通過注解和參數(shù)配置方式炕矮,嵌入在客戶端的應用程序代碼中,在應用程序啟動時者冤,向注冊中心注冊自身提供的服務(wù)并周期性地發(fā)送心跳來更新它的服務(wù)租約肤视。同時,它也能從服務(wù)端查詢當前注冊的服務(wù)信息并把它們緩存到本地并周期性地刷新服務(wù)狀態(tài)涉枫。

創(chuàng)建Eureka服務(wù)端

1.創(chuàng)建一個springboot工程邢滑,導入依賴:

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2.配置

spring.application.name=eureka-service
# 修改端口
server.port=8180

# 實例的主機名稱
eureka.instance.hostname=localhost

## 不要向注冊中心注冊自己
eureka.client.register-with-eureka=false
## 表示不去檢索其他的服務(wù),因為服務(wù)注冊中心本身的職責就是維護服務(wù)實例愿汰,它也不需要去檢索其他服務(wù)
eureka.client.fetch-registry=false

# 指定服務(wù)注冊中心地址 這里直接指向了本服務(wù) localhost:8180/eureka/
# map對象困后,使用IDE的提示功能是不會出現(xiàn) 注意大小寫
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

3.啟動類上添加注解@EnableEurekaServer

EnableEurekaServer
@SpringBootApplication
public class SpringcloudApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudApplication.class, args);
    }
}

啟動項目后訪問 http://localhost:8180/ 就能看到注冊中心界面了

創(chuàng)建Eureka客戶端

Eureka客戶端,其實就是服務(wù)的提供方衬廷,對外提供服務(wù)的應用摇予。

1.創(chuàng)建一個springboot項目,導入依賴

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    // 寫一個接口方便測試
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

2.配置

spring.application.name=eureka-client
server.port=8080

# 注冊中心地址
eureka.client.service-url.defaultZone=http://localhost:8180/eureka
# 啟用ip配置 這樣在注冊中心列表中看見的是以ip+端口呈現(xiàn)的
eureka.instance.prefer-ip-address=true
# 實例名稱  最后呈現(xiàn)地址:ip:8080
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}

3.啟動類加入注解@EnableEurekaClient (也可使用 @EnableDiscoveryClient)

@EnableEurekaClient
@SpringBootApplication
public class MsetApplication {

    public static void main(String[] args) {
        SpringApplication.run(MsetApplication.class, args);
    }
}

4.寫個接口

RestController
public class TestController {
    @GetMapping("/")
    public String index(){
        return "sss";
    }
}

啟動應用吗跋,再次訪問:http://localhost:8180/ 趾盐,可以看見服務(wù)已經(jīng)注冊成功。

Eureka自我保護模式

默認情況下小腊,如果Eureka Server在一定時間內(nèi)沒有接收到某個微服務(wù)實例的心跳救鲤,Eureka Server將會注銷該實例(默認90秒)。但是當網(wǎng)絡(luò)分區(qū)故障發(fā)生時秩冈,微服務(wù)與Eureka Server之間無法正常通信本缠,這就可能變得非常危險了,因為微服務(wù)本身是健康的入问,此時本不應該注銷這個微服務(wù)丹锹。

Eureka Server通過“自我保護模式”來解決這個問題稀颁,當Eureka Server節(jié)點在短時間內(nèi)丟失過多客戶端時(可能發(fā)生了網(wǎng)絡(luò)分區(qū)故障),那么這個節(jié)點就會進入自我保護模式楣黍。一旦進入該模式匾灶,Eureka Server就會保護服務(wù)注冊表中的信息,不再刪除服務(wù)注冊表中的數(shù)據(jù)(也就是不會注銷任何微服務(wù))租漂。當網(wǎng)絡(luò)故障恢復后阶女,該Eureka Server節(jié)點會自動退出自我保護模式。

可以通過配置:eureka.server.enable-self-preservation=false關(guān)閉自我保護模式哩治。

springcloud官方文檔:http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html#_appendix_compendium_of_configuration_properties

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秃踩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子业筏,更是在濱河造成了極大的恐慌憔杨,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒜胖,死亡現(xiàn)場離奇詭異消别,居然都是意外死亡,警方通過查閱死者的電腦和手機台谢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門寻狂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人对碌,你說我怎么就攤上這事≥镔耍” “怎么了朽们?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诉位。 經(jīng)常有香客問我骑脱,道長,這世上最難降的妖魔是什么苍糠? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任叁丧,我火速辦了婚禮,結(jié)果婚禮上岳瞭,老公的妹妹穿的比我還像新娘拥娄。我一直安慰自己,他們只是感情好瞳筏,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布稚瘾。 她就那樣靜靜地躺著,像睡著了一般姚炕。 火紅的嫁衣襯著肌膚如雪摊欠。 梳的紋絲不亂的頭發(fā)上丢烘,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音些椒,去河邊找鬼播瞳。 笑死,一個胖子當著我的面吹牛免糕,可吹牛的內(nèi)容都是我干的赢乓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼说墨,長吁一口氣:“原來是場噩夢啊……” “哼骏全!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尼斧,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤姜贡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后棺棵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楼咳,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年烛恤,在試婚紗的時候發(fā)現(xiàn)自己被綠了母怜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡缚柏,死狀恐怖苹熏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情币喧,我是刑警寧澤轨域,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站杀餐,受9級特大地震影響干发,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜史翘,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一枉长、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧琼讽,春花似錦必峰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脉让,卻和暖如春桂敛,著一層夾襖步出監(jiān)牢的瞬間功炮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工术唬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留薪伏,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓粗仓,卻偏偏與公主長得像嫁怀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子借浊,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • import matplotlib.pyplot as plt import numpy as np class ...
    大喬治閱讀 206評論 0 0
  • 2017.12.1 一個人大早上送了孩子到幼兒園塘淑,接著用手機叫了順風車送我到醫(yī)院檢查做B超。當我坐在候診大廳的時候...
    跑步的女人閱讀 194評論 0 0
  • 如果說有什么比想要吃火鍋的時候蚂斤,卻吃不到更難受的話存捺,那一定是想要見你卻見不到。 遠距離的戀愛曙蒸,又稱異地戀捌治,是指一對...
    路邊花花閱讀 471評論 15 7