微服務架構介紹和RPC框架對比
1.微服務架構
1.1 特征
自動化部署,端點智能化,語言和數據的去中心化控制。
1.2架構
一種將一個單一應用程序開發為一組小型服務的方法,每個服務運行在自己的進程中,服務間通信采用輕量級通信機制(通常用HTTP資源API)。可通過全自動部署機制獨立部署,共用一個最小型的集中式的管理。服務可用不同的語言開發,使用不同的數據存儲技術。
- 去中心化基礎設施
- 去中心化數據庫
1.3微服務設計模式
- 聚合式(推薦)
- 代理(推薦)
- 鏈式
- 分支
- 異步消息
1.4微服務實現
1.4.1 通信方式
REST和RPC
1.4.2 RPC框架
- Dubbo/ Dubbox
阿里巴巴公司開源的一個Java高性能優秀的服務框架,可以和Spring框架無縫集成,相關資料很豐富。
遺憾的是已經停止維護了,相關的依賴類比如Spring,Netty還是很老的版本。倒是當當網之類的再繼續維維護,即Dubbox,並且實現了REST的支持。
Dubbo主要實現了服務治理,其他為保證集群安全、可維護、可測試等特性方面都沒有很好的實現,但是幾乎大部分關鍵組件都能找到第三方開源來實現。
所以,如果選擇Dubbo請務必在各個環節做好整套解決方案的准備,不然很可能隨着服務數量的增長,整個團隊都將疲於應付各種架構上不足引起的困難,不能讓各環節人員真正的專注於業務邏輯。
- Motan
新浪微博的服務治理框架,2016年5月開源,Motan是一個小而精的 RPC 框架,它的特點是簡單、易用,是一個輕量級 RPC框架。
與Dubbo相比,Motan在功能方面並沒有那么全面,也沒有實現特別多的擴展。用的人比較少,功能和穩定性有待觀望。對跨語言調用支持較差,主要支持java。
- Spring Cloud(推薦)
Spring Cloud 完全基於Spring Boot,是一個非常新的項目,2016年才 1.0 release。版本提升非常迅速,發展勢頭良好。
Spring Cloud依然發揚了Spring Source整合一切的作風,以標准化的姿態將一些微服務架構的成熟產品與框架揉為一體,並繼承了Spring Boot簡單配置、快速開發、輕松部署的特點,讓原本復雜的架構工作變得相對容易上手一些。服務調用方式是基於REST API的。
缺點是項目很年輕,很少見到國內業界有人在生產上成套使用,一般都是只有其中一兩個組件。相關的技術文檔大部分是英文的,案例也相對較少,使用的話需要摸索的時間會長一些。
下圖是Spring Cloud和Dubbo的對比:
- gRPC
Google發布的開源RPC框架,高性能、開源、將移動和HTTP/2放在首位的通用的RPC框架,基於HTTP/2, netty4.1, proto3, 擁有非常豐富而實用的特性,堪稱RPC 框架的典范。
但它本身它不是分布式的,所以要實現上面的框架的功能需要進一步的開發。
--------------------------------------------------------------------
PS: 歡迎關注公眾號"Devin說",會不定期更新Java相關技術知識。
--------------------------------------------------------------------