天天看點

掌握這幾個秘籍,你的分布式系統絕對牛掰!!!

前言

根據CAP理論,分布式環境系統需要盡量保證C 一緻性 A 可用性 P 容錯性。分布式系統,從本質上來講,就是通過一些低廉的硬體來實作系統更好的吞吐、性能以及可用性。分布式系統,有一套通用的系統設計政策。大緻上分為:

  • 心跳檢測
  • 高可用保障
  • 容錯處理
  • 重試機制
  • 負載均衡

在分布式系統環境中,對于能夠檢測衆多節點的活性是很有必要的。隻有當節點存活,才可以進行執行對應的業務任務。傳統來說,解決該類問題,一般都是通過心跳檢測手段。如同醫生通過儀器探測病人心跳一樣,去判定伺服器衆節點的存活。

掌握這幾個秘籍,你的分布式系統絕對牛掰!!!

用戶端,在請求對應的服務節點前,需要經過心跳檢測伺服器,進行路由轉發到對應的節點處理。

心跳檢測伺服器,檢測衆多分發或者路由節點的活性,如果存活正常,路由才會轉發到該節點。

傳統心跳檢測,存在一定的局限性

  • 如果節點沒有挂,但是ping逾時,導緻,判定死亡,就會造成很大的資源損失
  • 心跳檢測如果出現問題,則也會造成很大的影響

總結來說,心跳檢測收到心跳正常,是正常的,但是心跳檢測收不到心跳,也不代表節點存在異常,判定死亡

優化心跳檢測政策

  1. 周期檢測心跳機制
  2. 累計失效檢測機制

高可用設計

系統高可用性的常用設計模式包括三種:主備、互備、叢集模式

  1. 主備模式

主備模式,就是Active Standby,當主機當機時,備機接管主機一切工作,待主機正常之後,會通過兩種方式自動(熱備)、手動(冷備),恢複主機的工作

資料庫高可用方案中,一般都是MS主從模式 Matser-Slave

掌握這幾個秘籍,你的分布式系統絕對牛掰!!!
  1. 互備模式

互備模式,指的是多台主機同時運作各自的服務工作且互相檢測,同步。在資料庫高可用部分,采用互備,主要是MM模式(Multi-Master)。多個master都具有read - write 能力,需根據時間戳或者版本,最終合并。分布式版本管理系統git就可以了解為MM模式

  1. 叢集模式

叢集模式,指的是,多個節點同時運作服務,可以通過類似心跳伺服器這種分擔服務請求。

容錯性

容錯性,指系統對于錯誤、異常的包容能力,為了更好地提供使用者的舒适度或者說用戶端的響應合理,做出來的一些系統的讓步處理。

容錯,并非容忍錯誤。以分布式環境下的,緩存舉例說明:

一個查詢業務,先通過緩存查詢,如果緩存沒有,再去資料庫查詢。如果沒有查詢得到,可能的原因包括以下幾個方面:

  • 資料庫連接配接未知異常
  • 資料庫真的沒有

那麼,使用者可以進行間隔一定時間發起重試,可以一定程度友好的,解決問題

另外,如果出現緩存失效的情況下,惡意攻擊,調用查詢接口,查詢緩存中不存在的key,導緻大量流量進入DB,導緻DB崩潰。

為了解決這個問題,我們可以考慮,如果在高頻、短周期内,當客戶查詢不存在的key時,我們可以對目前key進行指派,直接傳回。響應給系統使用者,截斷惡意操作。

分布式系統環境,通過負載均衡,達到資源的合理配置設定利用

掌握這幾個秘籍,你的分布式系統絕對牛掰!!!

負載均衡,分為硬體和軟體。硬體常見的裝置F5,軟體的LVS 、Nginx等等

以nginx為例,常見的負載均衡政策如下

  • [x] 輪詢
  • [x] 最少連接配接
  • [x] IP位址Hash
  • [x] 基于權重的負載均衡
  • [x] 自定義實作
掌握這幾個秘籍,你的分布式系統絕對牛掰!!!