這幾年來豆胸,微服務(wù)這個(gè)概念越來越火了奥洼,火到什么程度呢?2019年有一個(gè)統(tǒng)計(jì)說晚胡,兩千家企業(yè)里,45%在使用微服務(wù)嚼沿,16%在實(shí)驗(yàn)開發(fā)和測(cè)試微服務(wù)架構(gòu)估盘,24%在學(xué)習(xí)微服務(wù)準(zhǔn)備轉(zhuǎn)型,只有剩下的15%的企業(yè)沒有使用微服務(wù)骡尽。
微服務(wù)到底有什么好呢遣妥?微服務(wù)在2013年才被提出,短短幾年就有這么快速的發(fā)展攀细。微服務(wù)架構(gòu)能夠?qū)崿F(xiàn)由小型自主服務(wù)組成一個(gè)整體應(yīng)用箫踩,各個(gè)組成部分之間是松耦合的,復(fù)雜性低谭贪,各個(gè)部分可以獨(dú)立部署境钟,修復(fù)bug或者引入新特性更容易,能夠獨(dú)立擴(kuò)展俭识,不同技術(shù)棧之間可以使用不同框架慨削、不同版本庫(kù)甚至不同的操作系統(tǒng)平臺(tái)。
對(duì)于中大型架構(gòu)系統(tǒng)來說,微服務(wù)更加便捷缚态,微服務(wù)成為很多企業(yè)架構(gòu)重構(gòu)的方向磁椒,同時(shí)也對(duì)架構(gòu)師提出更高的挑戰(zhàn)。目前有很多常用于微服務(wù)構(gòu)建的框架玫芦,對(duì)于構(gòu)建微服務(wù)架構(gòu)能夠帶來一些幫助浆熔。
1,Java語(yǔ)言相關(guān)微服務(wù)框架
Spring Boot
Spring Boot的設(shè)計(jì)目的是簡(jiǎn)化新Spring應(yīng)用初始搭建以及開發(fā)過程桥帆,2017年有64.4%的受訪者決定使用Spring Boot医增,可以說是最受歡迎的微服務(wù)開發(fā)框架。利用Spring Boot開發(fā)的便捷度簡(jiǎn)化分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)环葵,比如像配置中心调窍、注冊(cè)、負(fù)載均衡等方面都可以做到一鍵啟動(dòng)和一鍵部署张遭。
Spring Cloud
Spring Cloud是一個(gè)系列框架的合計(jì)邓萨,基于HTTP(s)的RETS服務(wù)構(gòu)建服務(wù)體系,Spring Cloud能夠幫助架構(gòu)師構(gòu)建一整套完整的微服務(wù)架構(gòu)技術(shù)生態(tài)鏈菊卷。
Dubbo
Dubbo是由阿里巴巴開源的分布式服務(wù)化治理框架缔恳,通過RPC請(qǐng)求方式訪問。Dubbo是在阿里巴巴的電商平臺(tái)中逐漸探索演進(jìn)所形成的洁闰,經(jīng)歷過復(fù)雜業(yè)務(wù)的高并發(fā)挑戰(zhàn)歉甚,比Spring Cloud的開源時(shí)間還要早。目前阿里扑眉、京東纸泄、當(dāng)當(dāng)、攜程腰素、去哪等一些企業(yè)都在使用Dubbo聘裁。
Dropwizard
Dropwizard將Java生態(tài)系統(tǒng)中各個(gè)問題域里最好的組建集成于一身,能夠快速打造一個(gè)Rest風(fēng)格的后臺(tái)弓千,還可以整合Dropwizard核心以外的項(xiàng)目衡便。國(guó)內(nèi)現(xiàn)在使用Dropwizard還很少,資源也不多洋访,但是與Spring Boot相比镣陕,Dropwizard在輕量化上更有優(yōu)勢(shì),同時(shí)如果用過Spring姻政,那么基本也會(huì)使用Spring Boot呆抑。
Akka
Akka是一個(gè)用Scala編寫的庫(kù),可以用在有簡(jiǎn)化編寫容錯(cuò)扶歪、高可伸縮性的Java和Scala的Actor模型理肺,使用Akka能夠?qū)崿F(xiàn)微服務(wù)集群摄闸。
Vert.x/Lagom/ReactiveX/Spring 5
這四種框架主要用于響應(yīng)式微服務(wù)開發(fā),響應(yīng)式本身和微服務(wù)沒有關(guān)系妹萨,更多用于提升性能上年枕,但是可以和微服務(wù)相結(jié)合,也可以提升性能乎完。
2熏兄,Go相關(guān)微服務(wù)框架
istio
項(xiàng)目簡(jiǎn)介:Istio是由Google、IBM和Lyft開源的微服務(wù)管理树姨、保護(hù)和監(jiān)控框架摩桶。使用istio可以很簡(jiǎn)單的創(chuàng)建具有負(fù)載均衡、服務(wù)間認(rèn)證帽揪、監(jiān)控等功能的服務(wù)網(wǎng)絡(luò)硝清,而不需要對(duì)服務(wù)的代碼進(jìn)行任何修改。
倉(cāng)庫(kù)地址:https://github.com/istio(25.9K)
官方文檔地址:https://istio.io/latest/docs/
Go-kit
項(xiàng)目簡(jiǎn)介:這是一個(gè)工具包的集合转晰,可以幫助攻城獅構(gòu)建強(qiáng)大芦拿、可靠和可維護(hù)的微服務(wù)。提供了用于實(shí)現(xiàn)系統(tǒng)監(jiān)控和彈性模式組件的庫(kù)查邢,例如日志蔗崎、跟蹤、限流扰藕、熔斷等缓苛。
基于這個(gè)框架的應(yīng)用程序架構(gòu)由三個(gè)主要的部分組成:
傳輸層:用于網(wǎng)絡(luò)通信,服務(wù)通常使用HTTP或者gRPC等網(wǎng)絡(luò)傳輸協(xié)議邓深,或者使用NATS等發(fā)布訂閱系統(tǒng)相互通信未桥。
接口層:是服務(wù)器和客戶端的基本構(gòu)建塊。每個(gè)對(duì)外提供的接口方法都會(huì)定義為一個(gè)Endpoint芥备,一遍在服務(wù)器和客戶端之間進(jìn)行網(wǎng)絡(luò)通信钢属,每個(gè)端點(diǎn)使用傳輸層通過HTTP或gRPC等具體通信模式對(duì)外提供服務(wù)
服務(wù)成:具體的業(yè)務(wù)邏輯實(shí)現(xiàn)
倉(cāng)庫(kù)地址:https://github.com/go-kit/kit/(19.1K)
官方文檔地址:https://gokit.io/
Kratos
項(xiàng)目簡(jiǎn)介:Kratos是嗶哩嗶哩開源的一套Go微服務(wù)框架,包含大量微服務(wù)相關(guān)框架及工具门躯。
倉(cāng)庫(kù)地址:https://github.com/go-kratos/kratos(11.5K)
官方文檔地址:https://go-kratos.dev/docs/
Go-micro【推薦】
項(xiàng)目簡(jiǎn)介:這是一個(gè)基于Go語(yǔ)言實(shí)現(xiàn)的插件化RPC微服務(wù)框架。提供了服務(wù)發(fā)現(xiàn)酷师、負(fù)載均衡讶凉、同步傳輸、異步通信以及事件驅(qū)動(dòng)等機(jī)制山孔,嘗試簡(jiǎn)化分布式系統(tǒng)之間的通信懂讯,讓開發(fā)者更專注于自身業(yè)務(wù)邏輯的開發(fā)。
GoMicro的設(shè)計(jì)哲學(xué)是可插拔的架構(gòu)理念台颠,提供了可快速構(gòu)建系統(tǒng)的組件褐望,并且可以根據(jù)自身的需求對(duì)GoMicro提供的默認(rèn)實(shí)現(xiàn)進(jìn)行定制勒庄。
倉(cāng)庫(kù)地址:https://github.com/micro/micro(9.5K)
官方文檔地址:https://micro.mu/
5.Goa
項(xiàng)目簡(jiǎn)介:Goa 是一款用 Go 用于構(gòu)建微服務(wù)的框架,采用獨(dú)特的設(shè)計(jì)優(yōu)先的方法
倉(cāng)庫(kù)地址:https://github.com/goadesign/goa(4.1K)
官方文檔地址:https://goa.design/
6.fabio
項(xiàng)目簡(jiǎn)介:fabio 是 ebay 團(tuán)隊(duì)用 golang 開發(fā)的一個(gè)快速瘫里、簡(jiǎn)單零配置能夠讓 consul 部署的應(yīng)用快速支持 http(s) 的負(fù)載均衡路由器实蔽。
倉(cāng)庫(kù)地址:https://github.com/fabiolb/fabio(4.1K)
官方文檔地址:https://fabiolb.net/
7.gizmo
項(xiàng)目簡(jiǎn)介:gizmo是紐約時(shí)報(bào)開源的go微服務(wù)工具,提供如下特性:標(biāo)準(zhǔn)化配置和日志;可配置策略的狀態(tài)監(jiān)測(cè)端點(diǎn);用于管理 pprof 端點(diǎn)和日志級(jí)別的配置;結(jié)構(gòu)化日志谨读,提供基本請(qǐng)求信息;端點(diǎn)的有用度量;優(yōu)雅的停止服務(wù); 定義期待和詞匯的基本接口局装。
倉(cāng)庫(kù)地址:https://github.com/nytimes/gizmo(3.3K)
8.Tars-go
項(xiàng)目簡(jiǎn)介:騰訊系,Tarsgo是基于Golang編程語(yǔ)言使用Tars協(xié)議的高性能RPC框架
倉(cāng)庫(kù)地址:https://github.com/TarsCloud/TarsGo(2.7K)
官方文檔地址:https://tarscloud.github.io/TarsDocs/SUMMARY.html#TarsGo
9.Jupiter
項(xiàng)目簡(jiǎn)介:Jupiter 是斗魚開源的一套微服務(wù)治理框架劳殖,提供豐富的后臺(tái)功能铐尚,管理應(yīng)用的資源、配置哆姻,應(yīng)用的性能宣增、配置等可視化。
倉(cāng)庫(kù)地址:https://github.com/douyu/jupiter
官方文檔地址:http://jupiter.douyu.com/(2.7K)
10.Dubbo-go
項(xiàng)目簡(jiǎn)介:阿里系矛缨,由Apache 軟件基金會(huì)官方發(fā)布Go 語(yǔ)言加入 Dubbo 生態(tài)爹脾,架構(gòu)是基于dubbo的extension模塊和分層的代碼設(shè)計(jì),主要解決 Go 項(xiàng)目與 Java & Dubbo 項(xiàng)目的互通問題劳景,同時(shí)也為 Go 項(xiàng)目提供了一種 RPC 與微服務(wù)
倉(cāng)庫(kù)地址:https://github.com/apache/dubbo-go(2.6K)
官方文檔地址:https://dubbogo.github.io/dubbo-go-website/zh-cn/
3.Net相關(guān)微服務(wù)框架
.NET Core
.NET Core是專門針對(duì)模塊化微服務(wù)架構(gòu)設(shè)計(jì)的誉简,是跨平臺(tái)應(yīng)用程序開發(fā)框架,是微軟開發(fā)的第一個(gè)官方版本盟广。
Service Fabric
Service Fabric是微軟開發(fā)的一個(gè)微服務(wù)框架闷串,基于Service Fabric構(gòu)建的很多云服務(wù)被用在了Azure上。
Surging
Surging是基于RPC協(xié)議的分布式微服務(wù)技術(shù)框架筋量,基于.NET Core而來烹吵。
Microdot Framework
Microdot Framework用于編寫定義服務(wù)邏輯代碼,不需要解決開發(fā)分布式系統(tǒng)的挑戰(zhàn)桨武,能夠很方便的進(jìn)行MicrosoftOrleans集成肋拔。
4,Node.js相關(guān)微服務(wù)框架
Seneca
Seneca是Node.js的微服務(wù)框架開發(fā)工具呀酸,可以用于編寫可用于產(chǎn)品環(huán)境的代碼凉蜂。
Hapi/Restify/LoopBack
這三種框架的分工不同,前兩種更適合開發(fā)簡(jiǎn)單的微服務(wù)后端系統(tǒng)性誉,第三種更適合用在大型復(fù)雜應(yīng)用開發(fā)窿吩,還可以用在現(xiàn)有微服務(wù)上的構(gòu)建。
5. Python相關(guān)微服務(wù)框架
Python相關(guān)的微服務(wù)框架非常少错览,用的比較多的是Nameko纫雁。Nameko讓實(shí)現(xiàn)微服務(wù)變得更簡(jiǎn)單,同時(shí)也提供了很豐富的功能倾哺,比如支持負(fù)載均衡轧邪、服務(wù)發(fā)現(xiàn)還支持依賴自動(dòng)注入等刽脖,使用起來很方便,但是有限速忌愚、超時(shí)和權(quán)限機(jī)制不完善等缺點(diǎn)曲管。
6. 總結(jié)
微服務(wù)已經(jīng)成為很多大型互聯(lián)網(wǎng)公司的選擇,對(duì)于架構(gòu)師和想要成為架構(gòu)師的工程師來說菜循,掌握微服務(wù)不僅要學(xué)會(huì)使用相關(guān)框架來實(shí)現(xiàn)翘地,還要掌握具體用法,在具體的實(shí)踐中仍然要避開很多坑癌幕。
原文鏈接:https://juejin.im/post/5e6786f0f265da571a39e108衙耕,作者:風(fēng)平浪靜如碼