在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/人工智能  數(shù)據(jù)庫(kù)/ 高效的優(yōu)惠券(發(fā)送和使用)技術(shù)選型和方案

高效的優(yōu)惠券(發(fā)送和使用)技術(shù)選型和方案

問(wèn)題描述

最近要做高速率的發(fā)放優(yōu)惠券系統(tǒng),現(xiàn)在數(shù)據(jù)庫(kù)用的mysql,有分庫(kù)分表,但對(duì)發(fā)送速率有瓶頸,而且對(duì)于批量操作比較復(fù)雜(按照用戶ID取模做的分庫(kù)分表,對(duì)批量用戶,也就是無(wú)規(guī)則的userId的處理比較麻煩)。想用redis或mongodb來(lái)做db,然后worker同步到mysql(mysql只做最后保障和數(shù)據(jù)分析用,業(yè)務(wù)中不使用)。對(duì)于mogno不太熟悉,請(qǐng)問(wèn)有什么好的解決方案?

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

考慮過(guò)直接使用redis,使用List結(jié)構(gòu),存儲(chǔ)每個(gè)用戶的優(yōu)惠券列表,key為XXX_{userId}。有些不好解決的問(wèn)題,例如使用優(yōu)惠券時(shí)的更新操作,還有定期刪除一段時(shí)間的過(guò)期數(shù)據(jù),等等。

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

請(qǐng)問(wèn)有沒(méi)有成熟的設(shè)計(jì)方案,可以處理大量的高速的發(fā)券(插入)操作,并且對(duì)于用戶查看/使用優(yōu)惠券等場(chǎng)景的并發(fā)處理和響應(yīng)速率有高性能的支持。

回答
編輯回答
葬憶

看了一遍下來(lái)我覺(jué)得你要解決的似乎就2個(gè)問(wèn)題:

  1. 較高的插入性能
  2. 方便地更新和刪除

從MongoDB的角度來(lái)講滿足這2點(diǎn)沒(méi)有什么問(wèn)題。

  1. MongoDB的分片機(jī)制可以讓數(shù)據(jù)在邏輯上是一個(gè)整體,在物理上分散到不同的服務(wù)器。比起分庫(kù)分表是一個(gè)更簡(jiǎn)單易用的解決方案。
  2. 性能上給個(gè)簡(jiǎn)單參考:在我的Macbook Pro (SSD磁盤)上一個(gè)沒(méi)有任何優(yōu)化的實(shí)例插入小文檔(100字節(jié)左右),應(yīng)用BULK操作大約能有10w+/s的插入速度。如果有必要還可以通過(guò)分片加服務(wù)器來(lái)擴(kuò)展。
  3. 不清楚你要進(jìn)行什么樣的更新,但是通常情況下MongoDB可以根據(jù)指定的條件更新指定的文檔,并且可以命中二級(jí)索引,大部分場(chǎng)景下是適用的。至于刪除數(shù)據(jù),MongoDB有TTL Index可以自動(dòng)根據(jù)時(shí)間刪除過(guò)期的數(shù)據(jù)。

不知道有沒(méi)有解答到你的疑問(wèn)。如果有更詳細(xì)的需求可以再描述一下。

2017年9月28日 18:15