本發(fā)明涉及計算機及互聯(lián)網(wǎng)
技術領域:
:,尤其涉及一種短信實時發(fā)送方法和系統(tǒng)。
背景技術:
::隨著中國手機用戶的高速增長,手機短信已經(jīng)成為人們?nèi)粘P畔⒖爝f的重要方式。企業(yè)短信作為一種企業(yè)與客戶之間的通信方式,以其覆蓋面廣、快捷,無時空限制,低成本、精準營銷等眾多優(yōu)勢,已經(jīng)被廣泛應用于金融、快消、百貨、售后服務、快遞物流、教育、房地產(chǎn)、汽車、農(nóng)業(yè)、政府等眾多行業(yè),成為現(xiàn)代企業(yè)信息化重要組成部分。隨著企業(yè)短信規(guī)?;瘧?,傳統(tǒng)短信平臺單一信息收發(fā)功能,已經(jīng)不能完全滿足現(xiàn)代企業(yè)管理的需求,大批量即時短信的發(fā)送已成為短信平臺發(fā)展趨勢。目前短信發(fā)送接口通用的處理方式為:客戶的發(fā)送請求傳送到web服務器上;web服務器將發(fā)送請求,存儲到數(shù)據(jù)表中;轉(zhuǎn)發(fā)程序從數(shù)據(jù)表中取出待發(fā)的數(shù)據(jù),提交到短信發(fā)送平臺。但當需要大批量發(fā)送時,一臺web服務器無法處理請求,造成提交失敗或處理緩慢;且所有數(shù)據(jù)存儲在一個數(shù)據(jù)表中,容易造成數(shù)據(jù)處理緩慢,無法及時提交給短信發(fā)送平臺。而且,在進行批量短信發(fā)送時,通常是多個轉(zhuǎn)發(fā)程序同時運行,提取數(shù)據(jù)庫中的短信發(fā)送任務后提交到短信發(fā)送平臺。如轉(zhuǎn)發(fā)程序1提取數(shù)據(jù)庫中的100個短信發(fā)送任務,然后逐步將這100個短信發(fā)送任務提交到短信發(fā)送平臺,在短信發(fā)送成功后,再將發(fā)送任務的狀態(tài)更新為已發(fā)送。但由于提交和發(fā)送需要一定時間,在此期間就可能會有其它轉(zhuǎn)發(fā)程序也取出了這100個任務中的某個任務并進行了提交,即出現(xiàn)多個轉(zhuǎn)發(fā)程序提交了同一個短信發(fā)送任務的問題,從而導致同一條短信的重復發(fā)送。因此,需要提供一種新的能夠有效提高短信發(fā)送效率且防止短信重發(fā)的方案。技術實現(xiàn)要素:為此,本發(fā)明提供一種短信實時發(fā)送方法和系統(tǒng),以力圖解決或至少緩解上面存在的問題。根據(jù)本發(fā)明的一個方面,提供一種短信實時發(fā)送系統(tǒng),包括多個web服務器、多個任務存儲表、一個隨機數(shù)存儲表和多個轉(zhuǎn)發(fā)程序,每個轉(zhuǎn)發(fā)程序?qū)粋€任務存儲表,每個任務存儲表對應一個或多個轉(zhuǎn)發(fā)程序,各轉(zhuǎn)發(fā)程序均與短信發(fā)送平臺連接;web服務器包括:請求接收單元,適于接收客戶端提交的短信發(fā)送請求;以及任務存儲單元,適于將短信發(fā)送請求作為一個短信發(fā)送任務存儲到任務存儲表中,其中,短信發(fā)送任務包括目標號碼、短信內(nèi)容和狀態(tài)標識,狀態(tài)標識包括已發(fā)送標識、未發(fā)送標識和正在發(fā)送標識;轉(zhuǎn)發(fā)程序包括:隨機數(shù)生成單元,適于生成一個標識隨機數(shù)作為正在發(fā)送標識,并將該標識隨機數(shù)存儲到隨機數(shù)存儲表中;第一更新單元,適于從對應的任務存儲表中查詢第一數(shù)目個具有未發(fā)送標識的短信發(fā)送任務,并將查詢到的該些短信發(fā)送任務的狀態(tài)標識更新為標識隨機數(shù);任務提交單元,適于從任務存儲表中取出具有該標識隨機數(shù)的多個短信發(fā)送任務提交到短信發(fā)送平臺;以及第二更新單元,適于當短信發(fā)送任務提交和發(fā)送成功后,將該任務所對應的狀態(tài)標識更新為已發(fā)送標識??蛇x地,在根據(jù)本發(fā)明的方法中,隨機數(shù)生成單元適于根據(jù)以下方法生成標識隨機數(shù):按照預定算法生成一個第一隨機數(shù),并對該第一隨機數(shù)生成哈希索引,得到第二隨機數(shù);以及從右至左取出該第二隨機數(shù)的預定位數(shù),得到標識隨機數(shù)。可選地,在根據(jù)本發(fā)明的方法中,已發(fā)送標識為1,未發(fā)送標識為0;隨機數(shù)生成單元還適于當生成的標識隨機數(shù)為1時,重新生成標識隨機數(shù)。可選地,在根據(jù)本發(fā)明的方法中,隨機數(shù)生成單元還適于當生成的標識隨機數(shù)已存在于隨機數(shù)存儲表中時,重新生成標識隨機數(shù)??蛇x地,在根據(jù)本發(fā)明的方法中,隨機數(shù)生成單元還適于在當前的隨機數(shù)存儲表中所存儲的標識隨機數(shù)超過第二數(shù)目時,先清除該隨機數(shù)存儲表中的所有隨機數(shù)后再存儲所生成的標識隨機數(shù)??蛇x地,在根據(jù)本發(fā)明的方法中,還包括:負載均衡設備,適于根據(jù)預定的負載均衡算法將客戶端發(fā)送的短信發(fā)送請求分配給所述多個web服務器。可選地,在根據(jù)本發(fā)明的方法中,任務存儲表的數(shù)目為10,任務存儲單元適于根據(jù)短信發(fā)送任務的目標號碼的最后一位選擇對應的任務存儲表進行所述存儲;或者任務存儲表的數(shù)目為100,任務存儲單元適于根據(jù)短信發(fā)送任務的目標號碼的最后兩位選擇對應的任務存儲表進行所述存儲。可選地,在根據(jù)本發(fā)明的方法中,第一數(shù)目為100,預定位數(shù)為6,第二數(shù)目為1萬。根據(jù)本發(fā)明的另一個方面,提供一種短信實時發(fā)送方法,適于在短信實時發(fā)送系統(tǒng)中執(zhí)行,短信實時發(fā)送系統(tǒng)包括多個web服務器、多個任務存儲表、一個隨機數(shù)存儲表和多個轉(zhuǎn)發(fā)程序,每個轉(zhuǎn)發(fā)程序?qū)粋€任務存儲表,每個任務存儲表對應一個或多個轉(zhuǎn)發(fā)程序,各轉(zhuǎn)發(fā)程序均與短信發(fā)送平臺連接,該方法包括:web服務器接收客戶端提交的短信發(fā)送請求,并將短信發(fā)送請求作為一個短信發(fā)送任務存儲到任務存儲表中,其中,短信發(fā)送任務包括目標號碼、短信內(nèi)容和狀態(tài)標識,狀態(tài)標識包括已發(fā)送標識、未發(fā)送標識和正在發(fā)送標識;以及在各轉(zhuǎn)發(fā)程序中:生成一個標識隨機數(shù)作為正在發(fā)送標識,并將該標識隨機數(shù)存儲到隨機數(shù)存儲表中;從對應的任務存儲表中查詢第一數(shù)目個具有未發(fā)送標識的短信發(fā)送任務,并將查詢到的該些短信發(fā)送任務的狀態(tài)標識更新為標識隨機數(shù);從任務存儲表中取出具有該標識隨機數(shù)的多個短信發(fā)送任務提交到短信發(fā)送平臺;以及當短信發(fā)送任務提交和發(fā)送成功后,將該任務所對應的狀態(tài)標識更新為已發(fā)送標識。根據(jù)本發(fā)明的技術方案,首先將客戶端的短信發(fā)送請求經(jīng)過硬件負載均衡設備分配到多臺服務器,這多臺服務器將短信發(fā)送請求存儲到分布式架構(gòu)的數(shù)據(jù)庫中,且多臺服務器多個任務存儲表同時存儲數(shù)據(jù),以分擔數(shù)據(jù)處理壓力,確保大批量發(fā)送時的穩(wěn)定性和處理速度。之后,轉(zhuǎn)發(fā)程序從任務存儲表中取出待發(fā)的數(shù)據(jù),并提交到短信發(fā)送平臺進行發(fā)送。各轉(zhuǎn)發(fā)程序進行每次轉(zhuǎn)發(fā)前,先各自生成一個唯一的標識隨機數(shù),然后去任務存儲表中查詢待發(fā)的短信任務,一旦查詢到待發(fā)任務,就立即將該任務的狀態(tài)標識更新為該轉(zhuǎn)發(fā)程序所生成的標識隨機數(shù),然后再從任務存儲表中取出具有這些標識隨機數(shù)的待發(fā)任務進行提交。對任務的狀態(tài)標識進行更新的時間遠遠小于任務提交和發(fā)送所需的時間,因此在對狀態(tài)標識進行更新期間其他轉(zhuǎn)發(fā)程序?qū)υ撊蝿者M行操作的概率也會很低。并且在這個取出和轉(zhuǎn)發(fā)過程中,各轉(zhuǎn)發(fā)程序分別查找具有各自標識隨機數(shù)的待發(fā)任務,因此不會出現(xiàn)沖突,從而可以有效地避免當多個轉(zhuǎn)發(fā)程序同時運行并將發(fā)送任務提交給短信發(fā)送平臺時,由于提交和發(fā)送需要一定時間而出現(xiàn)在的此期間其它轉(zhuǎn)發(fā)程序也會取出同一批數(shù)據(jù)并進行發(fā)送的問題,從而避免短信的重復發(fā)送。而且,如本發(fā)明的
背景技術:
:所言,傳統(tǒng)的短信發(fā)送方是查詢到待發(fā)任務即取出該任務進行提交,這個過程中反而會出現(xiàn)待發(fā)任務的重復取出和提交而拖長數(shù)據(jù)處理事件,而本發(fā)明的轉(zhuǎn)發(fā)過程只添加了一步數(shù)據(jù)改寫更新操作,即在查詢到待發(fā)任務時,先將該任務的狀態(tài)標識更改為標識隨機數(shù),而這個改寫操作又通常來說非常地快,并不會耽誤數(shù)據(jù)處理進程,因此本發(fā)明也進一步地從整體上提高了短信實時發(fā)送的處理效率,保證了批量短信的快速發(fā)送。附圖說明為了實現(xiàn)上述以及相關目的,本文結(jié)合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護的主題的范圍內(nèi)。通過結(jié)合附圖閱讀下面的詳細描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標記通常指代相同的部件或元素。圖1示出了根據(jù)本發(fā)明一個實施例的短信實時發(fā)送系統(tǒng)100的結(jié)構(gòu)示意圖;圖2示出了根據(jù)本發(fā)明另一個實施例的短信實時發(fā)送系統(tǒng)100的結(jié)構(gòu)示意圖;圖3示出了根據(jù)本發(fā)明一個實施例的短信實時發(fā)送方法300的流程圖;圖4示出了根據(jù)本發(fā)明一個實施例的短信實時發(fā)送方法的完整流程圖;圖5示出了本發(fā)明一個實施例的轉(zhuǎn)發(fā)程序140運行界面的示意圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術人員。圖1示出了根據(jù)本發(fā)明一個實施例的短信實時發(fā)送系統(tǒng)100的示意圖。圖1所示的短信實時發(fā)送系統(tǒng)100包括多個web服務器110(如圖1中的web服務器1-m)、多個任務存儲表120(如圖1中的任務存儲表1-n)、一個隨機數(shù)存儲表130和多個轉(zhuǎn)發(fā)程序140(如圖1中的轉(zhuǎn)發(fā)程序1-p),其中,每個轉(zhuǎn)發(fā)程序140對應一個任務存儲表120,每個任務存儲表120對應一個或多個轉(zhuǎn)發(fā)程序140,各轉(zhuǎn)發(fā)程序140均與短信發(fā)送平臺連接。也就是說,不同的轉(zhuǎn)發(fā)程序有可能對應同一個任務存儲表。如轉(zhuǎn)發(fā)程序1對應任務存儲表1,轉(zhuǎn)發(fā)程序2也對應任務存儲表1中,轉(zhuǎn)發(fā)程序3對應任務存儲表2。應當指出,圖1中的短信實時發(fā)送系統(tǒng)100僅是示例性的,在具體的實踐情況中,系統(tǒng)100中可以有不同數(shù)量的web服務器、任務存儲表和轉(zhuǎn)發(fā)程序,本發(fā)明對系統(tǒng)100中所包括的設備的具體數(shù)目不做限制,這些設施也可以駐留在多個地理位置中。web服務器110主要負責接收客戶端的請求并進行存儲,其可以是一臺服務器,也可以是由若干臺服務器組成的服務器集群,或者是一個云計算服務中心。此外,用于組成服務器集群或云計算服務中心的多個服務器可以駐留在多個地理位置中,本發(fā)明對web服務器110的部署方式不做限制。任務存儲表120主要用來存儲web服務器所存儲短信發(fā)送請求,隨機數(shù)存儲表130主要用來存儲轉(zhuǎn)發(fā)程序生成的隨機數(shù)。任務存儲表120和隨機數(shù)存儲表130可以存儲在數(shù)據(jù)存儲裝置中,數(shù)據(jù)存儲裝置和多個web服務器110之間通信連接,數(shù)據(jù)存儲裝置可以是數(shù)據(jù)庫,其既可以作為本地數(shù)據(jù)庫駐留于web服務器110中,也可以作為遠程數(shù)據(jù)庫設置于web服務器110之外,本發(fā)明對數(shù)據(jù)存儲裝置的部署方式不做限制。其中,數(shù)據(jù)存儲裝置還可以是hadoop分布式文件系統(tǒng)。另外,應當理解,任務存儲表120有多個,其可以分布式的存儲在多個數(shù)據(jù)存儲裝置中,即每個數(shù)據(jù)存儲裝置可以分別存儲一個或多個任務存儲表120。而且,隨機數(shù)存儲表130可以存儲在某個任務存儲表120所在的數(shù)據(jù)存儲裝置中,也可以專門存儲在不同的數(shù)據(jù)存儲裝置中。轉(zhuǎn)發(fā)程序140也與數(shù)據(jù)存儲裝置之間通過網(wǎng)絡建立通信連接,主要負責數(shù)據(jù)庫中提取發(fā)送狀態(tài)為未發(fā)送的任務,并將其提交到短信發(fā)送平臺,以及將任務存儲表中該條發(fā)送任務的發(fā)送狀態(tài)更新為已發(fā)送。轉(zhuǎn)發(fā)程序140可以設置在服務器上,如轉(zhuǎn)發(fā)服務器上,一臺轉(zhuǎn)發(fā)服務器上可以根據(jù)需要設置一個或多個轉(zhuǎn)發(fā)程序140。轉(zhuǎn)發(fā)程序140基于松耦合設計,支持多個程序同時部署在不同的服務器,多個轉(zhuǎn)發(fā)程序同時運行分別從對應的任務存儲表中取待發(fā)送的任務,從而提高轉(zhuǎn)發(fā)程序的處理速度。每次所取的任務數(shù),都提前在轉(zhuǎn)發(fā)程序上做初始設置。圖4示出了根據(jù)本發(fā)明一個實施例的轉(zhuǎn)發(fā)程序140的運行界面的示意圖。圖2示出了根據(jù)本發(fā)明一個實施例的短信實時發(fā)送系統(tǒng)100中的web服務器110和轉(zhuǎn)發(fā)程序140的結(jié)構(gòu)示意圖。如圖2所示,web服務器110包括請求接收單元111和任務存儲單元112,轉(zhuǎn)發(fā)程序140包括隨機數(shù)生成單元141、第一更新單元142、任務提交單元143和第二更新單元。應當理解,圖2中只分別示例性的示出了一個web服務器110、任務存儲表120和轉(zhuǎn)發(fā)程序140,實際還有其他多個web服務器110、任務存儲表120和轉(zhuǎn)發(fā)程序140。請求接收單元111適于接收客戶端提交的短信發(fā)送請求。通常會有多個客戶端提交多個短信發(fā)送請求,短信發(fā)送請求包括要發(fā)送短信的目標號碼和短信內(nèi)容。根據(jù)一個實施例,系統(tǒng)100還可以負載均衡設備,其可以根據(jù)預定的負載均衡算法將客戶端發(fā)送的短信發(fā)送請求分配給這多個web服務器120。多臺web服務器120同時處理短信發(fā)送請求,確保大批量發(fā)送時的穩(wěn)定性和處理速度。任務存儲單元112適于將短信發(fā)送請求作為一個短信發(fā)送任務存儲到任務存儲表120中,其中,短信發(fā)送任務通常包括目標號碼、短信內(nèi)容和狀態(tài)標識。在現(xiàn)有技術中,狀態(tài)標識僅包括已發(fā)送標識和未發(fā)送標識,在本發(fā)明實施例中,狀態(tài)標識包括已發(fā)送標識、未發(fā)送標識和正在發(fā)送標識。通常,已發(fā)送標識可以設置為1,未發(fā)送標識設置為0;當然也可以根據(jù)需要設置為其他數(shù)值,本發(fā)明對此不作限制。正在發(fā)送標識設置為由轉(zhuǎn)發(fā)程序所生成的隨機數(shù)。這里可以采用分布式的數(shù)據(jù)庫架構(gòu),多臺web服務器110將批量的短信發(fā)送請求存分布式的存儲到多個任存儲表120中,以分擔數(shù)據(jù)處理壓力。另外,存儲數(shù)據(jù)時可以根據(jù)業(yè)務量和目標號碼的尾號來設計數(shù)據(jù)表的數(shù)量。例如:設置10張任務存儲表,這時任務存儲單元112可以根據(jù)短信發(fā)送任務的目標號碼的最后一位選擇對應的任務存儲表進行存儲。這樣的話,尾號為0的都存到第1張表中,尾號為1的都存到第2張表中,……,尾號為9的都存到第10張表中?;蛘?,當任務量大時可以設置100張任務存儲表,這時任務存儲單元112可以根據(jù)短信發(fā)送任務的目標號碼的最后兩位選擇對應的任務存儲表進行存儲。同理,尾號為00的都存到第1張表中,尾號為01存到第2張表,……,尾號為99的都存到第100張表中。進一步地,考慮尾號為4的或44的比較少,而尾號為6或8的比較多,因此可以統(tǒng)計最后一位或兩位尾號中各數(shù)值的分布概率值,并根據(jù)該概率值來對短信發(fā)送任務進行分布式存儲,以保證每張表中存儲的任務數(shù)目比較均勻。隨機數(shù)生成單元141適于生成一個標識隨機數(shù)作為正在發(fā)送標識,并將該標識隨機數(shù)存儲到隨機數(shù)存儲表中。這里,各轉(zhuǎn)發(fā)程序140在執(zhí)行每次轉(zhuǎn)發(fā)操作前,都會先生成一個唯一的標識隨機數(shù),并將這個標識隨機數(shù)存到隨機數(shù)存儲表中,然后根據(jù)這個標識隨機數(shù)來執(zhí)行轉(zhuǎn)發(fā)任務。當執(zhí)行下次轉(zhuǎn)發(fā)前,再重新一個新的標識隨機數(shù),這樣多個轉(zhuǎn)發(fā)程序就累計存儲了多個標識隨機數(shù)。根據(jù)一個實施例,隨機數(shù)生成單元141可以根據(jù)以下方法生成標識隨機數(shù):按照預定算法生成一個第一隨機數(shù),并對該第一隨機數(shù)生成哈希索引,得到第二隨機數(shù),這樣就將第一隨機數(shù)轉(zhuǎn)化為了數(shù)字。之后,從右至左取出該第二隨機數(shù)的預定位數(shù)以規(guī)范隨機數(shù)格式,如預定六位數(shù),就可得到所述標識隨機數(shù)。這里,預定算法可以采用現(xiàn)有任意的隨機數(shù)生成方法,本發(fā)明對此不作限制,如可以采用數(shù)據(jù)庫函數(shù)newid()來生成第一隨機數(shù)。同理,生成哈希索引算法也可以采用現(xiàn)有任意的哈希索引生成方法,本發(fā)明對此不作限制,如可以采用數(shù)據(jù)庫函數(shù)checksum來對第一隨機數(shù)生成哈希索引。生成的第一隨機數(shù)示例如下:6bcdb8b3-d032-4808-8f8b-2f1a9911797036832de7-6d6d-4493-8aca-223d70d69f1bd3c974ac-9f31-48ee-ba6a-6525d379ecbe生成的第二隨機數(shù)示例如下:-199848700250627070341728105對于所生成的標識隨機數(shù),需要對其進行檢驗,當隨機數(shù)生成單元141所生成的標識隨機數(shù)恰好為所設定的發(fā)送標識,即為1時,則需要重新生成新的標識隨機數(shù),即重新從生成第一隨機數(shù)開始生成新的標識隨機數(shù)。另外,還需要檢驗該標識隨機數(shù)的唯一性,即檢測其是否存在于當前的隨機數(shù)存儲表中,如果是,則同樣需要重新生成新的標識隨機數(shù)。另外,經(jīng)過多次轉(zhuǎn)發(fā)后隨機數(shù)存儲表中的隨機數(shù)數(shù)目可能過多,而為了防止隨機數(shù)存儲表過大,影響處理速度,需要對隨機數(shù)存儲表進行自維護管理。因此,隨機數(shù)生成單元141還適于在當前的隨機數(shù)存儲表130中所存儲的標識隨機數(shù)超過第二數(shù)目時,如1萬時,先清除該隨機數(shù)存儲表中的所有隨機數(shù)后再存儲所生成的標識隨機數(shù)。這里,清表可以使用數(shù)據(jù)函數(shù)truncatetable的命令來進行整表清除。當然,如果當前隨機數(shù)的數(shù)目尚未超過第二數(shù)目,則可以直接存儲該標識隨機數(shù)。第一更新單元142適于從對應的任務存儲表中查詢第一數(shù)目個具有未發(fā)送標識的短信發(fā)送任務,并將查詢到的該些短信發(fā)送任務的狀態(tài)標識更新為所述標識隨機數(shù)。也就是將未發(fā)送標識(即0)更新為正在發(fā)送標識,即標識隨機數(shù)。根據(jù)一個實施例,第一數(shù)目可以為100。通常,轉(zhuǎn)發(fā)程序140在提取短信發(fā)送任務時,提取狀態(tài)標識為未發(fā)送標識(即0)的短信發(fā)送任務,將其提交到短信發(fā)送平臺后,再將該任務的狀態(tài)標識更新為已發(fā)送標識(即1)。但因為提交過程比較耗時,且轉(zhuǎn)發(fā)過程中經(jīng)常會出現(xiàn)多個轉(zhuǎn)發(fā)程序?qū)粡埲蝿沾鎯Ρ?,因此可能會有別的轉(zhuǎn)發(fā)程序也同樣提取了該任務存儲表中某個狀態(tài)標識為0的短信發(fā)送任務,這樣就造成了該短信的重復提交和發(fā)送。因此,本發(fā)明中創(chuàng)造性地添加了正在發(fā)送標識這一標識,即每個轉(zhuǎn)發(fā)程序140所生成的唯一的標識隨機數(shù),當轉(zhuǎn)發(fā)程序140查詢到某個短信發(fā)送任務的狀態(tài)標識為0時,第一時間內(nèi)先將該任務的狀態(tài)標識由0更新為該標識隨機數(shù)(即正在發(fā)送標識),而數(shù)值改寫的速度又極快,這樣就有效地保證了不會再有別的程序查詢到該待發(fā)任務,也就自然不會再出現(xiàn)短信任務的重復提交和發(fā)送。任務提交單元143適于從任務存儲表120中取出具有該標識隨機數(shù)的多個短信發(fā)送任務提交到短信發(fā)送平臺。這里,各轉(zhuǎn)發(fā)程序各自生成有對應的標識隨機數(shù),因此在進行轉(zhuǎn)發(fā)時各程序各司其職,各自查找具有該程序的標識隨機數(shù)的任務,不會出現(xiàn)沖突。而且,相較于傳統(tǒng)的查詢-提取-提交過程,本發(fā)明的查詢-改寫-提取-提交過程,只增加了一步非??斓馗膶懖僮?,其并不會耽誤數(shù)據(jù)處理進程,反而因為這步改寫操作提高了后續(xù)數(shù)據(jù)提取和提交的速度,從而從整體上提高了數(shù)據(jù)處理效率,保證批量短信的快速發(fā)送。第二更新單元144適于當短信發(fā)送任務提交和發(fā)送成功后,將該任務所對應的狀態(tài)標識更新為已發(fā)送標識,即將標識隨機數(shù)更新為了1。這里,轉(zhuǎn)發(fā)程序140將短信發(fā)送任務提交到短信發(fā)送平臺,由該平臺執(zhí)行短信發(fā)送任務,當短信發(fā)送任務發(fā)送成功后,平臺將發(fā)送成功的結(jié)果反饋給轉(zhuǎn)發(fā)程序140,轉(zhuǎn)發(fā)程序140收到短信發(fā)送成功的反饋后再更新任務存儲表中的狀態(tài)標識。下表示出了一批待發(fā)數(shù)據(jù)示例,其中狀態(tài)標識為0的表示還未發(fā)送,狀態(tài)標識為1的表示已發(fā)送,狀態(tài)標識為6位數(shù)字的是更新后的標識隨機數(shù),其中856236是轉(zhuǎn)發(fā)程序1所生成的標識隨機數(shù),代表該任務將由轉(zhuǎn)發(fā)程序1轉(zhuǎn)發(fā);123356是轉(zhuǎn)發(fā)程序2所生成的標識隨機數(shù),代表該任務將由轉(zhuǎn)發(fā)程序2轉(zhuǎn)發(fā)。圖3示出了根據(jù)本發(fā)明一個實施例的短信實時發(fā)送方法300的流程圖。其適于在短信實時發(fā)送系統(tǒng)100中執(zhí)行,如圖3所示,該方法始于步驟s310。在步驟s310中,web服務器接收客戶端提交的短信發(fā)送請求,并將短信發(fā)送請求作為一個短信發(fā)送任務存儲到任務存儲表中,其中,短信發(fā)送任務包括目標號碼、短信內(nèi)容和狀態(tài)標識,狀態(tài)標識包括已發(fā)送標識、未發(fā)送標識和正在發(fā)送標識。其中,已發(fā)送標識可以為1,未發(fā)送標識可以為0。根據(jù)一個實施例,任務存儲表的數(shù)目為10,web服務器可以根據(jù)短信發(fā)送任務的目標號碼的最后一位選擇對應的任務存儲表進行所述存儲。根據(jù)另一個實施例,任務存儲表的數(shù)目為100,web服務器適于根據(jù)短信發(fā)送任務的目標號碼的最后兩位選擇對應的任務存儲表進行所述存儲。另外,在步驟s210之前,還可以包括步驟:負載均衡設備根據(jù)預定的負載均衡算法將客戶端發(fā)送的短信發(fā)送請求分配給多個web服務器。隨后,在步驟s320中,各轉(zhuǎn)發(fā)程序生成一個標識隨機數(shù)作為正在發(fā)送標識,并將該標識隨機數(shù)存儲到隨機數(shù)存儲表中。根據(jù)一個實施例,生成標識隨機數(shù)的步驟可以包括:按照預定算法生成一個第一隨機數(shù),并對該第一隨機數(shù)生成哈希索引,得到第二隨機數(shù);以及從右至左取出該第二隨機數(shù)的預定位數(shù),得到標識隨機數(shù)。根據(jù)另一個實施例,生成標識隨機數(shù)的步驟還包括:當生成的標識隨機數(shù)為1或已存在于隨機數(shù)存儲表中時,重新生成標識隨機數(shù)。此外,將標識隨機數(shù)存儲到隨機數(shù)存儲表的步驟可以包括:在當前的隨機數(shù)存儲表中所存儲的標識隨機數(shù)超過第二數(shù)目時,先清除該隨機數(shù)存儲表中的所有隨機數(shù)后再存儲所生成的標識隨機數(shù)。隨后,在步驟s330中,各轉(zhuǎn)發(fā)程序從對應的任務存儲表中查詢第一數(shù)目個具有未發(fā)送標識的短信發(fā)送任務,并將查詢到的該些短信發(fā)送任務的狀態(tài)標識更新為所述標識隨機數(shù)。隨后,在步驟s340中,各轉(zhuǎn)發(fā)程序從任務存儲表中取出具有該標識隨機數(shù)的多個短信發(fā)送任務提交到短信發(fā)送平臺;并在步驟s350中,當短信發(fā)送任務提交后,將該任務所對應的狀態(tài)標識更新為已發(fā)送標識。圖4示出了本發(fā)明的短信實時發(fā)送方法300的完整流程圖,關于方法300,其具體細節(jié)已在基于圖1和圖2的描述中詳細公開,在此不再進行贅述。根據(jù)本發(fā)明的技術方案,通過對標識隨機數(shù)采用的自維護的控制方式,保證了該隨機數(shù)的唯一性。轉(zhuǎn)發(fā)程序采用分布式部署,當多程序同時運行時,通過對標識隨機數(shù)存儲過程的控制,確保每個程序所取的待發(fā)數(shù)據(jù)的唯一性,避免不同的程序取到同一條發(fā)送任務,造成短信的重發(fā)。而且,本發(fā)明采用硬件負載均衡框架,各個處理環(huán)節(jié)均采用分布式部署,具備應付大容量、高密集業(yè)務沖擊的能力,能夠?qū)崟r、高效、穩(wěn)定地支持每小時千萬級別的短信發(fā)送量;關鍵模塊采用分布式部署的系統(tǒng)架構(gòu),具備應付大容量、高密集業(yè)務沖擊的能力;web服務器、數(shù)據(jù)庫存儲表以及轉(zhuǎn)發(fā)程序均可根據(jù)短信發(fā)送進行調(diào)整,易于擴展;系統(tǒng)內(nèi)數(shù)據(jù)量進行了分布式存儲,可確保數(shù)據(jù)處理速度,保證短信發(fā)送的時效性。綜上,本發(fā)明提高了接口的處理速度以及接口的穩(wěn)定性,同時提升數(shù)據(jù)的處理時間,減少數(shù)據(jù)處理環(huán)節(jié),確保及時提交到短信發(fā)送平臺。b11、如b9或b10所述的方法,其中,所述已發(fā)送標識為1,所述未發(fā)送標識為0,生成所述標識隨機數(shù)的步驟還包括:當生成的標識隨機數(shù)為1時,重新生成標識隨機數(shù)。b12、如b9或b10所述的方法,生成所述標識隨機數(shù)的步驟還包括:當生成的標識隨機數(shù)已存在于隨機數(shù)存儲表中時,重新生成標識隨機數(shù)。b13、如b9-b12中任一項所述的方法,將標識隨機數(shù)存儲到隨機數(shù)存儲表中的步驟包括:在當前的隨機數(shù)存儲表中所存儲的標識隨機數(shù)超過第二數(shù)目時,先清除該隨機數(shù)存儲表中的所有隨機數(shù)后再存儲所生成的標識隨機數(shù)。b14、如b9所述的方法,還包括步驟:負載均衡設備根據(jù)預定的負載均衡算法將客戶端發(fā)送的短信發(fā)送請求分配給所述多個web服務器。b15、如b9所述的方法,其中,所述任務存儲表的數(shù)目為10,所述web服務器適于根據(jù)短信發(fā)送任務的目標號碼的最后一位選擇對應的任務存儲表進行所述存儲;或者所述任務存儲表的數(shù)目為100,所述web服務器適于根據(jù)短信發(fā)送任務的目標號碼的最后兩位選擇對應的任務存儲表進行所述存儲。b16、如b9-b13中任一項所述的方法,其中,所述第一數(shù)目為100,所述預定位數(shù)為6,所述第二數(shù)目為1萬。在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下被實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。本領域那些技術人員應當理解在本文所公開的示例中的設備的模塊或單元或組件可以布置在如該實施例中所描述的設備中,或者可替換地可以定位在與該示例中的設備不同的一個或多個設備中。前述示例中的模塊可以組合為一個模塊或者此外可以分成多個子模塊。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。這里描述的各種技術可結(jié)合硬件或軟件,或者它們的組合一起實現(xiàn)。從而,本發(fā)明的方法和設備,或者本發(fā)明的方法和設備的某些方面或部分可采取嵌入有形媒介,例如軟盤、cd-rom、硬盤驅(qū)動器或者其它任意機器可讀的存儲介質(zhì)中的程序代碼(即指令)的形式,其中當程序被載入諸如計算機之類的機器,并被所述機器執(zhí)行時,所述機器變成實踐本發(fā)明的設備。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設備一般包括處理器、處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件),至少一個輸入裝置,和至少一個輸出裝置。其中,存儲器被配置用于存儲程序代碼;處理器被配置用于根據(jù)該存儲器中存儲的所述程序代碼中的指令,執(zhí)行本發(fā)明的在線客服系統(tǒng)的用戶請求分配方法。以示例而非限制的方式,計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息。通信介質(zhì)一般以諸如載波或其它傳輸機制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。以上的任一種的組合也包括在計算機可讀介質(zhì)的范圍之內(nèi)。此外,所述實施例中的一些在此被描述成可以由計算機系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實施的方法或方法元素的組合。因此,具有用于實施所述方法或方法元素的必要指令的處理器形成用于實施該方法或方法元素的裝置。此外,裝置實施例的在此所述的元素是如下裝置的例子:該裝置用于實施由為了實施該發(fā)明的目的的元素所執(zhí)行的功能。如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來描述普通對象僅僅表示涉及類似對象的不同實例,并且并不意圖暗示這樣被描述的對象必須具有時間上、空間上、排序方面或者以任意其它方式的給定順序。盡管根據(jù)有限數(shù)量的實施例描述了本發(fā)明,但是受益于上面的描述,本
技術領域:
:內(nèi)的技術人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設想其它實施例。此外,應當注意,本說明書中使用的語言主要是為了可讀性和教導的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權利要求書的范圍和精神的情況下,對于本
技術領域:
:的普通技術人員來說許多修改和變更都是顯而易見的。對于本發(fā)明的范圍,對本發(fā)明所做的公開是說明性的,而非限制性的,本發(fā)明的范圍由所附權利要求書限定。當前第1頁12當前第1頁12