spring微服務實戰(一):介紹

fairjm發表於2017-08-25

本文來自 fairjm@圖靈社群 轉截請註明出處


之後會寫一系列 spring微服務實戰的讀書筆記,分享的同時也督促下自己好好讀完這本書╮( ̄▽ ̄")╭.
因為並不是開源的書,所以放出的筆記會比較粗糙,大概是個總覽性質的文章,有興趣的同學可以開啟連結購買原書~. (翻譯不是很通順 歡迎指正

1.1 什麼是微服務

巨石應用的挑戰:

  • 規模和複雜性
  • 團隊分工
  • 改動會牽扯到整個服務的重新打包 測試和部署

微服務架構的特徵:

  • 應用邏輯被劃分為具有明確責任邊界的小粒度的元件 通過協調來交付解決方案
  • 每個元件都對一個小領域負責.獨立部署.可複用.
  • 基於一些協議(而非標準) 提供輕量的資料交換協議(HTTP JSON)
  • 技術實現無關.技術異構.
  • 因為為服務小 獨立和分散式的天性,允許組織有明確責任區域的小型開發團隊.並對所屬服務負責.

主要使用
spring boot
spring cloud

1.6 為什麼需要改變我們構建應用的方式

全球化影響 更大群體的全球客戶以及全球競爭

  • 複雜度的上升:單一的資料庫不再滿足需求.需要接入更多服務
  • 客戶需要更快的迭代
  • 效能和可伸縮性(scalability):應對流量高峰.高峰時快速通過增加服務擴充套件 高峰過後縮減機器
  • 客戶期望應用保持可用

為了應對上述的問題,我們需要構建的系統要求:

  • 靈活(Flexible):解耦的服務可以組合和排列快速交付新功能.程式碼塊越小 改變的複雜度越低 交付也越快
  • 彈性(Resilient):一塊掛了不會影響整個應用掛.在不可恢復的錯誤發生時可以優雅降級.
  • 伸縮性:容易通過增加服務的數量來水平擴充套件.不同的服務可以用不同的擴充套件方式(而巨石要擴充套件所有服務都一起擴充套件)

雲服務:
IaaS PaaS SaaS FaaS(函式) CaaS(容器)

1.9 微服務不僅僅是寫程式碼

核心的微服務開發模式
服務的顆粒
通訊協議
介面設計
服務的配置管理
服務間的事件處理

微服務路由模式
服務發現
服務註冊
這兩者是大規模微服務應用的關鍵

微服務客服端彈性模式
客戶端負載均衡
斷路器模式
退路(fallback)模式
艙壁(bulkhead)模式

微服務安全模式
認證
授權
憑證的管理和傳播

微服務日誌和追蹤模式
隨著服務例項的增加 日誌處理和除錯會變得非常麻煩
日誌關聯
日誌聚合
微服務追蹤

微服務構建/部署模式
CI 不要再人肉運維了

總結

  • 微服務是很小的功能塊,對一個特定範圍的區域負責
  • 微服務沒有行業標準.
  • 寫微服務很容易,但是在生產環境運維需要額外的心思.
  • 微服務語言無關
  • Spring Boot是用來簡化構建基於REST和JSON的微服務的.
  • Spring Cloud是一系列的開源技術 來源於Netflix HashiCorp 和spring的annotation結合 簡化設定和配置.

相關文章