鷹潭做網(wǎng)站自己怎么做網(wǎng)站優(yōu)化
高并發(fā)冪等計(jì)數(shù)器【面試真題】
- 前言
- 版權(quán)
- 推薦
- 高并發(fā)冪等計(jì)數(shù)器
- 題目
- 初想
- 最后
前言
2023-8-30 12:07:45
公開發(fā)布于
2024-5-22 00:09:47
以下內(nèi)容源自《【面試真題】》
僅供學(xué)習(xí)交流使用
版權(quán)
禁止其他平臺(tái)發(fā)布時(shí)刪除以下此話
本文首次發(fā)布于CSDN平臺(tái)
作者是CSDN@日星月云
博客主頁是https://blog.csdn.net/qq_51625007
禁止其他平臺(tái)發(fā)布時(shí)刪除以上此話
推薦
深入理解冪等性
https://zhuanlan.zhihu.com/p/432631103
https://blog.csdn.net/qq_44866828/article/details/132579831
高并發(fā)冪等計(jì)數(shù)器
題目
問題描述:
1.實(shí)現(xiàn)一個(gè)計(jì)數(shù)器服務(wù)
2.服務(wù)接收外部的 inc 請(qǐng)求,每個(gè)請(qǐng)求具有全局唯一 request id 和視頻 id
3.因?yàn)榫W(wǎng)絡(luò)和重試的原因,請(qǐng)求可能會(huì)重復(fù)的到達(dá)
4.時(shí)序上,多個(gè)重復(fù)的請(qǐng)求可能并發(fā)達(dá)到,兩次重復(fù)請(qǐng)求之間的間隔不可預(yù)期
5.需要保證 at least once ,計(jì)數(shù)值不能丟失
6.可以依賴一些外部組件, mysql redis
初想
redis實(shí)現(xiàn)鍵是視頻id 值set存儲(chǔ)request id(UUID)
鍵是視頻id 值是計(jì)數(shù)器可以使用redis事務(wù),lua腳本
先查set存不存在request id,不存在計(jì)數(shù)器就自增;存在,不改變mysql實(shí)現(xiàn)數(shù)據(jù)表存儲(chǔ)視頻,和點(diǎn)贊數(shù)
mysql事務(wù)開啟一個(gè)事務(wù)。檢查MySQL表中是否存在對(duì)應(yīng)視頻ID的記錄,如果存在則取出計(jì)數(shù)值。如果計(jì)數(shù)值為空,則插入一條新記錄,并將計(jì)數(shù)值設(shè)置為1。如果計(jì)數(shù)值不為空,則更新該記錄的計(jì)數(shù)值加1。提交事務(wù)。使用事務(wù)和唯一索引來保證計(jì)數(shù)值的一致性和冪等性。redis+mysql實(shí)現(xiàn)
redis做緩存,mysql做存儲(chǔ)
一致性用延遲雙刪實(shí)現(xiàn)異步處理
redis分布式鎖來保證操作的執(zhí)行
mysql存儲(chǔ)計(jì)數(shù)值
RocketMQ保證他們之間的數(shù)據(jù)一致
最后
我們都有光明的未來
祝大家考研上岸
祝大家工作順利
祝大家得償所愿
祝大家如愿以償
點(diǎn)贊收藏關(guān)注哦