亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

周期性訂單信息的處理方法及系統(tǒng)的制作方法_2

文檔序號(hào):9235748閱讀:來(lái)源:國(guó)知局
情況下,同一用 戶的一個(gè)周期性預(yù)訂請(qǐng)求中生成的多條任務(wù)數(shù)據(jù)就可能會(huì)被保存到不同的數(shù)據(jù)庫(kù)表中。
[0034] S103;按照預(yù)置的讀取周期從所述數(shù)據(jù)庫(kù)中讀取當(dāng)前讀取周期內(nèi)的到期任務(wù)數(shù) 據(jù);
[0035] 在生成數(shù)據(jù)庫(kù)的過(guò)程中,就可W通過(guò)預(yù)先設(shè)置的應(yīng)用服務(wù)器,按照一定能夠的周 期從數(shù)據(jù)庫(kù)中讀取當(dāng)前讀取周期內(nèi)的到期任務(wù)數(shù)據(jù)。例如,每5分鐘讀取一次在最近五分 鐘內(nèi)的到期任務(wù)數(shù)據(jù)。
[003引S104 ;根據(jù)所述到期任務(wù)數(shù)據(jù)中包含的商品對(duì)象信息,生成物流訂單。
[0037] 在讀取到當(dāng)前的到期任務(wù)后,就可W根據(jù)其中記錄的商品對(duì)象信息、用戶信息等 生成物流訂單。在生產(chǎn)物流訂單之后,還可W向倉(cāng)儲(chǔ)系統(tǒng)發(fā)送通知消息,W便通知倉(cāng)儲(chǔ)系 統(tǒng)進(jìn)行備貨,W及后續(xù)的發(fā)貨等處理流程。該樣就可W使得數(shù)據(jù)庫(kù)中的各條任務(wù)數(shù)據(jù)按時(shí) 被執(zhí)行,進(jìn)而使得用戶按照其指定的時(shí)間接收到其預(yù)訂的商品,而不需要每周或者每月都 重新進(jìn)行下單操作,節(jié)省了用戶的操作開(kāi)銷。其中,為了向倉(cāng)儲(chǔ)系統(tǒng)發(fā)送通知消息,可W預(yù) 先獲取到倉(cāng)儲(chǔ)系統(tǒng)的調(diào)用接口,在生成物流訂單之后,就可W調(diào)用倉(cāng)儲(chǔ)系統(tǒng)的該接口,并將 物流訂單中的商品對(duì)象的id、規(guī)格參數(shù)、數(shù)量等信息發(fā)送到倉(cāng)儲(chǔ)系統(tǒng),W便倉(cāng)儲(chǔ)系統(tǒng)進(jìn)行備 貨。另外,還可W確定出收貨方用戶的收貨地址信息,也發(fā)送到倉(cāng)儲(chǔ)系統(tǒng),W便在備貨完成 后向該地址發(fā)貨。
[0038] 上述實(shí)現(xiàn)方式在任務(wù)數(shù)據(jù)量較少、單個(gè)應(yīng)用服務(wù)器的情況下可W很好的被執(zhí)行。 當(dāng)任務(wù)數(shù)據(jù)量巨大,可w由多個(gè)應(yīng)用服務(wù)器組成的應(yīng)用集群來(lái)執(zhí)行該些定時(shí)任務(wù)。此時(shí),可 W在系統(tǒng)中設(shè)置一個(gè)控制服務(wù)器,W及多個(gè)應(yīng)用服務(wù)器,控制服務(wù)器用于向各個(gè)應(yīng)用服務(wù) 器發(fā)送控制指令,應(yīng)用服務(wù)器根據(jù)控制服務(wù)器發(fā)送的控制指令W及預(yù)置的算法,確定需領(lǐng) 取的到期任務(wù)數(shù)據(jù)的標(biāo)識(shí)。其中,各個(gè)應(yīng)用服務(wù)器可W共用同一個(gè)計(jì)時(shí)器,來(lái)對(duì)讀取周期進(jìn) 行計(jì)時(shí)。另外,可W通過(guò)算法的設(shè)計(jì),將當(dāng)前讀取周期內(nèi)的全部到期任務(wù)數(shù)據(jù)平均分散到各 個(gè)應(yīng)用服務(wù)器上執(zhí)行。
[0039] 例如,在具體實(shí)現(xiàn)時(shí),可W使用哈希算法來(lái)實(shí)現(xiàn)任務(wù)的平均分配。此時(shí),控制服務(wù) 器具體可W首先根據(jù)系統(tǒng)中包含的應(yīng)用服務(wù)器,為各個(gè)應(yīng)用服務(wù)器分配服務(wù)器ID,然后在 發(fā)送控制指令時(shí),攜帶上應(yīng)用服務(wù)器的總數(shù)W及分配給應(yīng)用服務(wù)器的ID。例如,應(yīng)用服務(wù)器 的總數(shù)為10,為應(yīng)用服務(wù)器A分配的ID是0,則在向該應(yīng)用服務(wù)器A發(fā)送控制指令時(shí),就需 要攜帶上應(yīng)用服務(wù)器的總數(shù);1〇, W及該應(yīng)用服務(wù)器A的ID ;0。
[0040] 進(jìn)而,應(yīng)用服務(wù)器在從數(shù)據(jù)庫(kù)中領(lǐng)取到期任務(wù)時(shí),需要在兩方面都進(jìn)行判斷。首 先,需要是任務(wù)數(shù)據(jù)的到期時(shí)間在當(dāng)前的讀取周期內(nèi),其次,需要使得任務(wù)ID滿足算法規(guī) 定的規(guī)則。其中,對(duì)于某應(yīng)用服務(wù)器而言,可W首先利用到期任務(wù)數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)用服務(wù)器 總數(shù)進(jìn)行取模運(yùn)算,然后將取模運(yùn)算結(jié)果等于該應(yīng)用服務(wù)器的ID號(hào)的各個(gè)到期任務(wù)數(shù)據(jù), 確定為該應(yīng)用服務(wù)器需要領(lǐng)取的到期任務(wù)數(shù)據(jù)。例如,讀取周期是5分鐘,應(yīng)用程序A在 11 :55分讀取當(dāng)前周期內(nèi)的到期任務(wù)時(shí),首先需要判斷任務(wù)是否為11 ;50分到11 ;55分之 間的到期任務(wù),如果是,還需要判斷任務(wù)ID對(duì)應(yīng)用服務(wù)器總數(shù)取模的結(jié)果是否為該應(yīng)用服 務(wù)器A的ID,如果是,則進(jìn)行讀取,否則不會(huì)讀取該任務(wù)。該樣,可W使得同一讀取周期內(nèi)的 各個(gè)任務(wù)數(shù)據(jù)平均分配到各個(gè)應(yīng)用服務(wù)器上執(zhí)行,避免出現(xiàn)個(gè)別服務(wù)器負(fù)荷過(guò)高或者過(guò)低 的情況。例如,共有10個(gè)應(yīng)用服務(wù)器,ID分別為0、1、2、……、9,則其中ID為0的應(yīng)用服 務(wù)器讀取的任務(wù)標(biāo)識(shí)需要滿足W下條件:任務(wù)標(biāo)識(shí)對(duì)10取模的結(jié)果為0, ID為1的應(yīng)用服 務(wù)器讀取的任務(wù)標(biāo)識(shí)需要滿足W下條件:任務(wù)標(biāo)識(shí)對(duì)10取模的結(jié)果為1,W此類推,所有的 任務(wù)數(shù)據(jù)都可W被平均分配到各個(gè)應(yīng)用服務(wù)器上。
[0041] 另外,在實(shí)際應(yīng)用中,還可能出現(xiàn)應(yīng)用服務(wù)器若機(jī)的情況,或者有些任務(wù)數(shù)據(jù)雖然 被讀取出來(lái),但是在執(zhí)行的過(guò)程中可能會(huì)由于各種原因出現(xiàn)未被正常執(zhí)行的情況,此時(shí),就 可能會(huì)出現(xiàn)有些任務(wù)得不到執(zhí)行的現(xiàn)象。為此,本申請(qǐng)實(shí)施例還針對(duì)該種情況提出了改進(jìn) 的方案。
[0042] 具體的,首先可W在每臺(tái)應(yīng)用服務(wù)器上啟動(dòng)多個(gè)任務(wù)讀取線程,不同的任務(wù)讀取 線程使用不同的讀取周期從數(shù)據(jù)庫(kù)中讀取到期任務(wù)。例如,有的線程的讀取周期是5分鐘, 有的是20分鐘,還有的是1小時(shí),有的是一天,還有的是兩天,等等。當(dāng)然,每臺(tái)應(yīng)用服務(wù)器 上啟動(dòng)的線程數(shù)量是有限的,一般而言,最長(zhǎng)的讀取周期通??蒞設(shè)定為兩天。各個(gè)線程按 照自己的周期去數(shù)據(jù)庫(kù)中讀取當(dāng)前周期內(nèi)的到期任務(wù)數(shù)據(jù)。例如,周期為5分鐘的線程,每 五分鐘從數(shù)據(jù)庫(kù)中讀取一次任務(wù)數(shù)據(jù),周期為20分鐘的線程,每20分鐘從數(shù)據(jù)庫(kù)中讀取一 次任務(wù)數(shù)據(jù)。當(dāng)然,由于各個(gè)線程需要讀取的任務(wù)的標(biāo)識(shí)是根據(jù)應(yīng)用服務(wù)器的總數(shù)W及ID 來(lái)確定的,因此,同一應(yīng)用服務(wù)器上啟動(dòng)的各個(gè)線程都會(huì)按照相同的規(guī)則去數(shù)據(jù)庫(kù)中選擇 任務(wù)數(shù)據(jù),該樣,就可能出現(xiàn)同一個(gè)任務(wù)數(shù)據(jù)被不同的線程讀取到的情況。例如,
[0043] 例如,應(yīng)用服務(wù)器A的ID為0,其中的線程1,其讀取周期為5分鐘,在11 ;55時(shí), 讀取了從11 ;50到11 ;55之間到期的10個(gè)任務(wù),該10個(gè)任務(wù)的ID對(duì)10 (應(yīng)用服務(wù)器總 數(shù))取模的結(jié)果均為0 ;其中的線程2,其讀取周期為20分鐘,在12 ;00時(shí),需要讀取從11 : 40到12 ;00之間到期的任務(wù),該些任務(wù)的ID對(duì)10取模的結(jié)果同樣為0,因此,就會(huì)將線程 1讀取到的任務(wù)數(shù)據(jù)包含進(jìn)來(lái)。為了防止同一任務(wù)被重復(fù)執(zhí)行,當(dāng)一個(gè)任務(wù)數(shù)據(jù)被一個(gè)線程 讀取,并被成功執(zhí)行之后,可W在數(shù)據(jù)庫(kù)中對(duì)該任務(wù)數(shù)據(jù)添加上已執(zhí)行標(biāo)識(shí),該樣,同一應(yīng) 用服務(wù)器內(nèi)后到期的線程在從數(shù)據(jù)庫(kù)中讀取任務(wù)時(shí),就可W僅從所述數(shù)據(jù)庫(kù)中讀取當(dāng)前讀 取周期內(nèi)尚未被添加已執(zhí)行標(biāo)識(shí)的到期任務(wù)數(shù)據(jù),從而避免同一任務(wù)數(shù)據(jù)被后到期的線程 再次讀取到。
[0044] 另外,還可能存在W下情況;某任務(wù)X在被線程1讀取到之后,尚且處于執(zhí)行該任 務(wù)的過(guò)程中,也即尚未在數(shù)據(jù)庫(kù)中添加已執(zhí)行標(biāo)識(shí),就被另一線程2讀取到,此時(shí),為了防 止該任務(wù)被重復(fù)執(zhí)行,在本申請(qǐng)實(shí)施例中,還可W將同一應(yīng)用服務(wù)器內(nèi)各線程讀取到的任 務(wù)數(shù)據(jù)全部寫入到同一隊(duì)列中,然后由任務(wù)執(zhí)行線程(一個(gè)或多個(gè))從該隊(duì)列中讀取任務(wù)數(shù) 據(jù)并執(zhí)行。在將任務(wù)數(shù)據(jù)寫入隊(duì)列的過(guò)程中就可W對(duì)任務(wù)數(shù)據(jù)進(jìn)行去重處理,該樣,對(duì)于被 重復(fù)讀取到的任務(wù)數(shù)據(jù)就不會(huì)被寫入到該隊(duì)列中。
[0045] 再者,還可能存在W下情況:某任務(wù)數(shù)據(jù)在所有任務(wù)讀取線程都已經(jīng)運(yùn)行完畢之 后仍未被執(zhí)行。例如:假設(shè)某任務(wù)數(shù)據(jù)的到期時(shí)間是2月17日11 ;52分,該任務(wù)在2月17 日11 ;55分被讀取周期為5分鐘的線程第一次讀取到,但是一直沒(méi)有執(zhí)行成功,因此數(shù)據(jù)庫(kù) 中無(wú)法為該任務(wù)數(shù)據(jù)添加已執(zhí)行標(biāo)識(shí);于是該任務(wù)數(shù)據(jù)會(huì)在12 ;00時(shí)被讀取周期為20分 鐘的線程第二次讀取到,但是仍然為被成功執(zhí)行;之后可能會(huì)在2月18日0 ;00被讀取周期 為1天的線程第H次讀取到,如果仍然未被成功執(zhí)行,則會(huì)在2月19日0 ;00被讀取周期為 2天的線程讀取到。如果最長(zhǎng)的讀取周期為2天,則在2月19日0;00之后,就不會(huì)再有其 他線程的讀取周期能夠覆蓋到該任務(wù)數(shù)據(jù),也就是所謂的所有線程都已經(jīng)運(yùn)行完成,此時(shí), 如果
當(dāng)前第2頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1