微服務間如何通信?
#####從通信模式角度考慮java
- 一對一仍是一對多?
- 一對一
- 同步:請求響應模式,最多見
- 異步:通知/請求異步響應
- 一對多
- 異步:發佈訂閱/發佈異步響應
從通信協議角度考慮
- REST API
- RPC
- MQ
如何選擇RPC框架
- I/O、 線程調度模型
- 序列化方式
- json,xml,二進制
- 多語言支持
- 服務治理 #####流行的RPC框架
- dubbo,dubbox, motan, grpc, thrigt
微服務如何發現彼此?
傳統服務vs微服務
-
傳統服務發現 web
-
如何發現?json
-
客戶端發現 服務器
-
服務端發現框架
微服務怎樣部署?更新?擴容?
什麼是服務編排
- 服務部署,更新,擴容
流行的服務編排工具
- 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 spa
-
dubbo
-
grpc
學到了什麼?
- 微服務通訊
- RPC框架
- 服務發現,部署, 更新,擴容
- 服務編排
- SpringCloud+SpringBoot