做好架構師,要懂微服務,彙總微服務架構落地的15種框架(轉)
這兩年,微服務這個概念火了,火到什麼程度呢?2016年有一個統計說,兩千家企業裡,30%在使用微服務,15%在實驗開發和測試微服務架構,24%在學習微服務準備轉型,只有剩下的30%的企業沒有使用微服務。
微服務到底有什麼好呢?微服務在2013年才被提出,短短几年就有這麼快速的發展。微服務架構能夠實現由小型自主服務組成一個整體應用,各個組成部分之間是鬆耦合的,複雜性低,各個部分可以獨立部署,修復bug或者引入新特性更容易,能夠獨立擴充套件,不同技術棧之間可以使用不同框架、不同版本庫甚至不同的作業系統平臺。
對於中大型架構系統來說,微服務更加便捷,微服務成為很多企業架構重構的方向,同時也對架構師提出更高的挑戰。目前有很多常用於微服務構建的框架,對於構建微服務架構能夠帶來一些幫助。
Java語言相關微服務框架
1.Spring Boot
Spring Boot的設計目的是簡化新Spring應用初始搭建以及開發過程,2017年有64.4%的受訪者決定使用Spring Boot,可以說是最受歡迎的微服務開發框架。利用Spring Boot開發的便捷度簡化分散式系統基礎設施的開發,比如像配置中心、註冊、負載均衡等方面都可以做到一鍵啟動和一鍵部署。
2.Spring Cloud
Spring Cloud是一個系列框架的合計,基於HTTP(s)的RETS服務構建服務體系,Spring Cloud能夠幫助架構師構建一整套完整的微服務架構技術生態鏈。
3.Dubbo
Dubbo是由阿里巴巴開源的分散式服務化治理框架,通過RPC請求方式訪問。Dubbo是在阿里巴巴的電商平臺中逐漸探索演進所形成的,經歷過複雜業務的高併發挑戰,比Spring Cloud的開源時間還要早。目前阿里、京東、噹噹、攜程、去哪等一些企業都在使用Dubbo。
4.Dropwizard
Dropwizard將Java生態系統中各個問題域裡最好的組建集成於一身,能夠快速打造一個Rest風格的後臺,還可以整合Dropwizard核心以外的專案。國內現在使用Dropwizard還很少,資源也不多,但是與SpringBoot相比,Dropwizard在輕量化上更有優勢,同時如果用過Spring,那麼基本也會使用SpringBoot。
5.Akka
Akka是一個用Scala編寫的庫,可以用在有簡化編寫容錯、高可伸縮性的Java和Scala的Actor模型,使用Akka能夠實現微服務叢集。
6.Vert.x/ Lagom/ ReactiveX/Spring 5
這四種框架主要用於響應式微服務開發,響應式本身和微服務沒有關係,更多用於提升效能上,但是可以和微服務相結合,也可以提升效能。
.Net相關微服務框架
1. .NET Core
.NET Core是專門針對模組化微服務架構設計的,是跨平臺應用程式開發框架,是微軟開發的第一個官方版本。
2.Service Fabric
Service Fabric是微軟開發的一個微服務框架,基於Service Fabric構建的很多雲服務被用在了Azure上。
3.Surging
Surging是基於RPC協議的分散式微服務技術框架,基於.NET Core而來。
4.Microdot Framework
Microdot Framework用於編寫定義服務邏輯程式碼,不需要解決開發分散式系統的挑戰,能夠很方便的進行MicrosoftOrleans整合。
Node.js相關微服務框架
1.Seneca
Seneca是Node.js的微服務框架開發工具,可以用於編寫可用於產品環境的程式碼。
2.Hapi/ restify/ LoopBack
這三種框架的分工不同,前兩種更適合開發簡單的微服務後端系統,第三種更適合用在大型複雜應用開發,還可以用在現有微服務上的構建。
Go相關微服務框架
Go-Kit/Goa/Dubbogo
Go-Kit是分散式開發的工具合集,適合用於大型業務場景下構建微服務;Goa是用Go語言構建的微服務框架;Dubbogo是和阿里巴巴開源的Dubbo能夠相容的Golang微服務框架。
Python相關微服務框架
Python相關的微服務框架非常少,用的比較多的是Nameko。Nameko讓實現微服務變得更簡單,同時也提供了很豐富的功能,比如支援負載均衡、服務發現還支援依賴自動注入等,使用起來很方便,但是有限速、超時和許可權機制不完善等缺點。
微服務已經成為很多大型網際網路公司的選擇,對於架構師和想要成為架構師的工程師來說,掌握微服務不僅要學會使用相關框架來實現,還要掌握具體用法,在具體的實踐中仍然要避開很多坑。