1. 程式人生 > >微服務架構引入的問題及解決方案

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

微服務間如何通訊?

從通訊模式角度考慮
  • 一對一還是一對多?
  • 一對一
  1. 同步:請求響應模式,最常見
  2. 非同步:通知/請求非同步響應
  • 一對多
  1. 非同步:釋出訂閱/釋出非同步響應

    從通訊協議角度考慮
  2. REST API
  3. RPC
  4. MQ

    如何選擇RPC框架
  • I/O、 執行緒排程模型
  • 序列化方式
  • json,xml,二進位制
  • 多語言支援
  • 服務治理

    流行的RPC框架
  • dubbo,dubbox, motan, grpc, thrigt

    微服務如何發現彼此?

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

  • 如何發現?
  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.png
  • dubbo
    dubbo.png

  • grpc
    grpc.png

學到了什麼?

  • 微服務通訊
  • RPC框架
  • 服務發現,部署, 更新,擴容
  • 服務編排
  • SpringCloud+SpringBoot