身為程序員的你了解微服務(wù)嗎珊肃?快去了解荣刑!不然怎么當(dāng)架構(gòu)師

自從微服務(wù)架構(gòu)開始變得火熱以后,越來越多的系統(tǒng)被拆解成了很多個(gè)細(xì)胞一樣的微服務(wù)伦乔。設(shè)想一下厉亏,如果你的系統(tǒng)有100個(gè)微服務(wù)構(gòu)成,要對這100個(gè)微服務(wù)進(jìn)行管理烈和,這絕對是一個(gè)不小的挑戰(zhàn)爱只。所以緊接著又出現(xiàn)了一堆讓人頭暈眼花的概念:服務(wù)注冊發(fā)現(xiàn),請求鏈路追蹤招刹,服務(wù)熔斷恬试,服務(wù)限流窝趣,服務(wù)管控配置,服務(wù)預(yù)警训柴。還有就是一抓一大把的開源工具:Eurake哑舒,Zuul,Ribbon畦粮,hystrix散址,zipkin,dubbo宣赔,Sleuth预麸,Elastic Search,grafna儒将,Promethues吏祸。

這樣,當(dāng)我們在說服務(wù)治理時(shí)钩蚊,是不是把這些概念和工具都用上了就能夠很好的治理這100多個(gè)微服務(wù)了贡翘?稍微用Google或者baidu搜索一下“服務(wù)治理”這個(gè)關(guān)鍵字,就很容易發(fā)現(xiàn)其實(shí)整個(gè)社區(qū)對服務(wù)治理都沒有形成一個(gè)共識砰逻,有人理解的服務(wù)治理是基于dubbo的服務(wù)注冊和服務(wù)發(fā)現(xiàn)鸣驱,有人理解的服務(wù)治理是一整套從請求網(wǎng)關(guān),服務(wù)配置中心到日志中心架構(gòu)體系蝠咆。

所以這篇文章我想從現(xiàn)在的現(xiàn)象出發(fā)踊东,分析這些概念和這些工具究竟是在解決什么問題,然后再嘗試做一個(gè)簡單的歸納和抽象刚操,看看一個(gè)服務(wù)治理體系究竟應(yīng)該解決哪些問題闸翅,而為了解決這些問題應(yīng)該具備哪些能力。

服務(wù)治理的那些藥

如果我們把服務(wù)治理類比成是在給一個(gè)人治病菊霜,那么上面提到的那些概念和工具坚冀,很明顯就是治病的藥了。既然有了這么多藥了鉴逞,那么不妨讓我們先從這些藥下手记某,看看這些流行的藥都能是為了解決什么問題的,然后再看看這些問題之間存在什么關(guān)聯(lián)构捡。

讓我們從Netflix全家桶開始液南,很多微服務(wù)架構(gòu)都是基于這套全家桶的。作為一個(gè)視頻流媒體行業(yè)的公司叭喜,能夠自主開發(fā)并向社區(qū)貢獻(xiàn)了這么多工具是我們應(yīng)該表示感謝和敬意的。由于現(xiàn)在在使用這些工具的時(shí)候都是使用Spring Cloud封裝好的模塊蓖谢,所以下面基于Spring cloud 的工具棧來進(jìn)行介紹:

Eureka捂蕴,這是一個(gè)用來注冊服務(wù)的工具譬涡,通過簡單的配置,在服務(wù)啟動的時(shí)候就會自動注冊到Eureka服務(wù)器上啥辨。

Hystrix涡匀,這是一個(gè)用來保護(hù)服務(wù)的熔斷工具,雖然最近宣布已經(jīng)停止維護(hù)更新了溉知。

Zuul陨瘩,這是一個(gè)用來對請求進(jìn)行路由的服務(wù)網(wǎng)關(guān)工具,最近的zuul2采用了Netty實(shí)現(xiàn)了異步非阻塞編程模型级乍。

Ribbon舌劳,這是一個(gè)用來分配請求的負(fù)載均衡工具

Feign,這是一個(gè)用來更方便調(diào)用其它服務(wù)的工具玫荣,也能進(jìn)行負(fù)載均衡

Archaius甚淡,這是一個(gè)管理配置API的工具

Spring Cloud Config,用來對配置進(jìn)行管理捅厂,可以把每個(gè)服務(wù)的配置放在遠(yuǎn)端服務(wù)器以方便進(jìn)行配置修改

Spring Cloud Sleuth贯卦,Tracing采集工具包,對Zipkin焙贷,HTrace進(jìn)行了封裝

Spring Cloud Consul撵割,封裝了Consul操作,同樣是用來進(jìn)行服務(wù)注冊發(fā)現(xiàn)的

Spring Cloud Zookeeper辙芍,封裝了Zookeeper啡彬,也是用來進(jìn)行服務(wù)注冊發(fā)現(xiàn)的

Spring Cloud Gateway,給Spring MVC提供API網(wǎng)關(guān)功能的工具沸手,里面也包含安全處理等特性

除了Spring Cloud和Netfix提供的這些工具以外外遇,還有下面這些工具也經(jīng)常在服務(wù)監(jiān)控治理中被使用:

Dubbo,自稱是一個(gè)高性能的Java RPC框架契吉,但是其實(shí)廣泛用于服務(wù)注冊發(fā)現(xiàn)跳仿,提供三個(gè)核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯(cuò)和負(fù)載均衡捐晶,服務(wù)注冊發(fā)現(xiàn)菲语。

logback,java日志框架惑灵,是log4j的升級版本

ElasticSearch山上,雖然是一個(gè)搜索引擎和分析框架,但因?yàn)樘峁┖芎玫拇鎯筒樵冃阅苡⒅В越?jīng)常用于日志的采集和存儲

Kibana佩憾,Elastic的可視化插件,可以配合Elastic使用可視化查詢?nèi)罩?/p>

logstash,Elastic的日志分析工具

grafna妄帘,時(shí)序性分析工具楞黄,提供漂亮的圖形化界面

Promethues,強(qiáng)大系統(tǒng)監(jiān)控和報(bào)警框架抡驼,提供多維度數(shù)據(jù)模型鬼廓,靈活強(qiáng)大的查詢語句,有多種可視化圖形界面

Spring boot admin致盟,用來管理Spring Boot應(yīng)用的工具碎税,提供可視化的用戶界面

Zipkin,分布式追蹤工具馏锡,用來采集程序的延時(shí)數(shù)據(jù)

Htrace雷蹂,Apache的分布式追蹤工具。

resilience4j眷篇,用來被Hystrix指定作為熔斷的替代工具原茅。

雖然這兩個(gè)長長的列表已經(jīng)羅列了超過20個(gè)各種工具了菇民,但是這20多個(gè)也僅僅是整個(gè)微服務(wù)治理生態(tài)工具鏈中的一小部分激况,你肯定還知道一些我沒有列出來的工具帅戒。由于這里我們的目的并不是找出所有的藥,而是想分析一下這些流行的藥都有什么特點(diǎn)昧港,都是治什么病的擎椰。所以就先基于這些藥,看看他們的共性是什么创肥。

如果把功能相同的進(jìn)行一下歸類达舒,會發(fā)現(xiàn)有這樣幾個(gè)主要功能:

服務(wù)注冊發(fā)現(xiàn):Eurake,Dobbo叹侄,Consul巩搏,ZooKeeper

服務(wù)配置:Spring Cloud Config,Archaius

服務(wù)熔斷:Hystrix趾代,resilience4j

網(wǎng)關(guān):Zuul贯底,Spring Cloud Gateway

負(fù)載均衡:Ribbon,F(xiàn)eign

追蹤工具:Sleuth撒强,Zipkin禽捆,Htrace

日志采集:logback,ElasticSearch

監(jiān)控平臺:Promethues飘哨,Kibana胚想,grafna,Spring boot admin

這樣面對這些紛繁復(fù)雜的工具我們有了一個(gè)基本的劃分芽隆,當(dāng)然即便是這8個(gè)分類還是有點(diǎn)多浊服,而且相互之間的關(guān)系也不明確统屈,為什么會有這8個(gè)分類的原因也不清楚。下面就一起深入一下牙躺,看看這些工具之間的內(nèi)在關(guān)系究竟是什么鸿吆。

服務(wù)治理究竟要治的是什么?

讓我們先放下微服務(wù)述呐,像《微服務(wù)設(shè)計(jì)》那本書中說的一樣,把自己想象成一個(gè)城市規(guī)劃師蕉毯,我們的目標(biāo)不是治理微服務(wù)乓搬,而是要治理一個(gè)城市的交通,那么我們會怎么思考代虾?

在進(jìn)行城市交通規(guī)劃之前首先要做的第一個(gè)事情是收集信息进肯,要能夠知道這個(gè)城市發(fā)生了什么,所以在各個(gè)路口需要安裝采集探頭棉磨,記錄車來車往的信息江掩。有了信息以后就需要對信息進(jìn)行分析了,那么就需要可視化的圖形界面乘瓤,能夠一眼就看出什么地方出了問題环形,通往哪個(gè)工廠的路壞了。發(fā)現(xiàn)了問題就要解決問題了衙傀,限制一下?lián)矶侣范蔚牧髁刻б鳎讶ネ粋€(gè)公園的車輛導(dǎo)向到另外一個(gè)類似的公園。最后统抬,如果把城市作為一個(gè)國家來考慮火本,那么每個(gè)進(jìn)入這個(gè)城市的車輛都需要進(jìn)行檢查,看看有沒有攜帶違禁品聪建,最后給這些不熟悉道路的外地車規(guī)劃路線钙畔。通過上面這個(gè)思考的過程,我們發(fā)現(xiàn)要對一個(gè)城市進(jìn)行治理的時(shí)候金麸,第一要采集信息擎析,然后要能夠?qū)Σ杉男畔⑦M(jìn)行監(jiān)控和分析,最后根據(jù)分析的結(jié)果采取對應(yīng)的治理策略钱骂。另外從整體安全的角度考慮還需要一個(gè)守門人叔锐。

因此我們也用同樣的思路來思考服務(wù)治理,網(wǎng)關(guān)就是整個(gè)整體的守門人见秽,日志采集愉烙,追蹤工具,服務(wù)注冊發(fā)現(xiàn)都是用來采集信息的解取,然后需要監(jiān)控平臺來展現(xiàn)這些采集的信息步责,并進(jìn)行監(jiān)控和分析。最后根據(jù)分析的結(jié)果采取治理策略,有的服務(wù)快撐不住了要限流蔓肯,有的服務(wù)壞了要熔斷遂鹊,并且還能夠及時(shí)的調(diào)整這些服務(wù)的配置。

下面的腦圖就從這四個(gè)方面構(gòu)建了一個(gè)簡易的服務(wù)治理體系:請求網(wǎng)關(guān)蔗包,信息采集秉扑,信息分析,治理策略

服務(wù)治理體系

作為對當(dāng)前服務(wù)治理領(lǐng)域各種紛繁復(fù)雜工具的一次簡單梳理调限,這個(gè)體系不一定是完全準(zhǔn)確的舟陆。但是總不能每次說到服務(wù)治理的時(shí)候我們都把幾十個(gè)工具拿出來看看能用哪個(gè)工具吧。我希望達(dá)到的目的是耻矮,當(dāng)大家需要對微服務(wù)進(jìn)行治理和監(jiān)控的時(shí)候秦躯,能夠用這個(gè)簡易的體系做個(gè)參考,明確的知道在請求網(wǎng)關(guān)裆装,信息采集踱承,信息分析,治理策略這四個(gè)方面還缺少了什么東西哨免。

全網(wǎng)最新架構(gòu)實(shí)戰(zhàn)文檔:高并發(fā)+分布式+微服務(wù)+SpringBoot+Nginx茎活。有需要的小伙伴們幫忙轉(zhuǎn)發(fā)一下然后再關(guān)注我私信回復(fù)“架構(gòu)”獲取吧!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琢唾,一起剝皮案震驚了整個(gè)濱河市妙色,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慧耍,老刑警劉巖身辨,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芍碧,居然都是意外死亡煌珊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門泌豆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來定庵,“玉大人,你說我怎么就攤上這事踪危∈哒悖” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵贞远,是天一觀的道長畴博。 經(jīng)常有香客問我,道長蓝仲,這世上最難降的妖魔是什么俱病? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任官疲,我火速辦了婚禮,結(jié)果婚禮上亮隙,老公的妹妹穿的比我還像新娘途凫。我一直安慰自己,他們只是感情好溢吻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布维费。 她就那樣靜靜地躺著,像睡著了一般促王。 火紅的嫁衣襯著肌膚如雪掩完。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天硼砰,我揣著相機(jī)與錄音,去河邊找鬼欣硼。 笑死题翰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诈胜。 我是一名探鬼主播豹障,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼焦匈!你這毒婦竟也來了血公?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缓熟,失蹤者是張志新(化名)和其女友劉穎累魔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體够滑,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垦写,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彰触。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梯投。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖况毅,靈堂內(nèi)的尸體忽然破棺而出分蓖,到底是詐尸還是另有隱情,我是刑警寧澤尔许,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布么鹤,位于F島的核電站,受9級特大地震影響味廊,放射性物質(zhì)發(fā)生泄漏午磁。R本人自食惡果不足惜尝抖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迅皇。 院中可真熱鬧昧辽,春花似錦、人聲如沸登颓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽框咙。三九已至咕痛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喇嘱,已是汗流浹背茉贡。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留者铜,地道東北人腔丧。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像作烟,于是被迫代替她去往敵國和親愉粤。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

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