分佈式服務框架設計

1. 服務框架的設計

儘管不一樣的分佈式服務框架實現細節存在差別,可是核心功能差別不大,下面的架構圖描繪了一個分佈式服務框架的總體邏輯架構。緩存

image.png

總共分爲 3 層:安全

  1. 服務層,Service,其中主要部分就是動態代理,主要用於將服務提供者的接口封裝成遠程服務調用。上層的服務接口用於 Spring 之類的業務框架使用,也是 Spring 的 bean.網絡

  2. 過濾器層,服務調用職責鏈,提供多種調用切面供框架自身和使用者擴展,例如負載均衡,性能統計,服務調用完成通知,失敗重試等。架構

  3. RPC 層,這裏就是 RPC 框架的核心部分,包括通訊框架,序列化框架,還有用於屏蔽底層通訊框架和序列化框架的抽象接口。負載均衡

分佈式服務框架一般會包含另外兩個重要功能:服務治理中心 和 服務註冊中心框架

1. 服務註冊中心:負責服務的發佈和通知,一般支持對等集羣部署,某個節點宕機不會影響整個集羣不可用。即便所有宕機,隻影響新的節點註冊和發佈,不影響現有的,由於客戶端須要緩存服務路由信息。運維

2. 服務治理中心: 服務治理中心一般包括服務治理接口服務治理 Portal,架構師,測試人員和系統運維人員經過服務治理 Portal 對服務的運行狀態,歷史數據,健康度和調用關係等進行可視化的分析和維護,目標是要持續優化服務,防止服務架構腐化,保證服務高質量運行。異步

2. 服務框架的功能

雖然每一個服務框架不盡相同,可是還有有一些核心功能是相同的,好比如下功能:分佈式

  1. 服務訂閱發佈:好比,配置化發佈和引用服務,服務自動發現,服務在線註冊和取消註冊。
  2. 服務路由:好比,默認提供隨機路由,輪詢,基於權重的路由,粘滯鏈接,路由定製功能。
  3. 集羣容錯:好比,Failover(失敗自動切換),Failback(失敗自動恢復),Failfast(快速失敗)。
  4. 服務調用:須要支持:同步調用,異步調用,並行調用。
  5. 多協議:包括私有協議,公有協議。
  6. 序列化方式:須要支持二進制和文本類序列化方式。
  7. 統一配置:支持本地靜態配置,支持基於配置中心的動態配置。

以上功能能夠按照業務定製,不須要 100% 支持。性能

3. 服務框架的性能指標

分佈式服務框架的性能確定比不上本地調用,緣由是:網絡通訊,序列化,反射調用,動態代理這些都會消耗性能。因此須要有性能指標。

  1. 高性能:在同等資源佔用狀況下,單服務提供者的 TPS 要儘可能高。
  2. 低延時:在同等資源佔用狀況下,服務調用延時要儘可能低。
  3. 性能線性增加:若是增長了服務提供者,總體性能要可以線性增加。
  4. 可靠性:服務註冊中心的可靠性,網絡鏈路的可靠性。

4. 服務治理須要哪些功能?

  1. 服務運行態監控,例如經過路由導流,限流,服務降級,動態控制超時時間。
  2. 服務監控,性能統計,報表,報警。
  3. 服務生命週期管理
  4. 故障快速定位
  5. 服務安全

總結

以上就是在設計分佈式服務框架須要注意的地方,例如總體架構的設計,框架須要哪些功能,框架的須要保證哪些性能。同時,一個框架只是可使用時不夠的,還須要服務治理,保證服務不被腐化,同時保證服務的健康。

相關文章
相關標籤/搜索