1. 程式人生 > >《Spring Cloud微服務實戰》讀書筆記之基礎知識1

《Spring Cloud微服務實戰》讀書筆記之基礎知識1

摘要

微服務是一種系統架構的設計風格,它主旨在於將一個原本獨立的系統,拆分成多個獨立執行的小型服務。不同服務之間通過Restful介面進行通訊協作。

關鍵詞:Spring Cloud微服務

一、什麼是微服務

微服務是一種系統架構的設計風格,它主旨在於將一個原本獨立的系統,拆分成多個獨立執行的小型服務。不同服務之間通過Restful介面進行通訊協作。

  • 拆分的小型服務圍繞系統耦合度高的業務功能進行構建;
  • 每個服務都維護自身的資料儲存(如何維護?)、業務開發、測試、部署機制;
  • 由於是輕量級通訊協作,微服務可以使用不同語言來編寫;

二、如何實施微服務

引入微服務(與單體應用對比)引發的問題:

  • 運維:維護程序數增加,需要一定的開發能力來編排組織程序;
  • 介面:需要互動雙方協調發布,完善介面和版本管理,保證介面的正確呼叫;
  • 分散式環境:拆分後服務只能通過通訊來進行協作,所以要考慮分散式環境的因素(網路延遲、分散式事務、非同步訊息)

為了解決前面的問題,以下是實施微服務一些原則:

1、服務元件化

保證每個服務都獨立開發、部署,避免一個服務修改引起整個系統的重新部署。

2、按業務組織團隊

從按技術層面轉為按業務劃分團隊。(減少溝通成本)

3、以產品態度對待服務

對服務整個生命週期負責,持續關注服務的運作情況。

4、智慧端點與啞管道原則

使用微服務不能簡單將函式呼叫直接改成Restful/RPC呼叫(避免繁瑣的通訊),微服務常用兩種服務呼叫方式:

  • 基於Http的Restful API(或其它輕量級的訊息傳送協議) - 請求響應模型,同步阻塞
  • 基於輕量級訊息匯流排(MQ) - 觀察模型

關於智慧端點與啞管道的概念 關於智慧端點與啞管道的概念,我是這樣理解:

  • 啞管道是指訊息的通訊,管道是不會通知端點訊息的內容、結構,僅提供一個可靠的資訊互動功能,稱為“啞”。
  • 智慧端點是指端點要主動訂閱管道的訊息,去解析裡面的內容,稱為“智慧”。

5、去中心化治理

整個架構採用輕量級協議定義介面,各個元件根據具體業務特點進行技術選型。

6、去中心化管理資料

每個服務管理其自有的資料庫。(在改造過程中,將資料庫的資料拆分到其它資料庫中(Mysql、MongoDB、Redis))

面臨的新問題:

  • 分散式事務,所以儘量避免事務,保證各服務之間是"無事務"的呼叫;
  • 一致性問題,保證最終一致性;

7、基礎設施自動化

由於服務數量的增多,務必需要一個“持續交付”平臺來支援實施。 自動化測試與自動化部署。

8、容錯設計

微服務架構中,可能存在部分服務故障的情況,處理不好會出現故障蔓延的情況。(一個正常服務頻繁呼叫故障服務、導致大量執行緒掛起等待超時,最後正常服務也出現了故障) 所以微服務架構中,應快速監測出故障源並儘可能恢復服務。(對每個元件的執行情況(服務狀態、斷路器狀態、吞吐量、網路延遲等)實現監控和日誌記錄)

9、演進式設計

實施微服務應該以演進的方式構建。

三、Spring Cloud 簡介

Spring Cloud 是一個基於Spring Boot 實現的微服務架構解決方案。提供了配置管理、服務治理、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作的簡單開發方式。

Spring Cloud 子專案介紹:

  • Spring Cloud Config:配置管理工具
  • Spring Cloud Netflix:核心元件
    • Eureka:服務治理元件,服務註冊中心、服務註冊與發現機制
    • Hystrix:容錯管理元件,實現斷路器模式
    • Ribbon:客戶端負載均衡呼叫元件
    • Feign:基於Ribbon和Hystrix的宣告式服務呼叫元件
    • Zuul:閘道器元件
    • Archaius:外部化配置元件
  • Spring Cloud Bus:事件、訊息匯流排
  • Spring Cloud Cluster:針對ZooKeeper、Redis、Hazelcast、Consul的選舉演算法和通用狀態模式的實現。
  • Spring Cloud Cloudfoundry:與Private Cloudfoundry的整合支援。
  • Spring Cloud Consul:服務發現與配置工具。
  • Spring Cloud Stream:通過Redis、Rabbit或Kafka實現訊息微服務,通過重簡單的宣告式模型來發送和接收訊息。
  • Spring Cloud AWS:用於簡化整合Amazon Web Service元件
  • Spring Cloud Security:安全工具包,提供在Zuul代理中對OAuth2客戶端請求的中繼器。
  • Spring Cloud Sleuth:Spring Cloud 應用的分散式跟蹤實現,可以完美整合Zipkin。
  • Spring Cloud ZooKeeper:基於Zoopeer的服務發現與配置管理元件。
  • Spring Cloud Starters:Spring Cloud 的基礎元件,它是基於Spring Boot 風格專案的基礎依賴模組。
  • Spring Cloud CLI:用於在Groovy中快速建立Spring Cloud 應用的Spring Boot CLI外掛。

SpringCloud微服務架構圖(轉自黑馬視訊): SpringCloud微服務架構圖(轉自黑馬視訊).png

參考資料