微服務架構引入的問題及解決方案
阿新 • • 發佈:2018-11-25
微服務間如何通訊?
從通訊模式角度考慮
- 一對一還是一對多?
- 一對一
- 同步:請求響應模式,最常見
- 非同步:通知/請求非同步響應
- 一對多
非同步:釋出訂閱/釋出非同步響應
從通訊協議角度考慮
- REST API
- RPC
MQ
如何選擇RPC框架
- I/O、 執行緒排程模型
- 序列化方式
- json,xml,二進位制
- 多語言支援
服務治理
流行的RPC框架
dubbo,dubbox, motan, grpc, thrigt
微服務如何發現彼此?
傳統服務vs微服務
傳統服務發現
- 如何發現?
客戶端發現
服務端發現
微服務怎樣部署?更新?擴容?
什麼是服務編排
服務部署,更新,擴容
流行的服務編排工具
Mesos, Docker Swarm , Kubernetes
SpringBoot與微服務
SpringBoot的使命
化繁為簡
SpringBoot核心功能
- 獨立執行 java -jar xxx.jar
- 內嵌web伺服器
- 簡化配置
準生產的應用監控
SpringBoot與微服務的關係
java的潤滑劑
SpringCloud與微服務
SpringCloud的使命
簡化java的分散式系統
深入理解
- 一系列框架
- 簡化java的分散式系統
SpringBoot封裝
SpringBoot vs SpringCloud
- SpringBoot意在簡化,是一種開發、配置風格
SpringCloud意在簡化分散式,是功能的集合,風格的統一
SpringCloud vs 微服務
- java的微服務
側重功能,側重開發
SpringCloud核心元件
Netflix Eureka(客戶端發現)
Netflix Ribbon
Netflix Hystrix(多路器)
Netflix Zuul(服務路由)
- Spring Cloud Config
dubbo
grpc
學到了什麼?
- 微服務通訊
- RPC框架
- 服務發現,部署, 更新,擴容
- 服務編排
- SpringCloud+SpringBoot