這幾年來,微服務這個概念愈來愈火了,火到什麼程度呢?2019年有一個統計說,兩千家企業裏,45%在使用微服務,16%在實驗開發和測試微服務架構,24%在學習微服務準備轉型,只有剩下的15%的企業沒有使用微服務。程序員
微服務到底有什麼好呢?微服務在2013年才被提出,短短几年就有這麼快速的發展。微服務架構可以實現由小型自主服務組成一個總體應用,各個組成部分之間是鬆耦合的,複雜性低,各個部分能夠獨立部署,修復bug或者引入新特性更容易,可以獨立擴展,不一樣技術棧之間可使用不一樣框架、不一樣版本庫甚至不一樣的操做系統平臺。後端
對於中大型架構系統來講,微服務更加便捷,微服務成爲不少企業架構重構的方向,同時也對架構師提出更高的挑戰。目前有不少經常使用於微服務構建的框架,對於構建微服務架構可以帶來一些幫助。api
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。ide
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
這四種框架主要用於響應式微服務開發,響應式自己和微服務沒有關係,更多用於提高性能上,可是能夠和微服務相結合,也能夠提高性能。
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集成。
1.Seneca
Seneca是Node.js的微服務框架開發工具,能夠用於編寫可用於產品環境的代碼。
2.Hapi/ restify/ LoopBack
這三種框架的分工不一樣,前兩種更適合開發簡單的微服務後端系統,第三種更適合用在大型複雜應用開發,還能夠用在現有微服務上的構建。
Go-Kit/Goa/Dubbogo
Go-Kit是分佈式開發的工具合集,適合用於大型業務場景下構建微服務;Goa是用Go語言構建的微服務框架;Dubbogo是和阿里巴巴開源的Dubbo可以兼容的Golang微服務框架。
Python相關的微服務框架很是少,用的比較多的是Nameko。Nameko讓實現微服務變得更簡單,同時也提供了很豐富的功能,好比支持負載均衡、服務發現還支持依賴自動注入等,使用起來很方便,可是有限速、超時和權限機制不完善等缺點。
微服務已經成爲不少大型互聯網公司的選擇,對於架構師和想要成爲架構師的工程師來講,掌握微服務不只要學會使用相關框架來實現,還要掌握具體用法,在具體的實踐中仍然要避開不少坑。
歡迎你們關注我新開通的公衆號【風平浪靜如碼】,海量Java相關文章,學習資料都會在裏面更新,整理的資料也會放在裏面。
以爲寫的還不錯的就點個贊,加個關注唄!點關注,不迷路,持續更新!!!