微服務(wù)架構(gòu)中的常用開源工具

搞微服務(wù)真的很麻煩的,為了解決單點的性能問題引入微服務(wù)印机,同時也引入了無數(shù)新的問題出現(xiàn)。對于這些問題鞭衩,亦有一些新的概念和工具被發(fā)明出來学搜,這篇記錄一下,我見過的各種微服務(wù)中的開源工具论衍,以及它們所存在的意義瑞佩,提供了哪些便利或者解決了什么問題。


基礎(chǔ)設(shè)施

ZooKeeper

ZooKeeper是一個具有高可靠性的分布式的協(xié)作工具坯台,基于PAXOS協(xié)議炬丸,其實現(xiàn)了一個可保證分布式一致性的類文件系統(tǒng)。
利用它的這個機制以及它提供操作與讀取該類文件系統(tǒng)的API,分布式系統(tǒng)可用它實現(xiàn)各種功能稠炬,包括數(shù)據(jù)發(fā)布/訂閱焕阿,負載均衡命名服務(wù)首启,分布式協(xié)調(diào)/通知暮屡,集群管理Master選舉毅桃,分布式鎖褒纲,分布式隊列服務(wù)發(fā)現(xiàn)等多個分布式中常見的需求應(yīng)用場景。

rabbitmq

基于AMQP協(xié)議钥飞,使用非常小眾的erlang語言編寫的分布式消息隊列莺掠,有非常詳實的文檔與tutorials,同時提供了web頁面读宙,用于管理和查看隊列的使用情況彻秆。

jumpserver

使用Django編寫的跳板機系統(tǒng),可通過終端登錄各測試機论悴,同時提供web應(yīng)用掖棉,可用于某服務(wù)器上文件的上傳與下載,跑腳本什么的再方便不過了膀估。
它有著全套的權(quán)限管理幔亥,遵循 Web 2.0 規(guī)范,配備了業(yè)界領(lǐng)先的 Web Terminal 解決方案察纯,交互界面美觀帕棉、用戶體驗好,采納分布式架構(gòu)饼记,支持多機房跨區(qū)域部署香伴,中心節(jié)點提供 API,各機房部署登錄節(jié)點具则,可橫向擴展即纲、無并發(fā)限制。

azkaban

由linkedin研發(fā)的分布式調(diào)度工具博肋,使用Java編寫低斋,可使用Cron的配置方式來管理分布式調(diào)度任務(wù),數(shù)據(jù)落于MySQL匪凡,整體還是蠻重的膊畴。
具有便于使用的web UI,并且在任務(wù)執(zhí)行成功或失敗時可以發(fā)送郵件通知病游,并且提供重試機制唇跨。

Apollo

攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置买猖,配置修改后能夠?qū)崟r推送到應(yīng)用端改橘,并且具備規(guī)范的權(quán)限、流程治理等特性政勃,適用于微服務(wù)配置管理場景唧龄。
服務(wù)端基于Spring Boot和Spring Cloud開發(fā),提供了Java奸远,Python等語言的接入sdk既棺。

RPC框架

微服務(wù)中RPC框架當然是少不了的,最常用的是Facebook研發(fā)的thrift懒叛,以及阿里的dubbo丸冕,現(xiàn)都歸于Apache基金會下,此外薛窥,餓了么研發(fā)的thriftpy在Python領(lǐng)域也比較優(yōu)秀胖烛。
當然,在Thrift框架的上層诅迷,公司往往會再包一層佩番,做為自己的框架,在其中引入sentry罢杉、zookeeper趟畏,gitlab地址pull idl等基于公司具體情況的處理。

發(fā)布

jenkins

jenkins是由Java編寫的開發(fā)自動化平臺滩租,其本身提供了1000+的plugins可供各種自動化場景使用赋秀,使用者可以通過編寫jenkinsfile來自定義自己的自動化任務(wù)。
使用jenkins的常見場景為項目構(gòu)建律想,運行自動化測試猎莲,靜態(tài)代碼分析項目部署

spinnaker

spinnaker是一個由Netflix開發(fā)的使用Python編寫的用于持續(xù)集成的平臺技即,主要用于結(jié)合容器發(fā)布各環(huán)境的代碼著洼,發(fā)布地點可以是各種云平臺,包括 AWS EC2, Kubernetes, Google Compute Engine, Google Kubernetes Engine, Google App Engine, Microsoft Azure和Openstack等而叼,而這郭脂,已經(jīng)包含了市場上所有主流的云服務(wù)商。

它的一個很大的特點是自動化澈歉,可以通過git events, Jenkins, Travis CI, Docker, CRON等事件來觸發(fā)構(gòu)建而不用人工手動去操作,在工作中的一個非常便利的常見使用場景是在自己的開發(fā)分支使用git push命令后屿衅,spinnaker將會自動構(gòu)建這個branch的容器埃难,并生成相應(yīng)的訪問url,真的是非常方便。

kubernetes

使用Go語言編寫的容器管理平臺涡尘,它的官網(wǎng)對自己的簡介為Production-Grade Container Orchestration忍弛,Automated container deployment, scaling, and management。
用于編排考抄、發(fā)布容器细疚,提供水平伸縮性,便與擴展川梅,并且可以登錄某個容器疯兼,運行命令、查看log等贫途。

監(jiān)控

sentry

你不可能沒聽說過的跨平臺Bug追蹤網(wǎng)站吧彪,Github上17000+star,其受歡迎程度可見一般丢早。它使用Python編寫姨裸,并且提供了大部分主流語言的API供其使用,它能很好地融入log系統(tǒng)中怨酝,完備地記下問題出現(xiàn)當時的調(diào)用鏈與場景傀缩。
常見的使用方式為將它納入到各種公司框架中,使得開發(fā)人員直接拿到logger农猬,當使用warning或error時赡艰,sentry就會記錄這個事件并發(fā)郵件給到關(guān)心它的人。

open-falcon

小米開源的微服務(wù)監(jiān)控系統(tǒng)盛险,使用它可以查看各服務(wù)器的狀態(tài)瞄摊,包括網(wǎng)絡(luò)IO,與CPU運行情況苦掘,以及數(shù)據(jù)庫的負載换帜。
生成user friendly的圖表,提供強大的統(tǒng)計與自定義功能鹤啡,用戶可以按照自己想要的方式獲取信息惯驼。

kibana

elastic團隊的作品,用于數(shù)據(jù)收集與分析递瑰,可以用于根據(jù)各種條件(時間祟牲、關(guān)鍵字)等來查詢各環(huán)境的日志,正是根據(jù)這些日志抖部,它可以生成各種統(tǒng)計圖表等说贝,被稱為elastic技術(shù)棧的視窗。
不過說實話它這個查詢的界面有些難懂慎颗,不夠user friendly乡恕。

cat

cat是大眾點評開源的一套基于java的實時應(yīng)用監(jiān)控平臺言询,主要應(yīng)用于服務(wù)中間件框架(MVC 框架、RPC 框架傲宜、持久層框架运杭、分布式緩存框架)的監(jiān)控,為開發(fā)和運維提供各項性能指標函卒、健康檢查辆憔、自動報警等可視化服務(wù)。
除了上面提到的工具提供的錯誤日志統(tǒng)計报嵌、CPU負載虱咧、各種連接池狀態(tài)之外,cat還可以記錄跨越系統(tǒng)邊界的程序訪問行為沪蓬,比如遠程調(diào)用彤钟,數(shù)據(jù)庫調(diào)用,也適合執(zhí)行時間較長的業(yè)務(wù)邏輯監(jiān)控跷叉,可以用來記錄一段代碼的執(zhí)行時間和次數(shù)逸雹,特別地,對Java應(yīng)用程序云挟,它可以上報一些如JVM內(nèi)存梆砸、GC等核心指標。
不只如此园欣,對于業(yè)務(wù)方面的指標帖世,也可以利用它來進行監(jiān)控和統(tǒng)計,比如訂單數(shù)沸枯、交易額日矫、支付成功率等。
功能真的是很全面了绑榴,有很多業(yè)界公司都在使用這個工具哪轿,但忍不住要吐槽的一點是,界面可能真的有點丑翔怎,不如上面的sentry好看窃诉。

其他

Gitlab

開源的用于公司自建代碼倉庫的項目,其功能絲毫不遜于Github赤套。

phabricator

使用PHP編寫的code review平臺飘痛。

redmine

使用ROR編寫的項目管理工具,主要用于線上bug的提出容握、跟蹤與管理宣脉。


以上內(nèi)容只是基于我在工作中接觸過的,但這并不是全部剔氏,還有一堆其他的自研應(yīng)用用于優(yōu)化整個流程與開發(fā)效率脖旱,比如Nginx配置平臺堪遂,以及一些基于業(yè)務(wù)的數(shù)據(jù)分析平臺,數(shù)據(jù)打點平臺萌庆,API管理應(yīng)用(與spinnaker集成直接將前后端連接起來),灰度發(fā)布平臺币旧,AB Test實驗管理平臺践险,等等,基于一個思想就是有開源的就嘗試使用開源的產(chǎn)品吹菱,找不到合適的巍虫,也不妨花些時間自己研發(fā),只要它可以帶來整體效率的提升鳍刷,便是很有意義的占遥。

當然,我上面所提到的例子输瓜,可能并不是某個領(lǐng)域的最佳的解決方案瓦胎,或者在整個微服務(wù)架構(gòu)內(nèi)還不夠全面,希望大家可以分享一下自己覺得好的工具尤揣,我也會隨著自己見識的不斷提升搔啊,來逐漸更新這個列表。

總之北戏,devops负芋、微服務(wù)真的是有太多的學(xué)問,還有很多我沒有接觸過的東西嗜愈,里面的水真的是無限深旧蛾。有太多的工具,太多的可以優(yōu)化的點蠕嫁,面對這些我們倒也用不著驚慌與煩躁锨天,工具是為了給人帶來便利的,一個工具的出現(xiàn)必然是為了解決或者優(yōu)化一個問題拌阴,了解得越多绍绘,自己對這種大型網(wǎng)站的整體理解與感知就會更深一些。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迟赃,一起剝皮案震驚了整個濱河市陪拘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纤壁,老刑警劉巖左刽,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異酌媒,居然都是意外死亡欠痴,警方通過查閱死者的電腦和手機迄靠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喇辽,“玉大人掌挚,你說我怎么就攤上這事∑凶桑” “怎么了吠式?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抽米。 經(jīng)常有香客問我特占,道長,這世上最難降的妖魔是什么云茸? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任是目,我火速辦了婚禮,結(jié)果婚禮上标捺,老公的妹妹穿的比我還像新娘懊纳。我一直安慰自己,他們只是感情好宜岛,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布长踊。 她就那樣靜靜地躺著,像睡著了一般萍倡。 火紅的嫁衣襯著肌膚如雪身弊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天列敲,我揣著相機與錄音阱佛,去河邊找鬼。 笑死戴而,一個胖子當著我的面吹牛凑术,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播所意,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼淮逊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扶踊?” 一聲冷哼從身側(cè)響起泄鹏,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秧耗,沒想到半個月后备籽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡分井,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年车猬,在試婚紗的時候發(fā)現(xiàn)自己被綠了霉猛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡珠闰,死狀恐怖惜浅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伏嗜,我是刑警寧澤赡矢,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站阅仔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弧械。R本人自食惡果不足惜八酒,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刃唐。 院中可真熱鬧羞迷,春花似錦、人聲如沸画饥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖甘。三九已至热鞍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衔彻,已是汗流浹背薇宠。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艰额,地道東北人澄港。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像柄沮,于是被迫代替她去往敵國和親回梧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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