微服務架構引入的問題及解決方案

微服務間如何通信?

#####從通信模式角度考慮java

  • 一對一仍是一對多?
  • 一對一
  1. 同步:請求響應模式,最多見
  2. 異步:通知/請求異步響應
  • 一對多
  1. 異步:發佈訂閱/發佈異步響應
從通信協議角度考慮
  1. REST API
  2. RPC
  3. MQ
如何選擇RPC框架
  • I/O、 線程調度模型
  • 序列化方式
  • json,xml,二進制
  • 多語言支持
  • 服務治理 #####流行的RPC框架
  • dubbo,dubbox, motan, grpc, thrigt

微服務如何發現彼此?

傳統服務vs微服務
  • 傳統服務發現 傳統服務發現.pngweb

  • 如何發現?json

  1. 客戶端發現 客戶端發現.png服務器

  2. 服務端發現框架

    服務端發現.png

微服務怎樣部署?更新?擴容?

什麼是服務編排
  • 服務部署,更新,擴容
流行的服務編排工具
  • Mesos, Docker Swarm , Kubernetes

SpringBoot與微服務

SpringBoot的使命
  • 化繁爲簡
SpringBoot核心功能
  • 獨立運行 java -jar xxx.jar
  • 內嵌web服務器
  • 簡化配置
  • 準生產的應用監控
SpringBoot與微服務的關係
  • java的潤滑劑

SpringCloud與微服務

SpringCloud的使命
  • 簡化java的分佈式系統

深刻理解

  • 一系列框架
  1. 簡化java的分佈式系統
  2. SpringBoot封裝
SpringBoot vs SpringCloud
  • SpringBoot意在簡化,是一種開發、配置風格
  • SpringCloud意在簡化分佈式,是功能的集合,風格的統一
SpringCloud vs 微服務
  • java的微服務
  • 側重功能,側重開發
SpringCloud核心組件
  • Netflix Eureka(客戶端發現) Eureka.png異步

  • Netflix Ribbon ribbon.png分佈式

  • Netflix Hystrix(多路器) Hystrix.png微服務

  • Netflix Zuul(服務路由) Zuul.png工具

  • Spring Cloud Config cloud config.pngspa

  • dubbo dubbo.png

  • grpc grpc.png

學到了什麼?

  • 微服務通訊
  • RPC框架
  • 服務發現,部署, 更新,擴容
  • 服務編排
  • SpringCloud+SpringBoot
相關文章
相關標籤/搜索