成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員經典面試題:如何實現一個海量計數系統

數據庫 MySQL 新聞
我們在開發中,經常有一些計數相關的工作。例如,抖音上的短視頻,有評論數,播放數。發送微博的時候,也有轉發數,評論數,點贊數,電商網站上,有著商品售賣金額,商品的出售件數等統計。那么,這些統計是怎么做到的呢?

 我們在開發中,經常有一些計數相關的工作。例如,抖音上的短視頻,有評論數,播放數。發送微博的時候,也有轉發數,評論數,點贊數,電商網站上,有著商品售賣金額,商品的出售件數等統計。那么,這些統計是怎么做到的呢?

 

[[316970]]

 

不難想到,我們可以在用戶查看這條評論的時候,去統計總共有多少個贊。舉個例子,你在虎撲上發表一條評論,每當有人點贊的時候,都會在評論下面增加一條點贊記錄,記錄誰誰誰點贊了。當有人訪問這條評論的時候,我們可以使用Mysql的SelectCount語句,對其進行統計,查詢總共有多少條記錄,并且返回給前段。這種方案有什么問題呢?當數據量小的時候,我們總可以非常迅速地計算到結果。但是隨著數據量的增大,例如一條非常火的評論,可能已經有數十萬個贊了,每次都去查詢效率都比較低。評論的內容是核心數據,評論的點贊數是次要數據,如果查詢點贊數量的耗時過長,反而會影響主要業務。我們要做的,是盡量地少去查詢,或者讓查詢的速度更快。

 

在此之前的方案,我們每次都是全量Count一遍,那么,我們能不能把這個數據存起來呢?這樣子,就不需要每次有人來查詢的時候,都去統計。每次有變更的時候,就去數據庫里面進行selectCount,查詢后將結果保存下來。之后每次有人訪問這條評論,我們就直接返回,而不需要進行SelectCount。當然,每次都去SelectCount也是一個笨方法,我們為什么不每次有人點贊就+1,有人取消點贊就減一呢。我們將點贊數據的電話分為兩種事件,一種是+1,另一種是-1。當然,這種做法的潛在風險點就是并發問題,例如原來的數據是5,突然來了兩個+1的請求,由于他們并發執行了,最終的結果變成6。這種情況下我們需要加鎖防止并發,或者讓數據庫幫我們實現。

僅是這樣是遠遠不夠的,我們如何面對突發的流量呢?例如突然爆發了一個熱點事件,突然火了一條評論,可能10分鐘之內就已經幾萬個點贊了。假如我們每次都去數據庫更新,那勢必效率會大大降低。為了應對這種突發性的流量,業內的解決方案大家其實都非常熟悉,不就采用消息隊列進行削峰嘛。但是,這種突發性的流量容易造成MQ堆積,那么有沒有什么好的方法呢?其實非常簡單,本來我們要進行10次+1的操作,為什么我們不合并成1次+10操作呢。這樣就能大大減少數據庫的壓力,我們一般有兩場常見的實現方式,一種是對異步隊列進行任務合并,另外一種是我們可以將計數存在緩存上,定期將數據刷到數據庫中。

 

我們更多采用的是第二種方法,并且我們還會進一步優化,就是我們會將點贊的統計存放在Redis這種的緩存中間件上,然后再定期刷到磁盤上。對于這樣的統計數據,冷熱是非常明顯的,基本上,采用采用這種方案,已經可以適用大部分計數系統了。歡迎大家關注我,共同學習,共同進步。大家的支持是我繼續嘮嗑的動力。

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-04-08 10:18:56

MySQL數據庫SQL

2019-09-20 14:25:21

程序員Google人生第一份工作

2012-05-25 10:15:06

Java程序員面試題

2020-04-26 09:48:11

MySQL數據庫架構

2020-02-06 08:58:09

程序員技術數據庫

2020-05-06 15:02:58

MySQL數據庫技術

2019-10-18 09:40:19

程序員固態硬盤Linux

2020-02-07 10:14:07

程序員設計人生第一份工作

2020-04-12 22:29:50

程序員MySQL數據

2020-03-18 09:33:47

數據庫程序員數組

2020-02-22 21:51:43

程序員Microsoft SServerSQL

2020-10-05 21:13:37

程序員技能開發者

2017-02-05 10:21:10

程序員好問題

2009-03-18 13:12:36

程序員技術IT行業

2015-05-13 14:06:03

程序員糟糕的程序員

2011-07-18 15:08:19

SQL存儲過程

2014-07-28 14:00:40

linux面試題

2016-05-05 17:45:43

Spring面試題答案

2014-01-06 09:33:32

程序員管理

2021-07-01 07:43:41

項目程序員代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91国产视频在线观看 | 国产精品精品视频一区二区三区 | 国产特级毛片aaaaaa喷潮 | av色噜噜| 日韩中文字幕免费在线观看 | 精品一区二区三区在线播放 | 精品国产18久久久久久二百 | 午夜寂寞影院列表 | 中文字幕久久精品 | 中文字幕视频三区 | 91久久久www播放日本观看 | 99精品视频免费观看 | 91精品国产91久久久久久吃药 | 日韩久久久久 | 国产亚洲欧美在线 | 国产日韩视频 | 综合色站导航 | 成人久久久久久久久 | 一区二区不卡高清 | 欧美一区二区三区久久精品 | 操操操日日日 | 国产91在线播放 | 久久久精品一区 | 免费看的av | 国产精品一区二区在线 | 一区二区av| 国产一区二区三区四区五区加勒比 | 黄色免费av| 欧美成视频 | 国产在线网站 | 粉嫩高清一区二区三区 | av国产精品 | 成人免费观看男女羞羞视频 | 久久久99精品免费观看 | 精品久久久久国产 | 欧美精品在欧美一区二区少妇 | 日韩视频在线免费观看 | 亚洲精品欧美 | 涩色视频在线观看 | 亚州精品天堂中文字幕 | 先锋资源站 |