1. 程式人生 > >高性能並發系統架構應該如何設計?關鍵是什麽?

高性能並發系統架構應該如何設計?關鍵是什麽?

不同 數據庫服務 blog gzip壓縮網頁 狀態 引用 .net 做成 emca

1) 優化前端網頁

  • 充分利用CDN,使JS、圖片等靜態資源的請求能夠就近訪問(順便說一下,如果12306訂票插件能從google提供的http://cdnjs.com中引用JS,而不去直接引用github的JS,就不會把github搞癱了)。
  • 將JS、CSS合並,最小化請求數。將JS和CSS壓縮,最小化數據傳輸
  • 啟用gzip壓縮網頁。


2) 群集分發和調度

據說12306是采用集中式構架的,集中式構架很難應對高並發,也很難水平擴容,分布式不是僅僅將調度服務器,應用服務器,緩存服務器,數據庫服務器分開就行,應該進行更細的服務級劃分,對業務進行服務細分,做成一個個松散耦合的服務,然後把這些服務獨立分布式部署。

3) 采用分布式會話

為了可以進行靈活的請求調度,不應采用weblogic、websphere這些應用服務器自身的session管理用戶會話,而應該自己管理會話,如將會話保存在獨立的集群memcached服務器中,這樣每個應用服務就都無狀態了,會話的請求可以隨意分發給不同的服務器。這也是我的ROP開源項目沒有使用HttpSession,而專門抽象出一個SessionManager接口的原因,開發者應該自己去實現這個接口實現分布式會話管理。

4) 關於數據庫設計優化

數據庫往往是系統瓶頸所在,首先應該對數據庫進行分庫設計,可采用兩級水平切割,如首先切割成幾個物理庫,然後在物理庫內部再采用表分割,一般是通過某個業務ID進行取模切割,降低單庫及單表的並發性,提高TPS。

合理采用讀寫分離技術,做到讀寫分離,可以一寫多讀,有效降低數據庫的負載,數據的同步可以視情況采取應用層同步寫,讀取數據庫日誌更新或直接使用mysql讀寫分離技術等。

此外,業務服務化、服務解耦化是關鍵。

http://blog.csdn.net/blogdevteam/article/details/8572108

高性能並發系統架構應該如何設計?關鍵是什麽?