1. 程式人生 > >[轉][知乎]高性能後臺架構摘要

[轉][知乎]高性能後臺架構摘要

能力 響應 高性能 提高 inline blog 每一個 important 針對

來源:https://zhuanlan.zhihu.com/p/28817489

高性能的網絡和硬件

CDN加速技術。CDN加速將網站的內容緩存在網絡邊緣(離用戶接入網絡最近的地方),然後在用戶訪問網站內容的時候,通過調度系統將用戶的請求路由或者引導到離用戶接入網絡最近或者訪問效果最佳的緩存服務器上,由該緩存服務器為用戶提供內容服務;相對於直接訪問源站,這種方式縮短了用戶和內容之間的網絡距離,從而達到加速的效果。

後臺服務高性能設計

要素1:分布式緩存

分布式緩存系統可以Set化部署,比如商品數據緩存到Set1,用戶數據緩存到Set2,或者一類用戶的數據緩存到Set1,另一類的用戶緩存到Set2

此外,也可以按集群化部署,每一個緩存服務存儲的數據都是對等的,可以對外提供同等的服務,所以外部請求需要負載均衡到不同有緩存服務器

Set化部署的目的主要在於將不同類型的數據路由到不同的地方,好處就是可以

  • 減少不同業務數據的耦合
  • 可以針對不同業務進行不同的優化,從而提升整體性能。

集群式部署的目的在於,提高緩存系統的對外服務能力,

  • 上層業務的路由策略簡單靈活
  • 擴縮容比較容易。

要素2:服務分層

在經典的三層(接入層、邏輯層和存儲層)後臺服務架構中,三層的劃分的原則就是同層次的系統專註處理自己的事情。

  • 接入層專註於處理前端和後臺服務的接入連通、安全認證和數據轉發
  • 邏輯層專註於處理不同業務的無狀態邏輯服務
  • 存儲層專註於處理業務數據的存儲。這樣分層的好處在於各個層次能夠依據業務特點專註於自己的事情,提高系統復用性,降低業務間的耦合性。

要素3:操作異步化

前大型系統中普遍使用消息隊列來將調用異步化,不僅可以提升系統性能還可以提升系統的擴展性。對於大量的數據庫寫請求,對於數據庫的壓力很大,同時也會造成數據庫響應不及時。可以考慮使用消息隊列,數據庫的寫請求可以直接寫入到消息隊列,然後通過多線程或多進程從消息隊列中讀取數據慢慢寫入到數據庫。消息隊列服務器的處理速度會遠遠快於數據庫,所以用戶在寫入操作時會感覺到很快的寫入速度

此外,消息隊列對於請求不均衡的系統,還具有削峰填谷的作用,將短時間內的高峰請求,逐步平攤到更長的時間裏去,從而避免短時間內大量請求壓跨系統。

要素4:服務拆分

服務拆分一般來說有以下原則:

a)高內聚、低耦合: 將耦合性低的業務邏輯劃分為不同系統,將聚合性高的業務邏輯劃分為同一個系統。

b)單一職責原則:對於一個層次或者一個模塊應該保持相對單一的職責,專註於自己的服務。

c)故障隔離:不同系統必須相對獨立設計和運行,能夠獨立處理自己的故障,而不至於影響全局。

d)獨立運維和持續交互:對於不同的系統可以隨時叠代更新,而不至於影響其他服務。

對於服務拆分主要有縱向拆分和水平拆分兩種方法。三層架構就是典型的縱向拆分模式。對於不同的業務模塊,針對業務邏輯和存儲服務可以按水平拆分的方法將拆分為不同的系統。比如商品系統邏輯層、訂單系統邏輯層、商品系統存儲層、訂單系統存儲層。

要素5:分布式集群化

每個服務支持多臺機器部署?

[轉][知乎]高性能後臺架構摘要