微服務(wù)

服務(wù)注冊(cè)與發(fā)現(xiàn)
https://zhuanlan.zhihu.com/p/367854163
服務(wù)提供者(Service Provider):服務(wù)啟動(dòng)時(shí)將服務(wù)信息注冊(cè)到服務(wù)注冊(cè)表宽闲,服務(wù)退出時(shí)將服務(wù)注冊(cè)表的服務(wù)信息刪除掉。
服務(wù)消費(fèi)者(Service Consumer):從服務(wù)注冊(cè)表獲取服務(wù)提供者的最新網(wǎng)絡(luò)位置等服務(wù)信息,維護(hù)與服務(wù)提供者之間的通信窄瘟。
服務(wù)注冊(cè)表(Service Registry):聯(lián)系服務(wù)提供者和服務(wù)消費(fèi)者的橋梁秧了,維護(hù)服務(wù)提供者的最新網(wǎng)絡(luò)位置等服務(wù)信息赃泡。

服務(wù)注冊(cè)表是一個(gè)分布式的kv數(shù)據(jù)庫遍蟋,因此税灌,存在CAP問題限匣。根據(jù)CAP原則:分布式系統(tǒng)不能同時(shí)支持 C(一致性)、A(可用性)谍夭、P(分區(qū)容錯(cuò)性)需要根據(jù)自己的實(shí)際業(yè)務(wù)需求選擇CAP的其中兩個(gè)。
其提供了一個(gè)管理API和一個(gè)查詢API卤材。

Zookeeper
https://www.cnblogs.com/adamans/articles/13409234.html
Zookeeper 支持 CP,當(dāng)集群中如果有節(jié)點(diǎn)宕機(jī)則需要選舉 leader(FastLeaderElection),選舉過程需要 30 至 120 秒,選舉過程時(shí)集群不可用坯认,犧牲時(shí)間來保證數(shù)據(jù)一致性。

注冊(cè)與發(fā)現(xiàn)的工作流程
1.假設(shè) ZK 已經(jīng)啟動(dòng)氓涣,服務(wù)提供者啟動(dòng)時(shí)把服務(wù)注冊(cè)到 ZK 注冊(cè)中心;
2.ZK注冊(cè)中心和服務(wù)提供者之間建立一個(gè) Socket 長連接陋气,ZK 注冊(cè)中心定時(shí)向每個(gè)服務(wù)提供者發(fā)數(shù)據(jù)包劳吠,如果服務(wù)提供者沒響應(yīng),則剔除該服務(wù)提供者實(shí)例巩趁,把更新后的服務(wù)列表發(fā)送給所有服務(wù)消費(fèi)者(即通知)痒玩;(ZK通過創(chuàng)建當(dāng)前服務(wù)臨時(shí)節(jié)點(diǎn),當(dāng)ZK與服務(wù)提供者斷開連接(session超時(shí))則會(huì)刪除該臨時(shí)節(jié)點(diǎn))
3.服務(wù)消費(fèi)者啟動(dòng)時(shí)到 ZK 注冊(cè)中心獲取一份服務(wù)列表緩存到本地供以后使用议慰;
4.服務(wù)消費(fèi)者遠(yuǎn)程調(diào)用服務(wù)時(shí)蠢古,先從本地緩存找,如果找到則直接發(fā)起服務(wù)調(diào)用别凹,如果沒有則到 ZK 注冊(cè)中心獲取服務(wù)列表緩存到本地后再發(fā)起服務(wù)調(diào)用草讶;
5.當(dāng)其中一個(gè)服務(wù)提供者宕機(jī)或正常關(guān)閉時(shí),ZK 注冊(cè)中心會(huì)把該節(jié)點(diǎn)剔除炉菲,并通知所有服務(wù)消費(fèi)者更新本地緩存堕战;(ZK節(jié)點(diǎn)watch機(jī)制)
6.當(dāng)這個(gè)服務(wù)提供者正常啟動(dòng)后,ZK 注冊(cè)中心也能感知到拍霜,并通知所有服務(wù)消費(fèi)者更新本地緩存嘱丢。

Eureka
Eureka Server 集群當(dāng)中的每個(gè)節(jié)點(diǎn)都是通過 Replicate(即復(fù)制)來同步數(shù)據(jù),沒有主節(jié)點(diǎn)和從節(jié)點(diǎn)之分祠饺,所有節(jié)點(diǎn)都是平等而且數(shù)據(jù)都保持一致越驻。因?yàn)榻Y(jié)點(diǎn)之間是通過異步方式進(jìn)行同步數(shù)據(jù),不保證強(qiáng)一致性道偷,保證可用性缀旁,所以是 AP。

注冊(cè)與發(fā)現(xiàn)的工作流程
1.假設(shè) Eureka Server 已經(jīng)啟動(dòng)勺鸦,Eureka Client(服務(wù)提供者)啟動(dòng)時(shí)把服務(wù)注冊(cè)到 Eureka Server诵棵;
2.Eureka Client(服務(wù)提供者)每 30 秒(默認(rèn)可配置)向 Eureka Sever 發(fā) http 請(qǐng)求(即心跳),即服務(wù)續(xù)約祝旷;
3.Eureka Server90 秒沒有收到向 Eureka Client(服務(wù)提供者)的心跳請(qǐng)求履澳,則統(tǒng)計(jì) 15 分鐘內(nèi)是否存在 85% 的 Eureka Client(服務(wù)提供者)沒有發(fā)心跳嘶窄,如果是則進(jìn)行自我保護(hù)狀態(tài)(比如網(wǎng)絡(luò)不穩(wěn)定),如果不是則剔除該 Eureka Client(服務(wù)提供者)實(shí)例距贷;
4.Eureka Client(服務(wù)消費(fèi)者)定時(shí)調(diào)用 Eureka Server 接口獲取服務(wù)列表更新本地緩存柄冲;
5.Eureka Client(服務(wù)消費(fèi)者)遠(yuǎn)程調(diào)用服務(wù)時(shí),先從本地緩存找忠蝗,如果找到則直接發(fā)起服務(wù)調(diào)用现横,如果沒有則到 Eureka Server 獲取服務(wù)列表緩存到本地后再發(fā)起服務(wù)調(diào)用;
6.Eureka Client(服務(wù)提供者)應(yīng)用關(guān)閉時(shí)會(huì)發(fā) HTTP 請(qǐng)求到 Eureka Server阁最,服務(wù)端接受請(qǐng)求后把該實(shí)例剔除戒祠。


RPC
rpc:對(duì)于Java程序員而言,RPC就是遠(yuǎn)程方法調(diào)用速种。

遠(yuǎn)程方法調(diào)用和本地方法調(diào)用是相對(duì)的兩個(gè)概念姜盈,本地方法調(diào)用指的是進(jìn)程內(nèi)部的方法調(diào)用,而遠(yuǎn)程方法調(diào)用指的是兩個(gè)進(jìn)程內(nèi)的方法相互調(diào)用配阵。
如果實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用馏颂,基本的就是通過網(wǎng)絡(luò),通過傳輸數(shù)據(jù)來進(jìn)行調(diào)用棋傍。

  1. RPC over Http:基于Http協(xié)議來傳輸數(shù)據(jù)
  2. PRC over Tcp:基于Tcp協(xié)議來傳輸數(shù)據(jù)

Dubbo
Dubbo一開始的定位就是RPC救拉,專注于兩個(gè)服務(wù)之間的調(diào)用。但隨著微服務(wù)的盛行瘫拣,除開服務(wù)調(diào)用之外亿絮,Dubbo也在逐步的涉獵服務(wù)治理、服務(wù)監(jiān)控麸拄、服務(wù)網(wǎng)關(guān)等等壹无,所以現(xiàn)在的Dubbo目標(biāo)已經(jīng)不止是RPC框架了,而是和Spring Cloud類似想成為了一個(gè)服務(wù)框架感帅。

  1. 負(fù)載均衡斗锭、集群容錯(cuò)、服務(wù)降級(jí)
  2. 本地存根失球、本地偽裝岖是、參數(shù)回調(diào)
  3. 異步調(diào)用、泛化調(diào)用实苞、動(dòng)態(tài)配置
  4. 管理臺(tái)豺撑、動(dòng)態(tài)配置、服務(wù)路由

Feign 可以與 Hystrix 組合使用黔牵,支持熔斷回退
Feign 可以與ProtoBuf實(shí)現(xiàn)快速的RPC調(diào)用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末聪轿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子猾浦,更是在濱河造成了極大的恐慌陆错,老刑警劉巖灯抛,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異音瓷,居然都是意外死亡对嚼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門绳慎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵竖,“玉大人,你說我怎么就攤上這事杏愤∶移觯” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵珊楼,是天一觀的道長通殃。 經(jīng)常有香客問我,道長亥曹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任恨诱,我火速辦了婚禮媳瞪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘照宝。我一直安慰自己蛇受,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布厕鹃。 她就那樣靜靜地躺著兢仰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剂碴。 梳的紋絲不亂的頭發(fā)上把将,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音忆矛,去河邊找鬼察蹲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛催训,可吹牛的內(nèi)容都是我干的洽议。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼漫拭,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼亚兄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起采驻,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤审胚,失蹤者是張志新(化名)和其女友劉穎匈勋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菲盾,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颓影,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了懒鉴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诡挂。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖临谱,靈堂內(nèi)的尸體忽然破棺而出璃俗,到底是詐尸還是另有隱情,我是刑警寧澤悉默,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布城豁,位于F島的核電站,受9級(jí)特大地震影響抄课,放射性物質(zhì)發(fā)生泄漏唱星。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一跟磨、第九天 我趴在偏房一處隱蔽的房頂上張望间聊。 院中可真熱鬧,春花似錦抵拘、人聲如沸哎榴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尚蝌。三九已至,卻和暖如春充尉,著一層夾襖步出監(jiān)牢的瞬間飘言,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工驼侠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留热凹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓泪电,卻偏偏與公主長得像般妙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子相速,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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