摘要:前言一個項目剛開始的時候是為了實現(xiàn)基本功能,隨著版本和功能的迭代,大數(shù)據(jù)和高并發(fā)成了軟件設(shè)計必須考慮的問題本質(zhì)很簡單,一個是慢,一個是等。不過需要有機制維持緩存和數(shù)據(jù)庫的一致性。
[TOC]
前言一個項目剛開始的時候是為了實現(xiàn)基本功能,隨著版本和功能的迭代,大數(shù)據(jù)和高并發(fā)成了軟件設(shè)計必須考慮的問題!
本質(zhì)很簡單,一個是慢,一個是等。
兩者是相互關(guān)聯(lián)的,因為慢,所以要等,因為等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。
關(guān)鍵是如何解決慢和等,
核心 一個是短,一個是少,一個是分流,最后一個是集群/橫向擴張/讀寫分離/建立主從
短是指路徑要短
頁面靜態(tài)化- 用戶可以直接獲取頁面,不用走那么多流程,比較適用于頁面不頻繁更新。
使用緩存- 第一次獲取數(shù)據(jù)從數(shù)據(jù)庫準提取,然后保存在緩存中,以后就可以直接從緩存提取數(shù)據(jù)。不過需要有機制維持緩存和數(shù)據(jù)庫的一致性。
使用儲存過程-那些處理一次請求需要多次訪問數(shù)據(jù)庫的操作,可以把操作整合到儲存過程,這樣只要一次數(shù)據(jù)庫訪問就可以了。
批量讀取 - 高并發(fā)情況下,可以把多個請求的查詢合并到一次進行,以減少數(shù)據(jù)庫的訪問次數(shù)
延遲修改 - 高并發(fā)情況下,可以把多次修改請求,先保存在緩存中,然后定時將緩存中的數(shù)據(jù)保存到數(shù)據(jù)庫中,風(fēng)險是可能會斷電丟失緩存中的數(shù)據(jù),
使用索引 - 索引可以看作是特殊的緩存,盡量使用索引就要求where字句中精確的給出索引列的值。
少是指查詢的數(shù)據(jù)要少:
分表 - 把本來同一張表的內(nèi)容,可以按照地區(qū),類別等分成多張表,很簡單的一個思路,但是要盡量避免分出來的多表關(guān)聯(lián)查詢。
分離活躍數(shù)據(jù) - 例如登錄用戶業(yè)務(wù),注冊用戶很多,但是活躍的登錄用戶很少,可以把活躍用戶專門保存一張表,查詢是先查詢活躍表,沒有的話再查總表,這也類似與緩存啦。
分塊 - 數(shù)據(jù)庫層面的優(yōu)化,對程序是透明的,查詢大數(shù)據(jù)只用找到相應(yīng)塊就行。
分流集群 - 將并發(fā)請求分配到不同的服務(wù)器上,可以是業(yè)務(wù)服務(wù)器,也可以是數(shù)據(jù)庫服務(wù)器。
分布式 - 分布式是把單次請求的多項業(yè)務(wù)邏輯分配到多個服務(wù)器上,這樣可以同步處理很多邏輯,一般使用與特別復(fù)雜的業(yè)務(wù)請求。
CDN - 在域名解析層面的分流,例如將華南地區(qū)的用戶請求分配到華南的服務(wù)器,華中地區(qū)的用戶請求分配到華中的服務(wù)器。
分庫分表 -
水平拆分【分表】:
對于訪問極為頻繁且數(shù)據(jù)量巨大的單表來說,首先要做的是減少單表的記錄條數(shù),以便減少數(shù)據(jù)查詢所需的時間,提高數(shù)據(jù)庫的吞吐,這就是所謂的分表【水平拆分】
垂直拆分【分庫】:
是根據(jù)業(yè)務(wù)耦合性,將關(guān)聯(lián)度低的不同表存儲在不同的數(shù)據(jù)庫上,對數(shù)據(jù)庫進行拆分,從而提高數(shù)據(jù)庫寫入能力,即分庫【垂直拆分】
建立主從 - 讀寫分離就是只在主服務(wù)器上寫,只在從服務(wù)器上讀,基本原理是讓主數(shù)據(jù)庫處理事務(wù)性查詢,而從數(shù)據(jù)庫處理select查詢,數(shù)據(jù)庫復(fù)制被用于把事務(wù)性查詢(增刪改)導(dǎo)致的改變更新同步到集群中的從數(shù)據(jù)庫。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/17831.html
摘要:這里有一份面試題相關(guān)總結(jié),涉及高并發(fā)分布式高可用相關(guān)知識點,在此分享給大家,希望大家能拿到一份理想的知識點會陸續(xù)更新在上,覺得還算湊和的話可以關(guān)注一下噢高并發(fā)架構(gòu)消息隊列為什么使用消息隊列消息隊列有什么優(yōu)點和缺點都有什么優(yōu)點和缺點如何保證消 這里有一份面試題相關(guān)總結(jié),涉及高并發(fā)、分布式、高可用相關(guān)知識點,在此分享給大家,希望大家能拿到一份理想的 Offer! 知識點會陸續(xù)更新在 Git...
摘要:在中一般來說通過來創(chuàng)建所需要的線程池,如高并發(fā)原理初探后端掘金閱前熱身為了更加形象的說明同步異步阻塞非阻塞,我們以小明去買奶茶為例。 AbstractQueuedSynchronizer 超詳細原理解析 - 后端 - 掘金今天我們來研究學(xué)習(xí)一下AbstractQueuedSynchronizer類的相關(guān)原理,java.util.concurrent包中很多類都依賴于這個類所提供的隊列式...
摘要:在中一般來說通過來創(chuàng)建所需要的線程池,如高并發(fā)原理初探后端掘金閱前熱身為了更加形象的說明同步異步阻塞非阻塞,我們以小明去買奶茶為例。 AbstractQueuedSynchronizer 超詳細原理解析 - 后端 - 掘金今天我們來研究學(xué)習(xí)一下AbstractQueuedSynchronizer類的相關(guān)原理,java.util.concurrent包中很多類都依賴于這個類所提供的隊列式...
閱讀 2277·2023-04-25 14:56
閱讀 2778·2021-11-16 11:44
閱讀 2806·2021-09-22 15:00
閱讀 1967·2019-08-29 16:55
閱讀 2248·2019-08-29 14:04
閱讀 2399·2019-08-29 11:23
閱讀 3747·2019-08-26 10:46
閱讀 1982·2019-08-22 18:43