微服務實戰(zhàn)SpringCloud之Eureka實現(xiàn)類似異地多活

zone&region

eureka_region_zone

上圖是eureka高可用架構(gòu)砚著,也是Netflix推薦的用法。

上圖的us-east-1c绘沉、us-east-1d赃绊、us-east-1e各自是一個zone,每個zone內(nèi)都有各自的eureka server & eureka client守问,就是說每個zone內(nèi)都有服務注冊中心及微服務的提供者和消費者匀归。

那么zone和region在eureka中的概念是什么呢?

AWS_regions
  • region和zone其實是來自于AWS亞馬遜云的概念耗帕,AWS有很多大的區(qū)域穆端,比如說亞太區(qū),北美區(qū)仿便,歐洲去

  • region:區(qū)域体啰,同一地理地區(qū)中的命名 AWS 資源集。一個區(qū)域包含至少兩個可用區(qū)嗽仪。

  • zone:可用區(qū)荒勇。

AWS中,region有us-east-1闻坚、us-east-2等沽翔,分別表示為美國東部(弗吉尼亞北部)、美國東部(俄亥俄州)表示不同區(qū)域窿凤。

而us-east-1可能有us-east-1a仅偎、us-east-1b等不同的zone(可用區(qū))西潘,類似我們的機房的概念。

eureka中的zone的使用

eureka server -zone1

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
    metadata-map.zone: zone1
  client:
    region: cn-east
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka

spring:
  application:
    name: eureka
  profiles:
    active: ${boot.profile:dev}

eureka server -zone2

server:
  port: 8762

eureka:
  instance:
    hostname: localhost
    metadata-map.zone: zone2
  client:
    region: cn-east
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka

spring:
  application:
    name: eureka
  profiles:
    active: ${boot.profile:dev}

Zuul-zone1

spring:
  application:
    name: zuul
server:
  port: 8081

eureka:
  instance:
    metadata-map.zone: zone1
  client:
    region: cn-east
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka

Zuul-zone2

spring:
  application:
    name: zuul
server:
  port: 8082

eureka:
  instance:
    metadata-map.zone: zone2
  client:
    region: cn-east
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka

cart-zone1

server:
  port: 8091

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
    region: cn-east  
  instance:
    status-page-url-path: /info
    health-check-url-path: /health
    metadata-map.zone: zone1    

spring:
  application:
    name: cart
  profiles:
    active: ${boot.profile:dev}

Cart-zone2

server:
  port: 8092

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
    region: cn-east  
  instance:
    status-page-url-path: /info
    health-check-url-path: /health
    metadata-map.zone: zone2    

spring:
  application:
    name: cart
  profiles:
    active: ${boot.profile:dev}

上面的配置概括來說就是哨颂,有三個應用喷市,分別是eureka、zuul威恼、cart品姓。每個應用通過指定不同的profile啟動,共啟動六個微服務箫措。zone1有eureka server腹备、zuul、cart斤蔓,zone2有eureka server植酥、zuul、cart弦牡。

通過zuul來調(diào)用cart應用的controller友驮,原cart應用zone1的接口地址為:POST http://localhost:8091/cart/1

通過zuul網(wǎng)關(guān)來訪問,地址是POST http://localhost:8081/cart/1.

持續(xù)通過訪問zone1的zuul暴露出來的接口 http://localhost:8081/cart/1.發(fā)現(xiàn)始終路由到zone1的cart應用驾锰。

這時候卸留,我們將zone1的cart應用下線,再次訪問椭豫,報錯耻瑟,訪問出錯,過會再訪問赏酥,路由到zone2的cart應用喳整。

總結(jié):

  • 當一個region有多個zone是,微服務調(diào)用應用時優(yōu)先調(diào)用同一個zone內(nèi)的應用裸扶。原因是eureka有個配置prefer-same-zone-eureka框都,默認為true。
  • 當同一個zone內(nèi)的某個微服務下線時姓言,其他微服務調(diào)用這個下線的應用瞬项,首先會報錯,那是因為eureka server中還保留這個應用的注冊信息(eureka client及server都有本地緩存)何荚,過一會再次訪問,發(fā)現(xiàn)已經(jīng)路由到同一個region的其他zone內(nèi)的應用了猪杭。

eureka中region的使用

目前eureka server提供配置remoteRegionUrlsWithName餐塘,key為region的名稱,value為遠程eureka server list皂吮。僅當本地服務不可用時戒傻,從遠程(其他region)獲取服務列表税手。
eureka client 也提供了fetchRemoteRegionsRegistry用于從遠程獲取,它的值為region list 用逗號分隔開需纳。

使用以上兩個配置可以實現(xiàn)類似于異地多活的功能芦倒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市不翩,隨后出現(xiàn)的幾起案子兵扬,更是在濱河造成了極大的恐慌,老刑警劉巖口蝠,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件器钟,死亡現(xiàn)場離奇詭異,居然都是意外死亡妙蔗,警方通過查閱死者的電腦和手機傲霸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眉反,“玉大人昙啄,你說我怎么就攤上這事〈缥澹” “怎么了跟衅?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長播歼。 經(jīng)常有香客問我伶跷,道長,這世上最難降的妖魔是什么秘狞? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任叭莫,我火速辦了婚禮,結(jié)果婚禮上烁试,老公的妹妹穿的比我還像新娘雇初。我一直安慰自己,他們只是感情好减响,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布靖诗。 她就那樣靜靜地躺著,像睡著了一般支示。 火紅的嫁衣襯著肌膚如雪刊橘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天颂鸿,我揣著相機與錄音促绵,去河邊找鬼。 笑死,一個胖子當著我的面吹牛败晴,可吹牛的內(nèi)容都是我干的浓冒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼尖坤,長吁一口氣:“原來是場噩夢啊……” “哼稳懒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起慢味,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤场梆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贮缕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辙谜,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年感昼,在試婚紗的時候發(fā)現(xiàn)自己被綠了装哆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡定嗓,死狀恐怖蜕琴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宵溅,我是刑警寧澤凌简,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站恃逻,受9級特大地震影響雏搂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寇损,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一凸郑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矛市,春花似錦芙沥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至找田,卻和暖如春歌憨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背午阵。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工躺孝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留享扔,地道東北人底桂。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓植袍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親籽懦。 傳聞我的和親對象是個殘疾皇子缕溉,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

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