大資料和高併發的解決方案總結

2021-09-29 05:30:49 字數 1449 閱讀 4718

現在,軟體架構變得越來越複雜了,好多技術層出不窮,看得威哥眼花繚亂,解決這個問題呢,就是要把複雜問題簡單化,核心就是要把握本質。

軟體剛開始的時候是為了實現功能,隨著資訊量和使用者的增多,大資料和高併發成了軟體設計必須考慮的問題,那麼大資料和高併發本質是什麼呢?

威哥在網上也查閱了好些資料,總結了下大資料和高併發的本質:

乙個是慢,乙個是等。兩者是相互關聯的,愛恨交織,因為慢,所以要等,因為等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。

那如何解決慢和等呢?

威哥總結了3個核心:

1.短;

2.少;

3.分流;

短:

短是指路徑要短。在硬體層面,我們可以把站點通過cdn部署到離客戶最近的網路節點入口。

在**技術層面,例如典型的mvc結構是請求->controller->model->dao->view,然後把頁面返回給使用者。要想短的話:

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

2.使用快取-:第一次獲取資料從資料庫準提取,然後儲存在快取中,以後就可以直接從快取提取資料。不過需要有機制維持快取和資料庫的一致性。

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

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

5.延遲修改:高併發情況下,可以把多次修改請求,先儲存在快取中,然後定時將快取中的資料儲存到資料庫中,風險是可能會斷電丟失快取中的資料。

7.使用索引 - 索引可以看作是特殊的快取,盡量使用索引就要求where字句中精確的給出索引列的值。

少:

指服務查詢的資料要盡量少。

1.分表:把本來同一張表的內容,可以按照地區,類別或者業務屬性等分成多張表,很簡單的乙個思路,但是要盡量避免分出來的多表關聯查詢。比喻訂單表,包含了訂單主表資訊,訂單購物資訊,訂單**資訊,訂單金額拆分資訊,訂單配送資訊,訂單追蹤資訊,這樣乙個大表,要按照業務屬性拆分出來,當然為避免多表關聯查詢,我們可以使用延遲載入方式載入資料,反正要做到每次資料盡可能的少。

3.分塊: 也可以理解為分割槽,資料庫層面的優化,對程式是透明的,查詢大資料只用找到相應塊就行。比喻將訂單表按照時間範圍分成多個時間維度的訂單表,可能儲存在乙個資料庫,也可以存著在不同的資料庫和不同分布式集群上,但是對外還是顯示一張表。

分流:

1.集群:將併發請求分配到不同的伺服器上,可以是業務伺服器,也可以是資料庫伺服器。

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

3.cdn:在網域名稱解析層面的分流,例如將華南地區的使用者請求分配到華南的伺服器,華中地區的使用者請求分配到華中的伺服器。

大資料和高併發的解決方案總結

軟體剛開始的時候是為了實現功能,隨著資訊量和使用者的增多,大資料 和高併發成了軟體設計必須考慮的問題,那麼大資料和高併發本質是什麼呢?本質很簡單,乙個是慢,乙個是等。兩者是相互關聯的,因為慢,所以要等,因為等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。關鍵是如何解決慢和等,核心乙個是短...

大資料和高併發的解決方案總結

現在,軟體架構變得越來越複雜了,好多技術層出不窮,令人眼花繚亂,解決這個問題呢,就是要把複雜問題簡單化,核心就是要把握本質。軟體剛開始的時候是為了實現功能,隨著資訊量和使用者的增多,大資料和高併發成了軟體設計必須考慮的問題,那麼大資料和高併發本質是什麼呢?本質很簡單,乙個是慢,乙個是等。兩者是相互關...

大資料和高併發的解決方案總結

現在,軟體架構變得越來越複雜了,好多技術層出不窮,令人眼花繚亂,解決這個問題呢,就是要把複雜問題簡單化,核心就是要把握本質。軟體剛開始的時候是為了實現功能,隨著資訊量和使用者的增多,大資料和高併發成了軟體設計必須考慮的問題,那麼大資料和高併發本質是什麼呢?本質很簡單,乙個是慢,乙個是等。兩者是相互關...