Nacos——服務發(fā)現

一尖昏、服務的演變之路

1.1)單體架構(all in one)

單機架構在組別開發(fā)時會碰到代碼版本提交和獲取最新版本代碼時組別成員之間產生很多沖突,在測試時不同服務提交新版本都會導致整個測試環(huán)境的重啟(某一個服務需要在測試環(huán)境遠端Debug)從而拖慢測試進度——類似于Oracle這種大型單體修改一個小功能重啟需要二三十分鐘

單體項目缺點:

某些服務比如庫存更加依賴IO构资,可以偏向于數倉磁盤進行針對性提升抽诉,某些服務比如會員服務針對于會員的下單習慣進行算法推薦更依賴CPU計算,可以偏向于高CPU/高內存進行針對性提升吐绵。而單體只能又是大磁盤迹淌、又是高CPU高內存河绽。

在于服務選型方面比如訂單服務需要將Hibernetes轉型為mybatis需要排除對于其它服務的影響,而且很容易牽一發(fā)動全身很多框架之間不兼容的隱性Bug出現

單體項目優(yōu)點:

比微服務省略很多維護成本唉窃,部署簡單一個jar包不關心啟動順序耙饰,不需要RPC調用都是本地效率高,像初創(chuàng)公司也不需要很多研發(fā)人員纹份。

架構也就是M(Model)V(View)C(Controller)榔幸,Model層對應infrastructure負責邏輯計算,View對應Service層負責計算出來結果展現矮嫉,Contorller對應Web負責計算出來結果承裝從而向外部展現

1.2)集群級垂直化

隨著競品越來越多服務量增大削咆,服務進行橫向拆分不同系統(tǒng)打包成不同war包,有時間的將數據庫也進行拆分蠢笋,內部通訊可以使用RPC外部可以使用Http拨齐,原先10個請求只能打到一個Tomcat服務器,現在兩個Tomcat平攤各自只需要承擔5個請求昨寞,再往下平攤到不同的war包上又分攤了壓力

以系統(tǒng)為粒度會出現不同系統(tǒng)對于差不多的功能都需要自己去反復實現

1.3)SOA

將系統(tǒng)為粒度改成提取出來的基礎服務為粒度打破業(yè)務壁壘瞻惋,上層的系統(tǒng)不再像系統(tǒng)而像是不同服務拼裝出來的一個虛擬盒子,比如訂單系統(tǒng)需要訂單ID為3的其它信息不是將請求直接發(fā)給其它系統(tǒng)而是通過ESB企業(yè)服務總線(通常稱為BUS)轉發(fā)給其他系統(tǒng)援岩,其他系統(tǒng)根據訂單ID提供自己掌握的信息到BUS歼狼,再由訂單系統(tǒng)BUS去消費

隨著服務量越來越大SOA的承載力全部壓在ESB企業(yè)服務總線,超過一定量級還是滿足不了

1.4)微服務

服務演變可以通過一個例子進行概括:

比如一個請求直接打到單體項目(地球)享怀,直接打到縱向拆分中(中國羽峰、美國),直接打到SOA(上海添瓷、北京梅屉、深圳),直接打到微服務(海淀區(qū)鳞贷、閔行區(qū)坯汤、南山區(qū)、番禺區(qū))搀愧,隨著粒度越來越精細所能夠承擔的壓力也越來越分散

幾百個war包導致上線需要排隊惰聂,排到你負責項目上線時將需要的資源配置和上線的war包交給運維進行調試有問題當前解決,短時間解決不了還需要輪到下一個排隊的人咱筛,自己回去改完再排隊很麻煩

自動部署解決了運維壓力大的問題搓幌,通過docker和k8s研發(fā)人員自己就可以搞定

微服務對于研發(fā)人員的壓力增大在于原先一個服務中能調用的,現在拆分到十個微服務中眷蚓,我需要的數據不在我的微服務中需要調用其它服務鼻种,又需要重新開放接口打成jar包反番,我的微服務再引用jar包——拆分沒有具體標準拆的太細會導致通信成本過高(可以按DDD拆分)

微服務更多關注服務之間是不是做到了完全的解耦沙热,類似于單一職責原則叉钥,而在重用性方面更關注解決大服務的重用,一些微小服務的重用并不是那么著急解決

二篙贸、Spring Cloud介紹

Netflix穩(wěn)定性強于Alibaba投队,Alibaba功能更加豐富但需要更強的研發(fā)能力處理發(fā)現的Bug

Config對應Nacos配置中心,Eureka對應Nacos服務發(fā)現爵川,Zuul對應Gateway(Sping Cloud自己研發(fā)團隊)敷鸦,Ribbon和Feign組合成OpenFeign對應Dubbo,Hystrix對應Sentinel

三寝贡、什么是服務

3.1)服務發(fā)現的概念

有問題自動重啟之后IP改變扒披,服務注冊中心通過心跳實時檢測更新列表并將列表發(fā)送給需要獲取服務列表的機器

3.2)服務發(fā)現的兩種方式——客戶端服務發(fā)現

不常用

3.3)服務發(fā)現的兩種方式——服務端服務發(fā)現

常用,負載均衡在網關做的概率大

3.4)服務發(fā)現技術對比

CP高一致性圃泡;AP高可用性碟案,兩者是沖突的無法同時保證,比如分布式鎖配置Redis集群的一致性颇蜡,比如Redis集群A价说、B、C风秤,B宕機了但是Redis的高可用性會通過A鳖目、C繼續(xù)提供服務,那等B恢復了需要同步A缤弦、C的數據领迈,那還沒同步完之前請求打到B就沒辦法保證數據高一致性——解決方式是通過zk保證分布式鎖的高一致性,zk發(fā)現集群有問題就不接請求了碍沐,等集群恢復再接收

3.5)Nacos架構圖

sidecar額外掛載的程序(相當于抗日片三輪車旁邊的座位)惦费,Consumer請求Provider根據Name而不是IP+Port

Config Service表示配置中心,Naming Service表示服務發(fā)現抢韭,Nacos Core核心包薪贫,Consistency Protocol底層協(xié)議,Nacos Console控制界面網頁

四刻恭、Nacos實戰(zhàn)(代碼演示單機啟動)

nacos-comsumer依賴也一樣
sping.application.name就是Nacos架構圖中的Name
返回provider hello
啟動
Provider成功注冊服務
啟動
Consumer成功注冊服務

五瞧省、Nacos核心源碼解析

5.1)SpringCloud完成服務注冊的時機

springboot啟動會將META-INFO下spring.factories中的類自動注入
ApplicationListener提供接收事件功能
不管是Nacos融入SpringCloud還是其它組件,針對register()方法的級別都是ServiceRegistry<R>這個接口


5.2)NacosServiceRegistry的實現原理

5.3)服務提供者地址查詢原理

5.4)服務注冊原理

createEmptyService()

5.5)服務發(fā)現原理

服務地址動態(tài)感知原理

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鳍贾,一起剝皮案震驚了整個濱河市鞍匾,隨后出現的幾起案子,更是在濱河造成了極大的恐慌骑科,老刑警劉巖橡淑,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異咆爽,居然都是意外死亡梁棠,警方通過查閱死者的電腦和手機置森,發(fā)現死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來符糊,“玉大人凫海,你說我怎么就攤上這事∧新Γ” “怎么了行贪?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長模闲。 經常有香客問我建瘫,道長尸折,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任拣播,我火速辦了婚禮,結果婚禮上收擦,老公的妹妹穿的比我還像新娘。我一直安慰自己塞赂,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布宴猾。 她就那樣靜靜地躺著圆存,像睡著了一般仇哆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上油讯,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天延欠,我揣著相機與錄音,去河邊找鬼兔综。 笑死,一個胖子當著我的面吹牛涧窒,可吹牛的內容都是我干的碌宴。 我是一名探鬼主播蒙畴,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼膳凝,長吁一口氣:“原來是場噩夢啊……” “哼蹬音!你這毒婦竟也來了?” 一聲冷哼從身側響起劫狠,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤永部,失蹤者是張志新(化名)和其女友劉穎苔埋,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體组橄,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡玉工,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年遵班,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弥激。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡愿阐,死狀恐怖缨历,靈堂內的尸體忽然破棺而出糙麦,到底是詐尸還是另有隱情丛肮,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布焚廊,位于F島的核電站咆瘟,受9級特大地震影響诽里,放射性物質發(fā)生泄漏。R本人自食惡果不足惜灸眼,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一幢炸、第九天 我趴在偏房一處隱蔽的房頂上張望拒贱。 院中可真熱鬧,春花似錦闸天、人聲如沸斜做。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贷帮。三九已至诱告,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锄禽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宵晚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓搜贤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唁影。 傳聞我的和親對象是個殘疾皇子据沈,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容