1. Spring Boot 與 Spring Cloud
Spring Boot 是用于編寫微服務(wù)的 JAVA 基礎(chǔ)框架。在Spring Cloud 提供了各種構(gòu)建全棧微服務(wù)的功能。構(gòu)建小型和大型系統(tǒng)都適合。由于控制反轉(zhuǎn),Spring Boot 也很容易與其他流行的框架集成。
數(shù)據(jù)管理——Spring 有各種模塊可以輕松地與流行的數(shù)據(jù)庫集成。Spring JDBC、Spring JPA、Spring MongoDB、Spring Apache Cassandra 是一些擴展。
處理失敗的策略——Spring boot 可以很容易地與 Resilience4J 集成。它提供了各種功能來處理分布式系統(tǒng)中的故障。斷路器、重試、超時、速率限制器、回退處理程序、隔板等。
可觀察性——Spring Boot Actuator 功能強大,提供健康檢查、查看日志、Metrix。
通信風格——Spring 具有構(gòu)建響應(yīng)式應(yīng)用程序的能力。在 Spring MVC 的幫助下構(gòu)建 rest API 非常容易。Spring 易于與 MQ 集成以構(gòu)建異步風格的服務(wù)。Spring 也有模塊來構(gòu)建基于 SOAP 的應(yīng)用程序。
中間層集成——借助各種模塊 Spring 可與 Apache Kafka、AMQP、RabbitMQ、ActiveMQ 集成
與工具集成——Consul、Prometheus、Jaeger、Grafana
云原生支持— 易于在 Docker、Kubernetes、OpenTracing、Etcd、DevOps 上部署
安全性——對Spring Security、 OAuth2 的良好支持,會話管理,可以構(gòu)建有狀態(tài)和無狀態(tài)的服務(wù)。密鑰保管庫、網(wǎng)關(guān)模式
分布式配置管理——Spring Cloud Config
服務(wù)發(fā)現(xiàn)——客戶端、服務(wù)器端
性能——捕獲支持、負載平衡、使用 Spring Cloud Cluster 進行集群
通信數(shù)據(jù)格式——JSON、XML
測試——Spring 測試模塊,模擬,分析
學習曲線——由于模塊化而易于學習
2. Eclipse Vert.X 微服務(wù)框架
Vert.X 來自 Eclipse 基金會的又一個流行的微服務(wù)服務(wù)框架。該框架支持多種語言。一般企業(yè)采用Java 和 Kotlin開發(fā),對于開發(fā)者 JavaScript 也是一個不錯的選擇。Vertx 是一個工具包,微服務(wù)構(gòu)建于 JVM 上。
Eclipse Vert.x 是事件驅(qū)動且非阻塞的。這意味著您的應(yīng)用程序可以使用少量內(nèi)核線程處理大量并發(fā)。Vert.x 讓您的應(yīng)用程序以最少的硬件進行擴展。
Vert.x 提供的一些很獨特的功能:
- Vert.x 是輕量級的——Vert.x 核心大小約為 650kB。
- Vert.x 很快。這里有一些獨立的數(shù)字。
- Vert.x 不是應(yīng)用程序服務(wù)器。沒有用于部署應(yīng)用程序的單一 Vert.x 實例。你可以在你程序的任意地方運行它。
- Vert.x 是模塊化的——當您需要更可以隨時添加。
- Vert.x 很簡單但并不簡單。Vert.x 可讓你輕松創(chuàng)建強大的應(yīng)用程序。
- Vert.x 是創(chuàng)建輕量級、高性能、微服務(wù)的理想選擇。
Vert.x 提供了各種組件/庫來構(gòu)建微服務(wù)應(yīng)用程序,其特點:
Vert.x 服務(wù)發(fā)現(xiàn)
Vert.x 服務(wù)可以發(fā)布、查找和綁定到任何類型的服務(wù)。
Vert.x 熔斷器
此組件為Vert.x提供斷路器模式的實現(xiàn)
Vert.x Config
該組件提供了一種配置 Vert.x 應(yīng)用程序的可擴展方式。
集群和可擴展性
Vert.x 支持開箱即用的集群和 HA。集群組管理是可插拔的,默認使用Hazelcast。也有像 Apache Zookeeper、Ignite 這樣的選項。
可觀察性
Vert.x 健康檢查組件提供了簡單開放的檢查方法。健康檢查用于以非常簡單的語法檢查當前狀態(tài):UP 或 DOWN。健康檢查可以單獨使用,也可以與 Vert.x Web 或事件總線結(jié)合使用。
測試
Vertx 單元旨在使用多語言 API 編寫異步單元測試并在 JVM 中運行這些測試。Vertx Unit Api 借鑒了 JUnit 或 QUnit 等現(xiàn)有測試框架。
gRPC 支持
Vert.x gRPC 是一個模塊,它將谷歌 gRPC 的編程風格與 Vert.x 風格保持一致。
服務(wù)代理
在編寫Vert.x應(yīng)用程序時,你想在屏蔽某項功能,但其他功能可以照常使用。這就是服務(wù)代理的主要目的。它允許事件總線公開服務(wù),因此任何其他Vert.x組件都可以使用它。
Devops
Vert.x 提供了各種組件來使 Vert.x 應(yīng)用程序在生產(chǎn)環(huán)境中運行時保持正常運行,例如 Micrometer、Dropwizard。
Vert.x 相對于 Spring boot 的一大優(yōu)勢是,Vert.x 可使用多種語言。
3. Oracle Helidon 微服務(wù)框架
Helidon 微服務(wù)框架是由Oracle 用 Java 開發(fā)的
擁有兩種版本,Helidon MP 和 Helidon SE。Spring boot 比 Helidon 擁有許多功能。而且Helidon 很新,目前可用的文檔不多, 很難在 stackoverflow 上找到解決方案。
Helidon MP 是 MicroProfile 規(guī)范的實現(xiàn)。這使其成 Java EE 開發(fā)人員的不錯選擇。
Helidon SE 是一個緊湊的工具包,它包含最新的 Java SE 功能:反應(yīng)式流、異步和函數(shù)式編程以及流暢風格的 API。Helidon SE 支持GraalVM 原生映像,可實現(xiàn)輕量化快速啟動。Helidon SE 的 REST 框架是 Helidon WebServer。它建立在 Netty 之上,并使用直接的請求路由 API。
Helidon MP 的特征:
云原生
Helidon 庫可與云原生空間互操作:
Docker和 Kubernetes
Prometheus, OpenTracing 和 Etcd
gRPC 支持
Helidon gRPC 服務(wù)器提供了一個用于創(chuàng)建 gRPC 應(yīng)用程序的框架。
分布式配置管理
配置組件提供了一個 Java API,以鍵值對方式配置屬性加載和處理到一個配置對象,應(yīng)用程序可以使用該對象檢索配置數(shù)據(jù)。
運行狀況檢查和跟蹤運行狀況檢查(例如 K8s 等編排器)定期收集的運行狀況。Helidon 支持通過 OpenTracing API 進行跟蹤。Tracing 與 WebServer、gRPC Server 和 Security 集成。
安全
支持認證、授權(quán)和審計。
4. GoMirco(Golang微服務(wù)框架)
Go Micro 是一個可插拔的RPC 的庫,可用 Go 編寫微服務(wù)的基本構(gòu)建塊。它使用 consul 實現(xiàn)服務(wù)發(fā)現(xiàn),通過 http 進行通信并使用 proto-rpc 或 json-rpc、Pub/Sub 進行編碼。
Go Micro 易于構(gòu)建可擴展系統(tǒng)。采用其微服務(wù)架構(gòu)模式并將其轉(zhuǎn)換為一組工具,它采用微服務(wù)架構(gòu)模式,并將其轉(zhuǎn)換為一組工具,充當平臺的構(gòu)建塊。Micro為開發(fā)人員將復(fù)雜的分布式系統(tǒng)提煉出簡單抽象。
技術(shù)在不斷發(fā)展,基礎(chǔ)架構(gòu)也在變化。Micro是一個解決這些問題的可插拔工具包。使用micro構(gòu)建面向未來的系統(tǒng)。
運行時由以下功能組成:
- API 網(wǎng)關(guān):微 API 通過發(fā)現(xiàn)和可插入處理程序提供強大的路由,以服務(wù) http、grpc、websockets、發(fā)布事件等。
- 交互式 CLI: CLI 為您提供了監(jiān)控微服務(wù)發(fā)生情況的命令。
- 服務(wù)代理:基于Go Micro和MUCP協(xié)議構(gòu)建的透明代理。將服務(wù)發(fā)現(xiàn)、負載平衡、消息編碼、中間件、傳輸和代理插件安裝在單一位置。
- 服務(wù)模板:生成新的服務(wù)模板可快速上手。Micro提供用于編寫Micro服務(wù)的預(yù)定義模板。始終以相同的方式開始,構(gòu)建相同的服務(wù)以提高效率。
- SlackOps Bot:一個在您的平臺上運行的機器人,允許Slack自身管理應(yīng)用程序。micro bot支持聊天操作,以此通過消息與團隊一起完成工作。
- Web儀表板:可在Web儀表板瀏覽服務(wù),顯示服務(wù)的端點、請求和響應(yīng)格式。
5. Molecular(NodeJS微服務(wù)框架)
Molecular 是一個有趣的微服務(wù)框架。隨著 NodeJS 越來越流行,如果你是 JavaScript 開發(fā)人員,這是個最好框架。Moleculer 是一個快速、現(xiàn)代且功能強大的 NodeJS 微服務(wù)框架。
Molecular主要特點
- 支持具有平衡的事件驅(qū)動架構(gòu)
- 內(nèi)置服務(wù)注冊中心和動態(tài)服務(wù)發(fā)現(xiàn)
- 負載平衡的請求和事件(循環(huán)、隨機、CPU 使用率、延遲、分片)
- 許多容錯功能(斷路器、隔板、重試、超時、回退)
- 內(nèi)置緩存解決方案(Memory、MemoryLRU、redis)
- 可插拔記錄器(控制臺、文件、Pino、Bunyan、Winston、Debug、Datadog、Log4js)
- 帶有觀察者的內(nèi)置指標功能
- 帶有導(dǎo)出器的內(nèi)置跟蹤功能(控制臺、數(shù)據(jù)、事件、Jaeger、Zipkin)
6. Quarkus 微服務(wù)框架
這個框架非常新,非常適合 Kubernetes 愛好者。Quarkus 是 Red Hat 用Java 編寫 的云原生、容器優(yōu)先框架。Quarkus 是為 GraalVM 和 HotSpot 量身定制的 Kubernetes 原生 Java 框架,由同類最佳的 Java 庫和標準制作而成。Quarkus 的目標是使 Java 成為 Kubernetes 和無服務(wù)器環(huán)境中的領(lǐng)先平臺,同時為開發(fā)人員提供統(tǒng)一的反應(yīng)式和命令式編程模型,以優(yōu)化解決更廣泛的分布式應(yīng)用程序架構(gòu)。
7. Micronaut
Micronaut 是一個基于 JVM 的全棧微服務(wù)框架,旨在構(gòu)建模塊化、易于測試的微服務(wù)應(yīng)用程序。
Micronaut 由 Grails 框架的創(chuàng)建者開發(fā),從多年來使用 Spring、Spring Boot 和 Grails 構(gòu)建從單體到微服務(wù)的經(jīng)驗教訓中汲取靈感。
Micronaut 旨在提供構(gòu)建全功能微服務(wù)應(yīng)用程序所需的所有工具,包括:
- 依賴注入和控制反轉(zhuǎn) (IoC)
- 合理的默認值和自動配置
- 配置和配置共享
- 服務(wù)發(fā)現(xiàn)
- HTTP 路由
具有客戶端負載平衡的 HTTP 客戶端
同時,Micronaut 旨在通過提供以下內(nèi)容來避免 Spring、Spring Boot 和 Grails 等框架的缺點:
- 快速啟動時間
- 減少內(nèi)存占用
- 最少使用反射
- 最少使用代理
- 簡單的單元測試
8. Lightbend Lagom 微服務(wù)框架
Lagom 是一個開源框架,用于在 Java 或 Scala 中構(gòu)建響應(yīng)式微服務(wù)系統(tǒng)。Lagom 建立在Akka和Play之上.
Lagom 的集成開發(fā)環(huán)境使您可以專注于解決業(yè)務(wù)問題,而不是將服務(wù)連接在一起。一條命令即可構(gòu)建項目,開始支持組件和您的微服務(wù),以及 Lagom 基礎(chǔ)設(shè)置。當檢測到源代碼更改時,構(gòu)建會熱重載。
使用 Lagom 創(chuàng)建的合適規(guī)模的服務(wù)啟用:
- 更好地定義開發(fā)職責——提高敏捷性
- 以更低的風險更頻繁地發(fā)布——以縮短上市時間
- 具有反應(yīng)性品質(zhì)的系統(tǒng):響應(yīng)性、彈性、可擴展性和彈性——充分利用現(xiàn)代計算環(huán)境并滿足苛刻的用戶期望。
9. AxonIQ 微服務(wù)框架
Axon提供了一種統(tǒng)一的、高效的Java應(yīng)用程序開發(fā)方法,無需對從整體到事件驅(qū)動的微服務(wù)進行重大重構(gòu),就可以開發(fā)Java應(yīng)用程序。
Axon包括一個編程模型和一個專門的基礎(chǔ)設(shè)施,為編程模型提供企業(yè)級的操作支持,特別是用于擴展和分發(fā)任務(wù)關(guān)鍵型業(yè)務(wù)應(yīng)用程序。編程模型由流行的Axon框架提供,而Axon服務(wù)器是Axon的基礎(chǔ)設(shè)施部分,都是開源的。
Axon框架是一個Java微服務(wù)框架,它幫助您按照域驅(qū)動設(shè)計(DDD)原則構(gòu)建微服務(wù)體系結(jié)構(gòu)。
除了DDD之外,Axon框架還允許您實現(xiàn)微服務(wù)模式,如命令查詢責任分離(CQRS)和事件驅(qū)動體系結(jié)構(gòu)。
Axon可以滿足最苛刻的企業(yè)需求,如事件存儲、安全性、群集、負載平衡、服務(wù)發(fā)現(xiàn)、全球分布式數(shù)據(jù)中心、第三方集成、度量和監(jiān)控的最高效擴展。
10. Ballerina 微服務(wù)語言
Ballerina 不是一個框架,它是一種編寫分布式應(yīng)用的編程語言。一開始構(gòu)建以編寫解耦服務(wù)。編寫網(wǎng)絡(luò)應(yīng)用程序非常容易。Ballerina 是一種開源編程語言和平臺,在云時代程序員輕松編寫程序變得容易。
還有更多的特性,比如線程、流、安全等的功能。
總的來說,Ballerina 提供:
- 專門用于消費和提供網(wǎng)絡(luò)服務(wù)的語言結(jié)構(gòu)。
- 與序列圖緊密對應(yīng)的并發(fā)和網(wǎng)絡(luò)交互的抽象和語法,支持 Ballerina 源代碼在文本和圖形表示之間的雙向映射。
- 一種結(jié)構(gòu)類型系統(tǒng),比傳統(tǒng)的靜態(tài)類型語言更靈活,允許更松散的耦合。
- 設(shè)計以適應(yīng)現(xiàn)代開發(fā)生命周期,包括使用持續(xù)集成和持續(xù)交付 (CI/CD) 工具,例如 Jenkins、Travis 和 Codefresh;可觀察性工具,例如 Prometheus、Zipkin 和 Honeycomb;以及像 Kubernetes 這樣的云系統(tǒng)。






