微服務(wù)框架有哪些?最熱門最齊全的匯總來了
微服務(wù)有多火熱?才使得,全球各行各業(yè)開始利用微服務(wù)架構(gòu)實(shí)施IT架構(gòu)轉(zhuǎn)型。
本文,微服務(wù)框架有哪些?行云為大家匯總了當(dāng)下最熱門的微服務(wù)框架。
最熱門的13個(gè)Java微服務(wù)框架
1、Spring Boot
Java程序員最喜歡的微服務(wù)架構(gòu),沒有之一!

Java構(gòu)建Spring應(yīng)用程序已經(jīng)有很長一段時(shí)間了,Spring Boot是Spring的一個(gè)特定版本,它通過對配置細(xì)節(jié)的處理,使微服務(wù)構(gòu)建更加簡便。創(chuàng)建Spring Boot旨在自啟動(dòng)任何類型的Spring項(xiàng)目,而不僅僅是微服務(wù)。應(yīng)用程序完成后,Spring Boot將在web服務(wù)器中混合,并輸出一個(gè)JAR文件,JVM除外。你可以將其視為原始Docker容器。這也是許多負(fù)責(zé)構(gòu)建微服務(wù)的開發(fā)者都非常喜歡Spring Boot的原因。
使用 Spring 開發(fā)微服務(wù)遵循與 Web 應(yīng)用相同的 MVC 理念。該框架享有多年Java開發(fā)中建立的所有深度連接,包括所有主要和次要數(shù)據(jù)存儲、LDAP服務(wù)器和Apache Kafka等消息傳遞工具的集成。還有許多用于維護(hù)運(yùn)行服務(wù)器集合的小特性,比如Spring Vault,這是一種用于維護(hù)生產(chǎn)環(huán)境中服務(wù)器所需的密碼的工具。所有這些優(yōu)點(diǎn)都說明了為什么Java程序員多年來一直喜歡Spring Boot的原因。
說到Spring Boot,有人會(huì)問Spring Cloud和Spring Boot又是啥關(guān)系?解釋一下:Spring Cloud是一系列框架的集合,包含Spring Boot。
2、Eclipse MicroProfile
2016年,Java Enterprise社區(qū)決定清理Java Enterprise Edition中的內(nèi)容,以便人們可以使用經(jīng)典部件構(gòu)建簡單的微服務(wù)。他們?nèi)コ舜罅康膸?,但保留了處理REST請求,解析JSON和管理依賴注入的功能代碼,最終被稱為Eclipse MicroProfile,其特性為快速而簡單。
從那以后,MicroProfile社區(qū)制定了一個(gè)協(xié)議,每季度發(fā)布一個(gè)新版本,同時(shí)添加新代碼以保持微服務(wù)平穩(wěn)安全地運(yùn)行。任何Java EE開發(fā)者都會(huì)非常熟悉開發(fā)過程和代碼結(jié)構(gòu),而且還把配置麻煩給省去了。
3、Dropwizard
當(dāng)Dropwizard在2011年出現(xiàn)時(shí),Dropwizard框架為開發(fā)者提供了一個(gè)非常簡單的模型,里面包含了許多重要的模塊,你可以根據(jù)需求添加一些業(yè)務(wù)邏輯,或者配置其他內(nèi)容,最后你會(huì)發(fā)現(xiàn)JAR文件非常小,并且能夠快速啟動(dòng)。
Dropwizard最大的限制可能是缺乏依賴注入。如果你希望使用依賴項(xiàng)注入來保持代碼的整潔和松散耦合,則需要自己添加庫,這點(diǎn)和Spring不同,但是現(xiàn)在Dropwizard也支持大多數(shù)功能,包括日志記錄、健康檢查和提供彈性代碼。
4、WildFly Thorntail
Red Hat的工作人員使用一個(gè)靈活的配置工具構(gòu)建了他們自己的MicroProfile版本。該框架最初被稱為WildFly Swarm,但后來被重新命名為WildFly Thorntail,Thorntail通過指定所需的特性來幫助您創(chuàng)建自己的Maven構(gòu)建文件,然后Maven負(fù)責(zé)組裝所有東西。
Thorntail還將通過掃描代碼來檢測組件,也可以使用BOM(材料清單)文件覆蓋。當(dāng)它全部運(yùn)行時(shí),Thorntail將刪除Java Enterprise Edition中不使用的部分,并創(chuàng)建一個(gè)很小的JAR文件,可以使用一個(gè)命令進(jìn)行部署——這是一個(gè)非常巧妙的特性,允許Thorntail項(xiàng)目將其稱為Uber-JAR。這是遵循Java Enterprise Edition的另一種傳統(tǒng)方法,它不會(huì)保留所有沉重的負(fù)擔(dān)。
5、Helidon
Helidon去除了Java Enterprise Edition,保留輕量級的、基于servlet的核心,并吸引了大量的粉絲。在Helidon的,開發(fā)人員從Netty,并添加代碼進(jìn)行路由和錯(cuò)誤處理。它采用了代碼的兩個(gè)基本模型,即所謂的SE和MP版本。
Node 開發(fā)者可能更熟悉Helidon SE,因?yàn)槠渚哂杏删潼c(diǎn)連接的函數(shù)調(diào)用。使用JAX-RS的Java程序員則更熟悉Helidon MP。此外,Helidon還集成了一些備受好評的工具,這些都是它能夠吸引大量開發(fā)者的原因。
6、Cricket
另外一個(gè)用于快速API開發(fā)框架的是Cricket。Cricket很小,盡管它包括許多額外的功能,如鍵值數(shù)據(jù)存儲,以避免連接數(shù)據(jù)庫和調(diào)度程序來控制后臺重復(fù)處理。沒有添加復(fù)雜性或其他依賴項(xiàng),因此很容易將代碼添加到Cricket并啟動(dòng)獨(dú)立的微服務(wù)。
7、Jersey
開發(fā)web服務(wù)的標(biāo)準(zhǔn)方法之一是RESTful web服務(wù)的Java API(又名JAX-RS),這是Jersey框架中實(shí)現(xiàn)的通用規(guī)范。這種方法主要依賴于使用注釋來指定路徑映射和返回細(xì)節(jié)。從參數(shù)解析到JSON打包的所有其他內(nèi)容都由Jersey處理。
Jersey的主要優(yōu)點(diǎn)是它實(shí)現(xiàn)了JAX-RS標(biāo)準(zhǔn),這個(gè)特性非常受歡迎,一些開發(fā)人員習(xí)慣將Jersey與Spring Boot結(jié)合在一起使用。
8、Play
體驗(yàn)JVM跨語言能力的最佳方式之一是使用Play框架,這是可以與Java或任何其他JVM語言兼容的。它的基礎(chǔ)非常現(xiàn)代,具有異步、無狀態(tài)的模型,不會(huì)讓試圖跟蹤用戶及其會(huì)話數(shù)據(jù)的線程使服務(wù)器過載。還有許多額外的特性可以用來充實(shí)網(wǎng)站,比如OpenID、驗(yàn)證和文件上傳支持。
Play代碼庫已經(jīng)發(fā)展了十多年,因此你還會(huì)發(fā)現(xiàn)類似于對XML的支持的這種古老的功能。play既成熟又輕盈,這種組合還是比較有特色的。
9、Swagger
構(gòu)建一個(gè)API看起來就像編寫一個(gè)監(jiān)聽端口的代碼一樣簡單,但是Swagger的開發(fā)人員不這么認(rèn)為。他們已經(jīng)創(chuàng)建了一個(gè)完整的API規(guī)范語言O(shè)penAPI,你可以使用它來說明你的API。這似乎是一個(gè)額外的步驟,但是Swagger團(tuán)隊(duì)還提供了將該規(guī)范轉(zhuǎn)換為自動(dòng)化測試、文檔等的代碼。
Swagger配置文件中的API很簡單,用于實(shí)現(xiàn)接口、記錄接口的,并提供一組工具來測試構(gòu)建在其下的代碼,甚至還有一種API治理機(jī)制。
Swagger是一個(gè)api生態(tài)系統(tǒng),它不局限于Java。如果你的團(tuán)隊(duì)遷移到Node.js或其他幾十種語言中的任何一種,都有一個(gè)Swagger Codegen模塊將OpenAPI規(guī)范轉(zhuǎn)換成該語言的實(shí)現(xiàn)。
10、Restlet
不同框架之間最大的區(qū)別之一是和其他服務(wù)或庫的連接數(shù)量。Restlet項(xiàng)目提供了更大的特性和連接集合,它已經(jīng)與JavaMail之類的庫集成,避免微服務(wù)需要對某些郵件服務(wù)器使用POP、IMAP或SMTP;為防構(gòu)建大量文本索引和元數(shù)據(jù),還集成了 Lucene 和 Solr。
Restlet中還有很多特性在持續(xù)開發(fā)。例如,你不需要使用JSON,因?yàn)樗梢灾苯犹幚鞽ML、CSV、YAML和其他一些文件格式,此外,它還允許用戶從Chrome瀏覽器測試api。
11、Squash
微服務(wù)調(diào)試一直是開發(fā)人員的一大挑戰(zhàn),因?yàn)檫@些部件都是松散耦合的,并且很難跟蹤通過系統(tǒng)所有層的數(shù)據(jù)流。通過使用Squash,可以在運(yùn)行在Kubernetes集群上的代碼中設(shè)置斷點(diǎn),然后像本地運(yùn)行代碼一樣接收IDE中的所有數(shù)據(jù)。Squash還集成了 Node.js 和 Python 運(yùn)行時(shí)。
12、Telepresence
調(diào)試的另一個(gè)選項(xiàng)是使用Telepresence,它可以為遠(yuǎn)程Kubernetes集群上的微服務(wù)創(chuàng)建本地代理。在本地版本中,可以在其中設(shè)置斷點(diǎn)或執(zhí)行本地計(jì)算機(jī)上可進(jìn)行的任何操作。
13、Zipkin
Zipkin用于記錄各種微服務(wù)上的事件,允許開發(fā)者收集 Twitter 各個(gè)服務(wù)上的監(jiān)控?cái)?shù)據(jù),并提供查詢接口。Zipkin 有 Java 等至少六種語言實(shí)現(xiàn)版本,因此可處理多語言系統(tǒng)。不少框架已經(jīng)通過某種形式集成 Zipkin,比如 Spring。
Python微服務(wù)框架有哪些?
Python 中的微服務(wù)框架有Istio、Dubbo 和 Nameko 三種。
1、Dubbo
Dubbo是由阿里巴巴開源的分布式服務(wù)化治理框架,一個(gè)利用同步通信實(shí)現(xiàn)的分布式微服務(wù)框架,其致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。Dubbo是在阿里巴巴的電商平臺中逐漸探索演進(jìn)所形成的,經(jīng)歷過復(fù)雜業(yè)務(wù)的高并發(fā)挑戰(zhàn),比Spring Cloud的開源時(shí)間還要早。目前阿里、京東、當(dāng)當(dāng)、攜程、去哪等一些企業(yè)都在使用Dubbo。
2、Zero
Zero 是一個(gè)高性能、支持快速構(gòu)建的 Python 微服務(wù)框架,提供 RPC 和 Pub Sub 接口。其特點(diǎn)是:在后臺使用zeromq提供微服務(wù)之間可以更快的通信;使用消息進(jìn)行通信,支持傳統(tǒng)的客戶端-服務(wù)器或請求-回復(fù)模式;支持Async和sync;基本服務(wù)器 (ZeroServer)使用所有 cpu 核心。
3、Nameko
Nameko是一個(gè)利用異步通信方式實(shí)現(xiàn)的微服務(wù)框架,其采用RabbitMQ消息隊(duì)列作為消息中間件,原理簡單,使用方便。
更多微服務(wù)框架
1、 Akka
Akka是一個(gè)用Scala編寫的庫,可以用在有簡化編寫容錯(cuò)、高可伸縮性的Java和Scala的Actor模型,使用Akka能夠?qū)崿F(xiàn)微服務(wù)集群。
2、 .NET Core
.NET Core是專門針對模塊化微服務(wù)架構(gòu)設(shè)計(jì)的,是跨平臺應(yīng)用程序開發(fā)框架,是微軟開發(fā)的第一個(gè)官方版本。
3、Service Fabric
Service Fabric是微軟開發(fā)的一個(gè)微服務(wù)框架,基于Service Fabric構(gòu)建的很多云服務(wù)被用在了Azure上。
4、Surging
Surging是基于RPC協(xié)議的分布式微服務(wù)技術(shù)框架,基于.NET Core而來。
5、Microdot Framework
Microdot Framework用于編寫定義服務(wù)邏輯代碼,不需要解決開發(fā)分布式系統(tǒng)的挑戰(zhàn),能夠很方便的進(jìn)行MicrosoftOrleans集成。
6、Seneca
Seneca是Node.js的微服務(wù)框架開發(fā)工具,可以用于編寫可用于產(chǎn)品環(huán)境的代碼。

關(guān)于微服務(wù)架構(gòu)轉(zhuǎn)型、微服務(wù)平臺落地,行云創(chuàng)新《信創(chuàng)微服務(wù)平臺建設(shè)指南》很好地為企業(yè)提供了一些參考建議,感興趣的朋友可以免費(fèi)下載。
行云創(chuàng)新《信創(chuàng)微服務(wù)平臺建設(shè)指南》,免費(fèi)下>https://www.cloudtogo.cn/whitepaper。