最受歡迎的微服務框架概覽

咱們將和你們分享最受歡迎的微服務架構java

Spring Boot

Java 構建 Spring 應用程序已經有很長一段時間了, Spring Boot 是 Spring 的一個特定版本, 它經過對配置細節的處理, 使微服務構建更加簡便。建立 Spring Boot 旨在自啓動任何類型的 Spring 項目,而不只僅是微服務。應用程序完成後,Spring Boot 將在 web 服務器中混合,並輸出一個 JAR 文件, JVM 除外。你能夠將其視爲原始 Docker 容器。這也是許多負責構建微服務的開發者都很是喜歡 Spring Boot 的緣由。程序員

使用 Spring 開發微服務遵循與 Web 應用相同的 MVC 理念。該框架享有多年 Java 開發中創建的全部深度鏈接,包括全部主要和次要數據存儲、 LDAP 服務器和 Apache Kafka 等消息傳遞工具的集成。還有許多用於維護運行服務器集合的小特性,好比 Spring Vault ,這是一種用於維護生產環境中服務器所需的密碼的工具。全部這些優勢都說明了爲何 Java 程序員多年來一直喜歡 Spring Boot 的緣由。web

Eclipse MicroProfile

2016 年,Java Enterprise 社區決定清理 Java Enterprise Edition 中的內容,以便人們可使用經典部件構建簡單的微服務。他們去除了大量的庫, 但保留了處理 REST請求,解析 JSON 和管理依賴注入的功能代碼,最終被稱爲 Eclipse MicroProfile ,其特性爲快速而簡單。spring

從那之後, MicroProfile 社區制定了一個協議, 每季度發佈一個新版本, 同時添加新代碼以保持微服務平穩安全地運行。任何 Java EE開發者都會很是熟悉開發過程和代碼結構,並且還把配置麻煩給省去了。數據庫

Dropwizard

當 Dropwizard 在 2011 年出現時, Dropwizard 框架爲開發者提供了一個很是簡單的模型,裏面包含了許多重要的模塊,你能夠根據需求添加一些業務邏輯,或者配置其餘內容,最後你會發現 JAR 文件很是小,而且可以快速啓動。apache

Dropwizard 最大的限制多是缺少依賴注入。若是你但願使用依賴項注入來保持代碼的整潔和鬆散耦合,則須要本身添加庫,這點和 Spring 不一樣,可是如今Dropwizard 也支持大多數功能,包括日誌記錄、健康檢查和提供彈性代碼。api

Cricket

另一個用於快速 API 開發框架的是 Cricket 。Cricket 很小,儘管它包括許多額外的功能, 如鍵值數據存儲, 以免鏈接數據庫和調度程序來控制後臺重複處理。沒有添加複雜性或其餘依賴項,所以很容易將代碼添加到 Cricket 並啓動獨立的微服務。瀏覽器

Jersey

開發 web 服務的標準方法之一是 RESTful web 服務的 Java API(又名 JAX-RS),這是 Jersey 框架中實現的通用規範。這種方法主要依賴於使用註釋來指定路徑映射和返回細節。從參數解析到 JSON 打包的全部其餘內容都由 Jersey 處理。安全

Jersey 的主要優勢是它實現了 JAX-RS 標準,這個特性很是受歡迎, 一些開發人員習慣將 Jersey 與 Spring Boot 結合在一塊兒使用。服務器

Play

體驗 JVM 跨語言能力的最佳方式之一是使用 Play 框架,這是能夠與 Java 或任何其餘 JVM 語言兼容的。它的基礎很是現代,具備異步、無狀態的模型,不會讓試圖跟蹤用戶及其會話數據的線程使服務器過載。還有許多額外的特性能夠用來充實網站,好比 OpenID 、驗證和文件上傳支持。

Play 代碼庫已經發展了十多年, 所以你還會發現相似於對 XML 的支持的這種古老的功能。play 既成熟又輕盈,這種組合仍是比較有特點的。

Swagger

構建一個 API 看起來就像編寫一個監聽端口的代碼同樣簡單, 可是 Swagger 的開發人員不這麼認爲。他們已經建立了一個完整的 API 規範語言 OpenAPI ,你可使用它來講明你的 API。這彷佛是一個額外的步驟,可是 Swagger 團隊還提供了將該規範轉換爲自動化測試、文檔等的代碼。

Swagger 配置文件中的 API 很簡單,用於實現接口、記錄接口的,並提供一組工具來測試構建在其下的代碼,甚至還有一種 API 治理機制。

Swagger 是一個 api 生態系統,它不侷限於 Java。若是你的團隊遷移到 Node.js或其餘幾十種語言中的任何一種,都有一個 Swagger Codegen 模塊將OpenAPI 規範轉換成該語言的實現。

Restlet

不一樣框架之間最大的區別之一是和其餘服務或庫的鏈接數量。Restlet 項目提供了更大的特性和鏈接集合,它已經與 JavaMail 之類的庫集成,避免微服務須要對某些郵件服務器使用 POP、IMAP 或 SMTP ;爲防構建大量文本索引和元數據,還集成了 Lucene 和 Solr 。

Restlet 中還有不少特性在持續開發。例如,你不須要使用 JSON,由於它能夠直接處理 XML 、CSV、YAML 和其餘一些文件格式,此外,它還容許用戶從Chrome 瀏覽器測試 api 。

apache dubbo

Dubbo 是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可經過高性能的 RPC 實現服務的輸出和輸入功能,能夠和 Spring 框架無縫集成。

主要核心部件:

Remoting: 網絡通訊框架,實現了 sync-over-async 和 request-response 消息機制RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集羣功能Registry: 服務目錄框架用於服務的註冊和服務事件發佈和訂閱

motan

Motan 是一套高性能、易於使用的分佈式遠程服務調用(RPC)框架。

支持經過spring配置方式集成,無需額外編寫代碼便可爲服務提供分佈式調用能力。支持集成consul、zookeeper等配置服務組件,提供集羣環境的服務發現及治理能力。支持動態自定義負載均衡、跨機房流量調整等高級服務調度能力。基於高併發、高負載場景進行優化,保障生產環境下RPC服務高可用。

grpc

gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.

開源中國組織翻譯的《gRPC 官方文檔中文版》:http://doc.oschina.net/grpc

gRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 鏈接上的多複用請求等特。這些特性使得其在移動設備上表現更好,更省電和節省空間佔用。

kubernates

kubernetes,簡稱K8s,是用8代替8個字符「ubernete」而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單而且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。

傳統的應用部署方式是經過插件或腳原本安裝應用。這樣作的缺點是應用的運行、配置、管理、全部生存週期將與當前操做系統綁定,這樣作並不利於應用的升級更新/回滾等操做,固然也能夠經過建立虛擬機的方式來實現某些功能,可是虛擬機很是重,並不利於可移植性。

新的方式是經過部署容器方式實現,每一個容器之間互相隔離,每一個容器有本身的文件系統 ,容器之間進程不會相互影響,能區分計算資源。相對於虛擬機,容器能快速部署,因爲容器與底層設施、機器文件系統解耦的,因此它能在不一樣雲、不一樣版本操做系統間進行遷移。

容器佔用資源少、部署快,每一個應用能夠被打包成一個容器鏡像,每一個應用與容器間成一對一關係也使容器有更大優點,使用容器能夠在build或release 的階段,爲應用建立容器鏡像,由於每一個應用不須要與其他的應用堆棧組合,也不依賴於生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。相似地,容器比虛擬機輕量、更「透明」,這更便於監控和管理。

微服務微信交流羣添加微信,備註微服務進羣交流

本文分享自微信公衆號 - soft張三丰(aguzhangsanfeng)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索