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