面試題解答:?高并發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
高并發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
緩存:緩存比較好理解,在大型高并發(fā)系統(tǒng)中,如果沒(méi)有緩存數(shù)據(jù)庫(kù)將分分鐘被爆,系統(tǒng)也會(huì)瞬間癱瘓。使用緩存不單單能夠提升系統(tǒng)訪問(wèn)速度、提高并發(fā)訪問(wèn)量,也是保護(hù)數(shù)據(jù)庫(kù)、保護(hù)系統(tǒng)的有效方式。大型網(wǎng)站一般主要是“讀”,緩存的使用很容易被想到。在大型“寫”系統(tǒng)中,緩存也常常扮演者非常重要的角色。比如累積一些數(shù)據(jù)批量寫入,內(nèi)存里面的緩存隊(duì)列(生產(chǎn)消費(fèi)),以及HBase寫數(shù)據(jù)的機(jī)制等等也都是通過(guò)緩存提升系統(tǒng)的吞吐量或者實(shí)現(xiàn)系統(tǒng)的保護(hù)措施。甚至消息中間件,你也可以認(rèn)為是一種分布式的數(shù)據(jù)緩存。 降級(jí):服務(wù)降級(jí)是當(dāng)服務(wù)器壓力劇增的情況下,根據(jù)當(dāng)前業(yè)務(wù)情況及流量對(duì)一些服務(wù)和頁(yè)面有策略的降級(jí),以此釋放服務(wù)器資源以保證核心任務(wù)的正常運(yùn)行。降級(jí)往往會(huì)指定不同的級(jí)別,面臨不同的異常等級(jí)執(zhí)行不同的處理。根據(jù)服務(wù)方式:可以拒接服務(wù),可以延遲服務(wù),也有時(shí)候可以隨機(jī)服務(wù)。根據(jù)服務(wù)范圍:可以砍掉某個(gè)功能,也可以砍掉某些模塊。總之服務(wù)降級(jí)需要根據(jù)不同的業(yè)務(wù)需求采用不同的降級(jí)策略。主要的目的就是服務(wù)雖然有損但是總比沒(méi)有好。 限流:限流可以認(rèn)為服務(wù)降級(jí)的一種,限流就是限制系統(tǒng)的輸入和輸出流量已達(dá)到保護(hù)系統(tǒng)的目的。一般來(lái)說(shuō)系統(tǒng)的吞吐量是可以被測(cè)算的,為了保證系統(tǒng)的穩(wěn)定運(yùn)行,一旦達(dá)到的需要限制的閾值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延遲處理,拒絕處理,或者部分拒絕處理等等。
國(guó)慶節(jié),倒計(jì)時(shí),限量秒殺
1核2G,1年62元,3年200元,國(guó)慶秒殺
1核2G,1年62元,3年200元,國(guó)慶秒殺
1核2G,1年62元,3年200元,國(guó)慶秒殺
負(fù)載均衡算法:
輪詢 加權(quán)輪詢 隨機(jī)算法 一致性Hash
for update顯示加鎖 把update語(yǔ)句寫在前邊,先把數(shù)量-1,之后select出庫(kù)存如果>-1就commit,否則rollback。
update products set quantity = quantity-1 WHERE id=3;
select quantity from products WHERE id=3 for update;
update語(yǔ)句在更新的同時(shí)加上一個(gè)條件
quantity = select quantity from products WHERE id=3;
update products set quantity = ($quantity-1) WHERE id=3 and queantity = $quantity;
推薦閱讀
程序員內(nèi)推群!北京!上海!廣州!深圳!杭州!鄭州!武漢!南京!西安
評(píng)論
圖片
表情
