大話程式猿眼裡的高併發

2022-07-28 01:21:12 字數 1966 閱讀 5619

高併發是指在同乙個時間點,有很多使用者同時的訪問url位址,比如:**的雙11,雙12,就會產生高併發,如貼吧的爆吧,就是惡意的高併發請求,也就是ddos攻擊,再屌絲點的說法就像玩擼啊擼被adc暴擊了一樣,那傷害你懂得(如果你看懂了,這個說法說明是正在奔向人生巔峰的屌絲。

使用者角度:

我的經歷:

在做公司產品**的過程中,經常會有這樣的需求,比如什麼搞個活動專題,**,簽到,搞個積分競拍等等,如果沒有考慮到高併發下的資料處理,那就game over了,很容易導致**被多抽走,簽到會發現乙個使用者有多條記錄,簽到一次獲得了獲得了多積分,等等,各種超出正常邏輯的現象,這就是做產品**必須考慮的問題,因為這些都是面向大量使用者的,而不是像做erp管理系統,oa系統那樣,只是面向員工。

通過表設計,如:記錄表新增唯一約束,資料處理邏輯使用事物防止併發下的資料錯亂問題

通過服務端鎖程序防止包併發下的資料錯亂問題

這裡主要講述的是在併發請求下的資料邏輯處理的介面,如何保證資料的一致性和完整性,這裡的併發可能是大量使用者發起的,也可能攻擊者通過併發工具發起的併發請求

如例子:通過表設計防止併發導致資料錯亂

如例子2(事務+通過更新鎖 防止併發導致資料錯亂 或者事物+update的鎖表機制)

已知表:

使用者表,包含積分字段 獎品表,包含獎品剩餘數量字段

高併發意淫分析(屬於開發前的猜測):

在高併發的情況下,會導致使用者參與**的時候積分被扣除,而獎品實際上已經被抽完了

我的設計:

在事物裡,通過with (updlock) 鎖住商品表,或者update 表的獎品剩餘數量和最後編輯時間字段,來把資料行鎖住,然後進行使用者積分的消耗,都完成後提交事物,失敗就回滾。 這樣就可以保證,只有可能存在乙個操作在操作這件商品的數量,只有等到這個操作事物提交後,其他的操作這個商品行的事物才會繼續執行。

如例子3(通過程式**防止包併發下的資料錯亂問題)

問題點:

這介面是給前端ajax使用,訪問量會很大,一頁面展示的時候就會有幾十件商品的展示,滾動條滾到到頁面顯示商品的時候就會請求介面進行展示資料的統計,每次翻頁又會載入幾十件

解決問題:

我們通過nodejs寫了乙個資料處理介面,把統計資料先存到redis的list裡。(使用nodejs寫介面的好處是,nodejs使用單執行緒非同步事件機制,高併發處理能力強,不會因為資料邏輯處理問題導致伺服器資源被占用而導致伺服器宕機) 然後再使用nodejs寫了乙個指令碼,指令碼功能就是從redis裡出列資料儲存到mysql資料庫中。這個指令碼會一直執行,當redis沒有資料需要同步到資料庫中的時候,sleep,讓在進行資料同步操作

以下我所知道的:

伺服器**nginx,做伺服器的均衡負載,把壓力均衡到多台伺服器

部署集群 mysql資料庫, redis伺服器,或者mongodb伺服器,把一些常用的查詢資料,並且不會經常的變化的資料儲存到其他nosql db伺服器中,來減少資料庫伺服器的壓力,加快資料的響應速度。

資料快取,cache

在高併發介面的設計中可以使用具有高併發能力的程式語言去開發,如:nodejs 做web介面

伺服器部署,伺服器分離,靜態檔案走cdn

dba資料庫的優化查詢條件,索引優化

訊息儲存機制,將資料新增到資訊佇列中(redis list),然後再寫工具去入庫

指令碼合理控制請求,如,防止使用者重複點選導致的ajax多餘的請求,等等。

apache jmeter

visual studio 效能負載

大話程式猿眼裡的高併發

將不進行維護,轉站到我的個人博文 位址 大話程式猿眼裡的高併發 簡單理解下高併發 高併發是指在同乙個時間點,有很多使用者同時的訪問url位址,比如 的雙11,雙12,就會產生高併發,如貼吧的爆吧,就是惡意的高併發請求,也就是ddos攻擊,再屌絲點的說法就像玩擼啊擼被adc暴擊了一樣,那傷害你懂得 如...

大話程式猿眼裡的高併發(上)

高併發是指在同乙個時間點,有很多使用者同時的訪問url位址,比如 的雙11,雙12,就會產生高併發,如貼吧的爆吧,就是惡意的高併發請求,也就是ddos攻擊,再屌絲點的說法就像玩擼啊擼被adc暴擊了一樣,那傷害你懂得 如果你看懂了,這個說法說明是正在奔向人生巔峰的屌絲。高併發會來帶的後果 導致站點伺服...

程式猿眼裡的專案經理

十月份的目標面談中,我的領導問我,你覺得專案經理應該具備什麼樣的素質和技能,是乙個怎樣的人。本來只是乙個破冰的提問,沒有想到這個簡單的開放式的問題便把我這個pmper給問倒了。於是帶著這個問題,我翻開了書架上積滿灰塵的pmbok。在pmbok中給出的官方的定義如下 在pmbok第六版中,使用了專門乙...