微服務簡介
1.1 什麼是微服務架構
- 微服務架構是系統架構上的一種設計風格
- 將大系統拆分成N個小型服務
- 這些小型服務都在各自的線程中運行
- 小服務間通過HTTP協議進行通信
- 有自己的數據存儲、業務開發、自動化測試和獨立部署機制
- 可以由不同語言編寫
小結:微服務架構的思想,不只是停留在開發階段,它貫穿了設計,研發,測試,發佈,運維等各個軟件生命週期。
2. 架構體系
架構樣例:
2.1 微服務發佈--持續集成
3. 微服務架構九大特性
- 服務組件化
-- 組件是可獨立更換、升級的單元。就像PC中的內存,CPU一樣。 - 按業務組織團隊
-- 要求人員全棧技能 - 做“產品”的態度
-- 對整個產品生命週期負責,而不是做“項目”交付態度 - 智能端點與啞管道
-- 微服務間的通訊方式:
--- HTTP的RESTful API
--- MessageMQ消息隊列去中心化治理
--不是每一個問題都是釘子,不是每一個解決方案都是錘子。去中心化數據管理
--獨立維護各服務數據存儲,儘量使服務間“無事物”調用,通過補償機制維護數據一致性問題基礎設施自動化
-- 自動化測試
-- 自動化部署容錯設計
-- 每個服務實現監控和日誌組件,比如服務狀態,斷路器狀態,吞吐量,網絡數據等關鍵數據儀表盤演進式設計
--初期單體,逐步拆分,抽取公共組件
4. 微服務選型
- Dubbo 是阿里多年構建生產級分佈式微服務的技術結晶,服務治理能力非常豐富,在國內技術社區具有很大影響力,目前 github 上有超過 16k 星。Dubbo 本質上是一套基於 Java 的 RPC 框架,噹噹 Dubbox 擴展了 Dubbo 支持 RESTful 接口暴露能力。
- Dubbo 主要面向 Java 技術棧,跨語言支持不足是它的一個弱項,另外因為治理能力太豐富,以至於這個框架比較重,完全用好這個框架的門檻比較高,但是如果你的企業基本上投資在 Java 技術棧上,選 Dubbo 可以讓你在服務框架一塊站在較高的起點上,不管是性能還是企業級的服務治理能力,Dubbo 都做的很出色。
- 新浪微博開源的 Motan(GitHub 4k stars)也不錯,功能和 Dubbo 類似,可以認為是一個輕量裁剪版的 Dubbo。
5. Spring Cloud 介紹 - Spring Cloud技術棧提供了分佈式系統和微服務中所需要的約大多數公共模塊和功能
- Spring Cloud的出現,可以說是對微服務架構巨大的支持和強有力的後盾
- 使用Spring Cloud就像直接購買品牌機一樣,在Spring 社區的整合下,做了大量的兼容性測試,擁有更好的穩定性。
6. Spring Cloud 版本管理
http://projects.spring.io/spring-cloud/
7. Spring Cloud 組件
- 微服務基礎
- 微服務構建 Spring Boot
- 服務治理 Spring Cloud Eureka
- 客戶端負載均衡 Spring Cloud Ribbon
- 服務容錯保護 Spring Cloud Hystrix
- 聲明式服務調用 Spring Cloud Feign
- Api網關服務 Spring Cloud Zuul
- 分佈式配置中心 Spring Cloud Config
- 消息總線 Spring Cloud Bus
- 消息驅動的微服務 Spring Cloud Stream
- 分佈式服務跟蹤 Spring Cloud Sleuth
閱讀更多 編程技匠 的文章