一種基于md5和分布式緩存的大規(guī)模短信防重發(fā)方法
【專利摘要】本發(fā)明公開了一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,包括以下步驟:應(yīng)用MD5算法對(duì)預(yù)發(fā)送短信內(nèi)容進(jìn)行哈希運(yùn)算,得到一個(gè)唯一的內(nèi)容標(biāo)識(shí);將內(nèi)容標(biāo)識(shí)與接收號(hào)碼再次進(jìn)行MD5運(yùn)算,得到一個(gè)內(nèi)容與接收號(hào)碼的唯一標(biāo)識(shí);在內(nèi)存中查找唯一標(biāo)識(shí);若找到該唯一標(biāo)識(shí),則代表此短信已被發(fā)送,無需后續(xù)處理;若沒有找到,則將唯一標(biāo)識(shí)存放到內(nèi)存中,并發(fā)送短信。本發(fā)明對(duì)短信內(nèi)容和號(hào)碼進(jìn)行哈希運(yùn)算,得到一個(gè)唯一的十六進(jìn)制數(shù)字串,使用此數(shù)字串進(jìn)行重復(fù)判斷,能夠極大地減少內(nèi)存占用。同時(shí)利用了分布式緩存技術(shù),在單機(jī)內(nèi)存不夠的時(shí)候,能夠方便地?cái)U(kuò)展到多臺(tái)機(jī)器,因此能夠從容地應(yīng)對(duì)大規(guī)模短信的處理。
【專利說明】一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于移動(dòng)通信領(lǐng)域,具體涉及一種基于MD5和分布式緩存的大規(guī)模短信防 重發(fā)方法。
【背景技術(shù)】
[0002] 在短信的發(fā)送過程中,由于系統(tǒng)、網(wǎng)絡(luò)、并發(fā)、人為(無心或惡意)等原因,很容易造 成短信的重復(fù)發(fā)送,給接收人帶來很大的困擾。
[0003] 現(xiàn)有的技術(shù)一般是通過對(duì)短信內(nèi)容和接收號(hào)碼進(jìn)行重復(fù)判斷,同時(shí)將發(fā)送過的內(nèi) 容和號(hào)碼存放到內(nèi)存或數(shù)據(jù)庫(kù)中。如果存放于內(nèi)存,那么在大規(guī)模的短信下,內(nèi)存很快會(huì)被 占滿,而一臺(tái)機(jī)器的內(nèi)存總是有限的,到達(dá)一定量后將無法擴(kuò)展。如果存放于數(shù)據(jù)庫(kù),則性 能低下,無法滿足短信的時(shí)效性。同時(shí)為了避免因并發(fā)造成判斷錯(cuò)誤等問題,一般只能在一 臺(tái)機(jī)器上進(jìn)行判斷,當(dāng)短信規(guī)模超過一定量后,單機(jī)的處理性能將無法滿足系統(tǒng)的需要。
【發(fā)明內(nèi)容】
[0004] 為解決上述技術(shù)問題,本發(fā)明的目的是提供一種基于MD5和分布式緩存的大規(guī)模 短信防重發(fā)方法。
[0005] 本發(fā)明采用的技術(shù)方案是: 一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特征在于包括以下步驟: A、 應(yīng)用MD5算法對(duì)預(yù)發(fā)送短信內(nèi)容進(jìn)行哈希運(yùn)算,得到一個(gè)唯一的內(nèi)容標(biāo)識(shí): contentHash = md5(content);其中,content 表不短信內(nèi)容; B、 將內(nèi)容標(biāo)識(shí)與接收號(hào)碼再次進(jìn)行MD5運(yùn)算,得到一個(gè)內(nèi)容與接收號(hào)碼的唯一標(biāo)識(shí): uniqueHash = md5 (contentHash+receiver);其中,receiver 表不接收號(hào)石馬; C、 在內(nèi)存中查找唯一標(biāo)識(shí); D、 若找到該唯一標(biāo)識(shí),則代表此短信已被發(fā)送,無需后續(xù)處理; E、 若沒有找到,則將唯一標(biāo)識(shí)存放到內(nèi)存中,并發(fā)送短信。
[0006] 作為本技術(shù)方案的進(jìn)一步改進(jìn),所述內(nèi)存擴(kuò)展有分布式緩存,所述步驟C中查找 唯一標(biāo)識(shí)與E中存放唯一標(biāo)識(shí)均在緩存中。
[0007] 其中,所述分布式緩存為Redis或者Ehcache存儲(chǔ)系統(tǒng)。
[0008] 所述哈希運(yùn)算和查找唯一標(biāo)識(shí)通過短信重復(fù)判斷模塊實(shí)現(xiàn)。
[0009] 所述內(nèi)容標(biāo)識(shí)與唯一標(biāo)識(shí)為十六進(jìn)制的數(shù)字串。
[0010] 所述數(shù)字串為32位。
[0011] 本發(fā)明的有益效果: 本發(fā)明主要利用了 MD5算法(消息摘要算法),對(duì)短信內(nèi)容和號(hào)碼進(jìn)行哈希運(yùn)算,得到一 個(gè)唯一的32位的十六進(jìn)制數(shù)字,使用此數(shù)字串進(jìn)行重復(fù)判斷,能夠極大地減少內(nèi)存占用。 同時(shí)利用了分布式緩存技術(shù),在單機(jī)內(nèi)存不夠的時(shí)候,能夠方便地?cái)U(kuò)展到多臺(tái)機(jī)器,因此能 夠從容地應(yīng)對(duì)大規(guī)模短信的處理。
【專利附圖】
【附圖說明】
[0012] 下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】做進(jìn)一步的說明。
[0013] 圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)框圖; 圖2是本發(fā)明的基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法的流程圖。
【具體實(shí)施方式】
[0014] 參考圖1所示,為本發(fā)明的系統(tǒng)由兩個(gè)部分組成,即短信重復(fù)判斷模塊和分布式 緩存模塊。其中短信重復(fù)判斷模塊負(fù)責(zé)對(duì)內(nèi)容和號(hào)碼進(jìn)行MD5計(jì)算,并通過緩存判斷短信 是否已被發(fā)送,而分布式緩存模塊則負(fù)責(zé)記錄已發(fā)送短信。
[0015] 短信重復(fù)判斷模塊和分布式緩存模塊都可以根據(jù)系統(tǒng)需要進(jìn)行擴(kuò)展,數(shù)量可以是 N個(gè),因此能夠應(yīng)對(duì)大規(guī)模的短信的需要。
[0016] 基于上述MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,包括以下步驟:如圖2 A、 短信重復(fù)判斷模塊應(yīng)用MD5算法對(duì)預(yù)發(fā)送短信內(nèi)容進(jìn)行哈希運(yùn)算,得到一個(gè)唯一的 十六進(jìn)制的數(shù)字串內(nèi)容標(biāo)識(shí):contentHash = md5(content);其中,content表示短信內(nèi) 容; B、 短信重復(fù)判斷模塊將內(nèi)容標(biāo)識(shí)與接收號(hào)碼再次進(jìn)行MD5運(yùn)算,得到一個(gè)內(nèi)容與接收 號(hào)碼的十六進(jìn)制的數(shù)字串唯一標(biāo)識(shí):uniqueHash = md5 (contentHash+receiver);其中, receiver表示接收號(hào)碼; C、 在緩存中查找唯一標(biāo)識(shí); D、 若找到該唯一標(biāo)識(shí),則代表此短信已被發(fā)送,無需后續(xù)處理; E、 若沒有找到,則將唯一標(biāo)識(shí)存放到緩存中,并發(fā)送短信。
[0017] 其中,所述分布式緩存為Redis或者Ehcache存儲(chǔ)系統(tǒng)。
[0018] MD5算法又叫哈希算法,其作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰 前被"壓縮"成一種保密的格式(就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的十六進(jìn)制 數(shù)字串)。
[0019] 如上所述,本發(fā)明主要利用了 MD5算法(消息摘要算法),對(duì)短信內(nèi)容和號(hào)碼進(jìn)行哈 希運(yùn)算,得到一個(gè)唯一的32位的十六進(jìn)制數(shù)字,使用此數(shù)字串進(jìn)行重復(fù)判斷,能夠極大地 減少內(nèi)存占用。同時(shí)利用了分布式緩存技術(shù),在單機(jī)內(nèi)存不夠的時(shí)候,能夠方便地?cái)U(kuò)展到多 臺(tái)機(jī)器,因此能夠從容地應(yīng)對(duì)大規(guī)模短信的處理。
[0020] 以上所述僅為本發(fā)明的優(yōu)先實(shí)施方式,本發(fā)明并不限定于上述實(shí)施方式,只要以 基本相同手段實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案都屬于本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特征在于包括以下步驟: A、 應(yīng)用MD5算法對(duì)預(yù)發(fā)送短信內(nèi)容進(jìn)行哈希運(yùn)算,得到一個(gè)唯一的內(nèi)容標(biāo)識(shí): contentHash = md5(content);其中,content 表不短信內(nèi)容; B、 將內(nèi)容標(biāo)識(shí)與接收號(hào)碼再次進(jìn)行MD5運(yùn)算,得到一個(gè)內(nèi)容與接收號(hào)碼的唯一標(biāo)識(shí): uniqueHash = md5 (contentHash+receiver);其中,receiver 表不接收號(hào)石馬; C、 在內(nèi)存中查找唯一標(biāo)識(shí); D、 若找到該唯一標(biāo)識(shí),則代表此短信已被發(fā)送,無需后續(xù)處理; E、 若沒有找到,則將唯一標(biāo)識(shí)存放到內(nèi)存中,并發(fā)送短信。
2. 根據(jù)權(quán)利要求1所述的一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特 征在于:所述內(nèi)存擴(kuò)展有分布式緩存,所述步驟C中查找唯一標(biāo)識(shí)與E中存放唯一標(biāo)識(shí)均 在緩存中。
3. 根據(jù)權(quán)利要求2所述的一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特 征在于:所述分布式緩存為Redis或者Ehcache存儲(chǔ)系統(tǒng)。
4. 根據(jù)權(quán)利要求2所述的一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特 征在于:所述哈希運(yùn)算和查找唯一標(biāo)識(shí)通過短信重復(fù)判斷模塊實(shí)現(xiàn)。
5. 根據(jù)權(quán)利要求1所述的一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特 征在于:所述內(nèi)容標(biāo)識(shí)與唯一標(biāo)識(shí)為十六進(jìn)制的數(shù)字串。
6. 根據(jù)權(quán)利要求5所述的一種基于MD5和分布式緩存的大規(guī)模短信防重發(fā)方法,其特 征在于:所述數(shù)字串為32位。
【文檔編號(hào)】H04W4/14GK104113830SQ201410367794
【公開日】2014年10月22日 申請(qǐng)日期:2014年7月29日 優(yōu)先權(quán)日:2014年7月29日
【發(fā)明者】余敬龍 申請(qǐng)人:廣東能龍教育股份有限公司