大數據和高併發的解決方案總結

軟件剛開始的時候是爲了實現功能,隨着信息量和用戶的增多,大數據和高併發成了軟件設計必須考慮的問題,那麼大數據和高併發本質是什麼呢?

本質很簡單,一個是慢,一個是等。兩者是相互關聯的,因爲慢,所以要等,因爲等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。

關鍵是如何解決慢和等,核心一個是短,一個是少,一個是分流。

短是指路徑要短。典型的mvc結構是請求->controller->model->dao->view,然後把頁面返回給用戶。要想短的話,

1,頁面靜態化- 用戶可以直接獲取頁面,不用走那麼多流程,比較適用於頁面不頻繁更新。

2,使用緩存- 第一次獲取數據從數據庫準提取,然後保存在緩存中,以後就可以直接從緩存提取數據。不過需要有機制維持緩存和數據庫的一致性。

3,使用儲存過程-那些處理一次請求需要多次訪問數據庫的操作,可以把操作整合到儲存過程,這樣只要一次數據庫訪問就可以了。

4,批量讀取 - 高併發情況下,可以把多個請求的查詢合併到一次進行,以減少數據庫的訪問次數

5,延遲修改 - 高併發情況下,可以把多次修改請求,先保存在緩存中,然後定時將緩存中的數據保存到數據庫中,風險是可能會斷電丟失緩存中的數據,

6,  使用索引 - 索引可以看作是特殊的緩存,儘量使用索引就要求where字句中精確的給出索引列的值。

少是指查詢的數據要少。

1,分表 - 把本來同一張表的內容,可以按照地區,類別等分成多張表,很簡單的一個思路,但是要儘量避免分出來的多表關聯查詢。

2,分離活躍數據 - 例如登錄用戶業務,註冊用戶很多,但是活躍的登錄用戶很少,可以把活躍用戶專門保存一張表,查詢是先查詢活躍表,沒有的話再查總表,這也類似與緩存啦。

3, 分塊 - 數據庫層面的優化,對程序是透明的,查詢大數據只用找到相應塊就行。

分流三種。

1,集羣 - 將併發請求分配到不同的服務器上,可以是業務服務器,也可以是數據庫服務器。

2,分佈式 - 分佈式是把單次請求的多項業務邏輯分配到多個服務器上,這樣可以同步處理很多邏輯,一般使用與特別複雜的業務請求。

3,CDN - 在域名解析層面的分流,例如將華南地區的用戶請求分配到華南的服務器,華中地區的用戶請求分配到華中的服務器。



先總結這麼多  希望對大家有幫助

發佈了77 篇原創文章 · 獲贊 10 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章