本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種分布式訂單處理方法、裝置及訂單處理系統(tǒng)。
背景技術(shù):
近年來電子商務(wù)在我國蓬勃發(fā)展,人們越來越習(xí)慣于網(wǎng)上購物。對此各商家分別推出了網(wǎng)上交易平臺,然而隨著訂單交易量的增加,服務(wù)器資源逐步吃緊,訂單處理響應(yīng)速度越來越慢,更是在各種促銷活動期間,異常百出,進(jìn)而極大程度地影響了交易銷量并同時還帶給了客戶對系統(tǒng)安全問題的顧慮。然而為了更好的提供服務(wù),商家不得不隨著訂單量的增加逐步提升服務(wù)器資源配置,當(dāng)單臺服務(wù)器達(dá)到瓶頸,多數(shù)商家則會考慮使用負(fù)載均衡,應(yīng)對高并發(fā)的情況。但是,單純依靠增加服務(wù)器配置的方式不僅使服務(wù)器資源成本呈指數(shù)增長,且終將面臨資源瓶頸,而站點(diǎn)的負(fù)載均衡方案又需要面臨數(shù)據(jù)安全與并發(fā)鎖的處理問題。而對于復(fù)雜的設(shè)計方案或者不小心設(shè)計過剩,不僅技術(shù)門檻較高、維護(hù)成本高,且開發(fā)與維護(hù)周期都將對平臺的運(yùn)營規(guī)劃產(chǎn)生副作用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種分布式訂單處理方法、裝置及訂單處理系統(tǒng),旨在改善上述問題。
第一方面,本發(fā)明提供的一種分布式訂單處理方法,應(yīng)用于訂單處理系統(tǒng),所述系統(tǒng)包括第一服務(wù)器和多個第二服務(wù)器,所述方法包括:所述第一服務(wù)器獲取訂單信息;所述第一服務(wù)器將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器,以使所述第二服務(wù)器處理所述訂單信息。
第二方面,本發(fā)明提供的一種分布式訂單處理裝置,所述裝置應(yīng)用于訂單處理系統(tǒng),所述系統(tǒng)包括第一服務(wù)器和多個第二服務(wù)器,所述裝置包括:數(shù)據(jù)獲取模塊,用于第一服務(wù)器獲取訂單信息;數(shù)據(jù)處理模塊,用于所述第一服務(wù)器將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器,以使所述第二服務(wù)器處理所述訂單信息。
第三方面,本發(fā)明提供的一種訂單處理系統(tǒng),包括第一服務(wù)器和第二服務(wù)器,所述第一服務(wù)器與所述第二服務(wù)器耦合,所述第一服務(wù)器用于獲取訂單信息,所述第一服務(wù)器還用于將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器,所述第二服務(wù)器用于處理所述訂單信息。
上述本發(fā)明提供的一種分布式訂單處理方法、裝置及訂單處理系統(tǒng),該方法通過第一服務(wù)器獲取客戶端發(fā)送的訂單信息,將所述訂單信息發(fā)送到多個第二服務(wù)器中的任意一個第二服務(wù)器,從而使得第二服務(wù)器所處理的訂單信息的數(shù)量位于該第二服務(wù)器所能處理的范圍內(nèi),進(jìn)而使得訂單處理過程更加友好、快速以及安全。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1為本發(fā)明第一實(shí)施例提供的一種訂單處理系統(tǒng)的結(jié)構(gòu)框圖;
圖2圖1所示的訂單處理系統(tǒng)中的第一服務(wù)器的結(jié)構(gòu)框圖;
圖3為本發(fā)明第二實(shí)施例提供的一種分布式訂單處理方法的流程圖;
圖4為本發(fā)明第三實(shí)施例提供的一種分布式訂單處理方法的流程圖;
圖5為本發(fā)明第四實(shí)施例提供的一種分布式訂單處理方法的時序圖;
圖6為本發(fā)明第五實(shí)施例提供的一種分布式訂單處理裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。因此,以下對在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參照圖1,是本發(fā)明第一實(shí)施例提供的一種訂單處理系統(tǒng)的結(jié)構(gòu)框圖。所述系統(tǒng)600包括第一服務(wù)器602、多個第二服務(wù)器601和用戶終端603。所述第一服務(wù)器602與每個所述第二服務(wù)器601均耦合。用戶終端603和第一服務(wù)器602耦合。用戶終端603可以是多個。用戶終端603中安裝有客戶端,用戶通過用戶終端603中的客戶端向所述第一服務(wù)器602發(fā)送訂單信息。
在本實(shí)施例中,所述第一服務(wù)器602用于獲取訂單信息以及將所述訂單信息分發(fā)給多個第二服務(wù)器601。具體地,所述第一服務(wù)器602用于獲取用戶終端603發(fā)送的訂單信息。
在本實(shí)施例中,所述第二服務(wù)器601用于處理所述訂單信息,具體地,當(dāng)所述訂單信息所攜帶的信息與預(yù)設(shè)信息匹配時,所述第二服務(wù)器601將所述訂單信息的處理狀態(tài)修改為未處理,并將所述訂單信息存儲到第一數(shù)據(jù)庫,發(fā)送訂單初步處理完成信息至客戶端;當(dāng)所述訂單信息所攜帶的產(chǎn)品數(shù)量小于或等于預(yù)設(shè)產(chǎn)品庫存時,所述第二服務(wù)器601將所述訂單信息存儲到第二數(shù)據(jù)庫;當(dāng)所述第二服務(wù)器601接收到所述客戶端基于所述訂單信息反饋的支付信息后,所述第二服務(wù)器601修改所述理訂單信息存儲在所述第一數(shù)據(jù)庫中的處理狀態(tài);發(fā)送訂單處理完成消息至所述客戶端。
其中,所述訂單信息包括訂單金額和收貨人手機(jī)號,當(dāng)所述訂單金額與預(yù)設(shè)第一信息匹配時以及所述收貨人手機(jī)號與預(yù)設(shè)第二信息匹配時,所述第二服務(wù)器601將所述訂單信息的狀態(tài)修改為未處理,并將所述訂單信息存儲到第一數(shù)據(jù)庫,當(dāng)訂單信息存儲完成后,第二服務(wù)器601發(fā)送訂單初步處理完成信息至客戶端。
其中,預(yù)設(shè)第一信息是指每個商品預(yù)先設(shè)置的價格以及郵費(fèi),所述當(dāng)所述訂單金額與預(yù)設(shè)第一信息匹配是指將訂單金額與預(yù)先設(shè)置的商品價格和郵費(fèi)的總和進(jìn)行比較,判定預(yù)先設(shè)置的商品價格和郵費(fèi)的總和是否等于所述訂單金額,當(dāng)預(yù)先設(shè)置的商品價格和郵費(fèi)的總和等于所述訂單金額時,表示所述訂單金額與預(yù)設(shè)第一信息匹配,否則不匹配。
所述預(yù)設(shè)第二信息判斷收貨人手機(jī)號是否合法。所述收貨人手機(jī)號與預(yù)設(shè)第二信息匹配是指判斷訂單信息中的收貨人手機(jī)號是否是13位,如果是,為正常手機(jī)號,即收貨人手機(jī)號是合法的。
在本實(shí)施例中,當(dāng)所述訂單信息所攜帶的產(chǎn)品數(shù)量小于或等于預(yù)設(shè)產(chǎn)品庫存時,所述第二服務(wù)器601將所述訂單信息存儲到第二數(shù)據(jù)庫是指第二服務(wù)器601基于輪循的方式從所述第一數(shù)據(jù)庫中獲取所述訂單信息,所述訂單信息的處理狀態(tài)為未處理;第二服務(wù)器601將所述訂單信息所攜帶的產(chǎn)品數(shù)量與預(yù)設(shè)產(chǎn)品庫存進(jìn)行比對,當(dāng)所述產(chǎn)品數(shù)量小于或等于所述預(yù)設(shè)產(chǎn)品庫存時,所述第二服務(wù)器將所述訂單信息存儲到所述第二數(shù)據(jù)庫。其中,所述輪循是指每個第二服務(wù)器601通過輪流訪問第一數(shù)據(jù)庫中的訂單信息,直到將第一數(shù)據(jù)庫中的訂單信息獲取完。
在本實(shí)施例中,所述發(fā)送訂單處理完成消息至所述客戶端具體是指所述第二服務(wù)器601獲取存儲在所述第一數(shù)據(jù)庫中所述訂單信息的處理狀態(tài),當(dāng)所述處理狀態(tài)為處理完成狀態(tài)時,將所述訂單信息刪除以及發(fā)送訂單處理完成消息至客戶端。
在本實(shí)施例中,當(dāng)所述第二服務(wù)器601接收到所述客戶端基于所述訂單信息反饋的支付信息后,所述第二服務(wù)器601修改所述理訂單信息存儲在所述第一數(shù)據(jù)庫中的處理狀態(tài),將所述處理狀態(tài)修改為已處理或者是已經(jīng)完成處理,并根據(jù)所述訂單信息攜帶的積分信息對所述訂單信息所對應(yīng)的用戶的積分進(jìn)行扣取或者是增加。例如,當(dāng)用戶使用積分進(jìn)行購買物品時,對用戶擁有的積分進(jìn)行扣除,當(dāng)用戶正常購買物品時,贈送用戶購買該物品的相應(yīng)地積分,即在用戶的原始積分上增加用戶的積分,根據(jù)積分的多少設(shè)置用戶的VIP(Very Important People,貴賓)等級。當(dāng)用戶購買的物品達(dá)到預(yù)定數(shù)量或者是購買的物品的價格達(dá)到預(yù)定額度的時候,更新用戶的優(yōu)惠券狀態(tài)或者是添加贈品等。
如圖2所示,為圖1所示的訂單處理系統(tǒng)中的第一服務(wù)器602的結(jié)構(gòu)框圖。所述第一服務(wù)器602包括分布式訂單處理裝置500、存儲器301、存儲控制器302、處理器303、外設(shè)接口304和輸入輸出單元305。
所述存儲器301、存儲控制器302、處理器303、外設(shè)接口304、輸入輸出單元305各元件相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過一條或多條通訊總線或信號線實(shí)現(xiàn)電性連接。所述分布式訂單處理裝置500包括至少一個可以軟件或固件(firmware)的形式存儲于所述存儲器301中或固化在所述第一服務(wù)器602的操作系統(tǒng)(operating system,OS)中的軟件功能模塊。所述處理器303用于執(zhí)行存儲器301中存儲的可執(zhí)行模塊,例如所述分布式訂單處理裝置500包括的軟件功能模塊或計算機(jī)程序。
其中,存儲器301可以是,但不限于,隨機(jī)存取存儲器(Random Access Memory,RAM),只讀存儲器(Read Only Memory,ROM),可編程只讀存儲器(Programmable Read-Only Memory,PROM),可擦除只讀存儲器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲器301用于存儲程序,所述處理器303在接收到執(zhí)行指令后,執(zhí)行所述程序,前述本發(fā)明實(shí)施例任一實(shí)施例揭示的流過程定義的第一服務(wù)器602所執(zhí)行的方法可以應(yīng)用于處理器303中,或者由處理器303實(shí)現(xiàn)。
處理器303可能是一種集成電路芯片,具有信號的處理能力。上述的處理器303可以是通用處理器,包括中央處理器(Central Processing Unit,簡稱CPU)、網(wǎng)絡(luò)處理器(Network Processor,簡稱NP)等;還可以是數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
所述外設(shè)接口304將各種輸入/輸入裝置耦合至處理器303以及存儲器301。在一些實(shí)施例中,外設(shè)接口304,處理器303以及存儲控制器302可以在單個芯片中實(shí)現(xiàn)。在其他一些實(shí)例中,他們可以分別由獨(dú)立的芯片實(shí)現(xiàn)。
輸入輸出單元305用于提供給用戶輸入數(shù)據(jù)實(shí)現(xiàn)用戶與所述第一服務(wù)器602的交互。所述輸入輸出單元305可以是,但不限于,鼠標(biāo)和鍵盤等。
請參閱圖3,是本發(fā)明第二實(shí)施例提供的一種分布式訂單處理方法的流程圖。下面將對圖3所示的具體流程進(jìn)行詳細(xì)闡述。
步驟S401,所述第一服務(wù)器獲取訂單信息。
其中,所述第一服務(wù)器接收客戶端發(fā)送的訂單信息。所述訂單信息為多條。所述客戶端為用戶終端中所安裝的應(yīng)用程序。其中,所述訂單信息包括產(chǎn)品信息、訂單金額、收貨人信息和郵費(fèi)。
作為一種實(shí)施方式,當(dāng)用戶通過客戶端進(jìn)行下單后,所述客戶端將用戶的訂單信息發(fā)送到所述第一服務(wù)器。例如,用戶李某在客戶端買了一件小商品,該小商品的名稱為小小,該小商品的價格為20元,收貨地址為地球村A組B號,收貨人手機(jī)號為13288888888,該小商品包郵,李四的訂單信息為:小小一件,訂單金額為20,收貨人信息為李四的收貨地址與手機(jī)號,郵費(fèi)為0元??蛻舳藢⑸傻睦钏牡乃鲇唵涡畔l(fā)送到第一服務(wù)器。
步驟S402,所述第一服務(wù)器將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器,以使所述第二服務(wù)器處理所述訂單信息。
其中,可以是按照預(yù)設(shè)順序進(jìn)行分發(fā),具體地,在本實(shí)施例中,所述第一服務(wù)器按照預(yù)設(shè)順序依次向每個所述第二服務(wù)器發(fā)送一條訂單信息;當(dāng)所述第一服務(wù)器向每個所述第二服務(wù)器均發(fā)送了一條訂單信息且所述訂單信息還未分發(fā)完的情況下,所述第一服務(wù)器再次按照預(yù)設(shè)順序向每個所述第二服務(wù)器分發(fā)一條訂單信息,直到所有的訂單信息發(fā)送完。
所述預(yù)設(shè)順序是指為每個第二服務(wù)器在多個第二服務(wù)器中設(shè)置一個先后順序,第一服務(wù)器能夠按照每個第二服務(wù)器的先后順序?yàn)槊總€第二服務(wù)器發(fā)送訂單信息。
作為第一實(shí)施方式,預(yù)先為每個第二服務(wù)器設(shè)置一個先后順序,例如,通過編號的方式為每個第二服務(wù)器進(jìn)行編號,按照所編號的號數(shù)的大小按照由小到大進(jìn)行排序。當(dāng)所述第一服務(wù)器向每個所述第二服務(wù)器發(fā)送訂單信息時,可以按照每個第二服務(wù)器的編號的順序進(jìn)行依次發(fā)送,當(dāng)所述第一服務(wù)器向每個所述第二服務(wù)器均發(fā)送了一條訂單信息且所述訂單信息還未分發(fā)完的情況下,所述第一服務(wù)器再次按照編號的順序向每個所述第二服務(wù)器分發(fā)一條訂單信息,直到所有的訂單信息發(fā)送完。此時,每個第二服務(wù)器所能處理的訂單信息的數(shù)目相同。
例如,當(dāng)前第二服務(wù)器為4個,為每個第二服務(wù)器進(jìn)行編號,將4個第二服務(wù)器的編號分別設(shè)為1、2、3、4。即編號為1的代表4個第二服務(wù)器中的一個,以此類推,編號為4的代表4個第二服務(wù)器中的一個第二服務(wù)器,按照編號大小由小到大進(jìn)行排序,此時4個第二服務(wù)器均相同,即每個第二服務(wù)器所能處理的訂單信息的數(shù)量相同。當(dāng)前第一服務(wù)器所接收的訂單信息為100條,第一服務(wù)器按照第二服務(wù)器的編號的順序進(jìn)行分發(fā)訂單信息,第一次按照第二服務(wù)器的編號順序向每個第二服務(wù)器發(fā)送一條訂單信息,當(dāng)?shù)谝淮畏职l(fā)完后,第一服務(wù)器中的訂單信息還剩余96條,繼續(xù)按照編號的順序?yàn)槊總€第二服務(wù)器發(fā)送一條訂單信息,直到100條訂單信息發(fā)送完成。
在本實(shí)施例中,還可以是按照預(yù)設(shè)閥值的大小進(jìn)行分發(fā)。具體地,獲取每個所述第二服務(wù)器所能夠處理所述訂單信息的預(yù)設(shè)閥值;當(dāng)每個所述第二服務(wù)器的預(yù)設(shè)閥值均大于或等于訂單信息的總數(shù)量時,將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器;當(dāng)訂單信息的總數(shù)量大于多個所述第二服務(wù)器對應(yīng)的預(yù)設(shè)閥值中的其中一個預(yù)設(shè)閥值時,將所述訂單信息依次向每個所述第二服務(wù)器發(fā)送一條訂單信息,當(dāng)任意一個所述第二服務(wù)器接收到的所述訂單信息的數(shù)量等于所述第二服務(wù)器所對應(yīng)的預(yù)設(shè)閥值時,停止向接收所述訂單信息的數(shù)量等于所述第二服務(wù)器所對應(yīng)的預(yù)設(shè)閥值的所述第二服務(wù)器發(fā)送訂單信息。
其中,所述預(yù)設(shè)閥值是指每個第二服務(wù)器所能夠處理的訂單信息的數(shù)量。根據(jù)不同的第二服務(wù)器設(shè)置不同的預(yù)設(shè)閥值,即所述預(yù)設(shè)閥值是指根據(jù)第二服務(wù)器所能夠處理的訂單信息的數(shù)量的不同設(shè)定不同的預(yù)設(shè)閥值。
作為第二實(shí)施方式,獲取每個第二服務(wù)器所能夠處理所述訂單信息的最大數(shù)量,將所述最大數(shù)量設(shè)置為每個第二服務(wù)器的閥值。根據(jù)每個第二服務(wù)器的閥值第一服務(wù)器將訂單信息發(fā)送到每個第二服務(wù)器,以使每個第二服務(wù)器接收到的訂單信息的數(shù)量低于該第二服務(wù)器的閥值。
例如,當(dāng)前有6個第二服務(wù)器,其中每個第二服務(wù)器的閥值依次為10000、20000、30000、40000、45000和60000。當(dāng)前第一服務(wù)器接收到的訂單信息為一百萬條,按照每個第二服務(wù)器的閥值進(jìn)行發(fā)送訂單信息,即為閥值為10000第二服務(wù)器的發(fā)送9999條訂單信息或者是低于閥值的任意數(shù)目的訂單信息,為閥值為20000的第二服務(wù)器發(fā)送19999條訂單信息或者是低于閥值的任意數(shù)目的訂單信息,以此類推,為閥值為60000的第二服務(wù)器發(fā)送59999條訂單信息或者是低于閥值的任意數(shù)目的訂單信息。當(dāng)?shù)谝环?wù)器向每個第二服務(wù)器都發(fā)送完訂單信息后,當(dāng)?shù)谝环?wù)器接收到第二服務(wù)器處理訂單信息的狀態(tài)后,即第一服務(wù)器接收第二服務(wù)器返回的該第二服務(wù)器當(dāng)前處理完的訂單信息的數(shù)量,第一服務(wù)器按照每個第二服務(wù)器所處理完成后,每個第二服務(wù)器還能處理的最大訂單信息的數(shù)量將剩余的訂單信息再次按照每個第二服務(wù)器的閥值進(jìn)行發(fā)送,當(dāng)6個所述第二服務(wù)器中的任意一個第二服務(wù)器接收到的所述訂單信息的數(shù)量等于所述第二服務(wù)器所對應(yīng)的預(yù)設(shè)閥值時,停止向接收所述訂單信息的數(shù)量等于所述第二服務(wù)器所對應(yīng)的預(yù)設(shè)閥值的所述第二服務(wù)器發(fā)送訂單信息。例如,當(dāng)閾值為10000的第二服務(wù)器接收到的訂單信息為10000條時,第一服務(wù)器停止向閾值為10000的第二服務(wù)器發(fā)送訂單信息,直到閾值為10000的第二服務(wù)器能夠重新接收第一服務(wù)器發(fā)送的訂單信息時,第一服務(wù)器再次向閾值為10000的第二服務(wù)器發(fā)送訂單信息,且不能超過第二服務(wù)器所能處理的范圍,例如,閾值為10000的第二服務(wù)器第一次接收到第一服務(wù)器發(fā)送的10000條訂單信息后,處理完9000條后,還剩余1000條,第二服務(wù)器返回一個閾值給第一服務(wù)器,第一服務(wù)器按照第二服務(wù)器返回的新的閾值發(fā)送相應(yīng)地訂單信息到第二服務(wù)器。
例如,當(dāng)前有6個第二服務(wù)器,其中每個第二服務(wù)器的閥值依次為10000、20000、30000、40000、45000和60000。當(dāng)前第一服務(wù)器接收到的訂單信息為5000條,所述訂單信息的總數(shù)小于6個第二服務(wù)器中的任意一個第二服務(wù)器的閥值,將所述訂單信息發(fā)送到6個所述第二服務(wù)器中的任意一個所述第二服務(wù)器。
作為第三實(shí)施方式,可以根據(jù)每個第二服務(wù)器的處理訂單的能力,為每個第二服務(wù)器設(shè)置權(quán)重值,第一服務(wù)器根據(jù)每個第二服務(wù)器的權(quán)重值的不同發(fā)送不同數(shù)目的訂單信息到每個第二服務(wù)器。其中,發(fā)送給每個第二服務(wù)器的訂單信息的數(shù)目等于第二服務(wù)器的權(quán)重值與第一服務(wù)器接收到的訂單信息的數(shù)目的乘積。將所有的第二服務(wù)器的權(quán)重值相加等于100%。
例如,當(dāng)前有3個第二服務(wù)器,每個第二服務(wù)器的權(quán)重分別為20%、30%和50%。所述第一服務(wù)器接收到的訂單信息的數(shù)目為100000條,按照每個第二服務(wù)器的權(quán)重值,第一服務(wù)器依次為每個第二服務(wù)器發(fā)送相應(yīng)地數(shù)目的訂單信息,為權(quán)重為20%的第二服務(wù)器發(fā)送100000*20%=20000條訂單信息,為權(quán)重為30%的第二服務(wù)器發(fā)送100000*30%=30000條訂單信息,為權(quán)重為50%的第二服務(wù)器發(fā)送100000*50%=50000條訂單信息。
作為第四實(shí)施方式,可以根據(jù)每個第二服務(wù)器的域名向每個第二服務(wù)器發(fā)送訂單信息。具體地,獲取每個第二服務(wù)器的域名,按照域名的指向,第一服務(wù)器將訂單信息發(fā)送到與獲取到的域名相應(yīng)地的第二服務(wù)器。
請參閱圖4,是本發(fā)明第三實(shí)施例提供的一種分布式訂單處理方法的流程圖。下面將對圖4所示的具體流程進(jìn)行詳細(xì)闡述。
步驟S501,所述第一服務(wù)器獲取訂單信息。
其中,所述第一服務(wù)器接收客戶端發(fā)送的訂單信息。
步驟S502,所述第一服務(wù)器將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器。
步驟S503,當(dāng)所述訂單信息所攜帶的信息與預(yù)設(shè)信息匹配時,所述第二服務(wù)器將所述訂單信息的處理狀態(tài)修改為未處理,并將所述訂單信息存儲到第一數(shù)據(jù)庫,發(fā)送訂單初步處理完成信息至客戶端。
步驟S504,當(dāng)所述訂單信息所攜帶的產(chǎn)品數(shù)量小于或等于預(yù)設(shè)產(chǎn)品庫存時,所述第二服務(wù)器將所述訂單信息存儲到第二數(shù)據(jù)庫。
步驟S505,當(dāng)所述第二服務(wù)器接收到所述客戶端基于所述訂單信息反饋的支付信息后,所述第二服務(wù)器修改所述訂單信息存儲在所述第一數(shù)據(jù)庫中的處理狀態(tài)。
步驟S506,發(fā)送訂單處理完成消息至所述客戶端。
其中,第二服務(wù)將訂單處理完成后,發(fā)送處理完成通知信息到客戶端。
請參照圖5,圖5為本發(fā)明第四實(shí)施例提供的一種分布式訂單處理方法的時序圖。第一服務(wù)器獲取客戶端發(fā)送的訂單信息,所述客戶端安裝在用戶終端上,第一服務(wù)器將獲取到的訂單信息發(fā)送到多個第二服務(wù)器,第二服務(wù)器接收到訂單信息后,對訂單信息進(jìn)行處理,具體地,如步驟S503,當(dāng)所述訂單信息所攜帶的信息與預(yù)設(shè)信息匹配時,所述第二服務(wù)器將所述訂單信息的處理狀態(tài)修改為未處理,并將所述訂單信息存儲到第一數(shù)據(jù)庫,并通過第一服務(wù)器發(fā)送初步處理結(jié)果到用戶終端,當(dāng)所述訂單信息所攜帶的信息與預(yù)設(shè)信息不匹配時,所述第二服務(wù)器發(fā)送初步處理結(jié)果通過第一服務(wù)器發(fā)送到用戶終端。第二服務(wù)器在返回訂單初步處理結(jié)果后,對所述訂單信息進(jìn)行處理,具體的,如步驟S504,當(dāng)所述訂單信息所攜帶的產(chǎn)品數(shù)量小于或等于預(yù)設(shè)產(chǎn)品庫存時,所述第二服務(wù)器將所述訂單信息存儲到第二數(shù)據(jù)庫。如步驟S505,當(dāng)所述第二服務(wù)器接收到所述客戶端基于所述訂單信息反饋的支付信息后,所述第二服務(wù)器修改所述訂單信息存儲在所述第一數(shù)據(jù)庫中的處理狀態(tài)。當(dāng)用戶終端獲取訂單處理結(jié)果時,即獲取訂單處理的最終結(jié)果時,第一服務(wù)器將用戶終端發(fā)送的訂單處理結(jié)果請求發(fā)送到第二服務(wù)器,第二服務(wù)器在接收到訂單處理結(jié)果請求時,根據(jù)第二服務(wù)器所處理的訂單信息的狀態(tài)返回訂單處理狀態(tài)到用戶終端。
請參閱圖5,是本發(fā)明第五實(shí)施例提供一種分布式訂單處理裝置的結(jié)構(gòu)框圖。所述裝置500包括數(shù)據(jù)獲取模塊510和數(shù)據(jù)處理模塊520。
數(shù)據(jù)獲取模塊510,用于第一服務(wù)器獲取訂單信息。
數(shù)據(jù)處理模塊520,用于所述第一服務(wù)器將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器,以使所述第二服務(wù)器處理所述訂單信息。
其中,所述數(shù)據(jù)處理模塊520還包括數(shù)據(jù)處理子模塊521。數(shù)據(jù)處理子模塊521,用于所述第一服務(wù)器基于分發(fā)算法將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器。
在本實(shí)施例中,所述訂單信息為多條。其中,所述數(shù)據(jù)處理子模塊521具體用于所述第一服務(wù)器按照預(yù)設(shè)順序依次向每個所述第二服務(wù)器發(fā)送一條訂單信息;當(dāng)所述第一服務(wù)器向每個所述第二服務(wù)器均發(fā)送了一條訂單信息且所述訂單信息還未分發(fā)完的情況下,所述第一服務(wù)器再次按照預(yù)設(shè)順序向每個所述第二服務(wù)器分發(fā)一條訂單信息,直到所有的訂單信息發(fā)送完。
在本實(shí)施例中,所述訂單信息為多條。所述數(shù)據(jù)處理子模塊521還用于獲取每個所述第二服務(wù)器所容內(nèi)所述訂單信息的預(yù)設(shè)閥值;當(dāng)每個所述第二服務(wù)器的預(yù)設(shè)閥值均大于或等于訂單信息的總數(shù)量時,將所述訂單信息發(fā)送到多個所述第二服務(wù)器中的任意一個所述第二服務(wù)器;當(dāng)訂單信息的總數(shù)量大于多個所述第二服務(wù)器對應(yīng)的預(yù)設(shè)閥值中的其中一個預(yù)設(shè)閥值時,將所述訂單信息依次向每個所述第二服務(wù)器發(fā)送一條訂單信息,當(dāng)任意一個所述第二服務(wù)器接收到的所述訂單信息的數(shù)量等于所述第二服務(wù)器所對應(yīng)的預(yù)設(shè)閥值時,停止向接收所述訂單信息的數(shù)量等于所述第二服務(wù)器所對應(yīng)的預(yù)設(shè)閥值的所述第二服務(wù)器發(fā)送訂單信息。
綜上所述,本發(fā)明提供一種分布式訂單處理方法、裝置及訂單處理系統(tǒng),該方法通過第一服務(wù)器獲取客戶端發(fā)送的訂單信息,將所述訂單信息發(fā)送到多個第二服務(wù)器中的任意一個第二服務(wù)器,從而使得第二服務(wù)器所處理的訂單信息的數(shù)量位于該第二服務(wù)器所能處理的范圍內(nèi),進(jìn)而使得訂單處理過程更加友好、快速以及安全。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實(shí)施例的裝置、方法和計算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實(shí)現(xiàn)。
另外,在本發(fā)明各個實(shí)施例中的各功能模塊可以集成在一起形成一個獨(dú)立的部分,也可以是各個模塊單獨(dú)存在,也可以兩個或兩個以上模塊集成形成一個獨(dú)立的部分。
所述功能如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個附圖中被定義,則在隨后的附圖中不需要對其進(jìn)行進(jìn)一步定義和解釋。