本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種更新腳本的方法及裝置、計(jì)算機(jī)終端。
背景技術(shù):
規(guī)則引擎是由推理引擎發(fā)展而來的,其為一種嵌入在應(yīng)用程序中的組件,實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來,并使用預(yù)定義的語義模塊編寫業(yè)務(wù)決策。規(guī)則引擎可以接收數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則并根據(jù)業(yè)務(wù)規(guī)則做出業(yè)務(wù)決策。
規(guī)則引擎作為風(fēng)控系統(tǒng)的技術(shù)核心,其主要原理在于:將風(fēng)控規(guī)則采用腳本的形式表達(dá)出來,并通過事件驅(qū)動(dòng)的方式在規(guī)則引擎中執(zhí)行腳本,而腳本的輸出結(jié)果為風(fēng)險(xiǎn)識(shí)別以及處置情況。
從系統(tǒng)結(jié)構(gòu)上來看,規(guī)則引擎通常采用分布式部署,多個(gè)事件可以通過哈希的方式分配到不同的服務(wù)器上,每臺(tái)服務(wù)器根據(jù)事件選擇腳本執(zhí)行并于執(zhí)行過程結(jié)束后輸出結(jié)果。
鑒于風(fēng)控領(lǐng)域存在強(qiáng)對(duì)抗,因此,風(fēng)控規(guī)則改動(dòng)頻繁。在每次規(guī)則改動(dòng)后需要發(fā)布至規(guī)則引擎,即規(guī)則引擎的每一臺(tái)服務(wù)器均需要更新到最新版本的腳本。如果在更新過程中發(fā)生服務(wù)器假死、重啟等現(xiàn)象,則會(huì)影響腳本的正常發(fā)布。
腳本發(fā)布是指腳本在修改后,更新規(guī)則引擎中的腳本到最新版本。
為了進(jìn)行腳本發(fā)布,相關(guān)技術(shù)中通常采用以下兩種方式:
(1)循環(huán)調(diào)用集群接口方式:根據(jù)服務(wù)器地址列表循環(huán)調(diào)用每臺(tái)服務(wù)器上的重新加載腳本接口,如果每個(gè)接口都返回成功信息,則表示腳本發(fā)布成功。
然而,此種方式存在如下缺陷:如果在循環(huán)調(diào)用集群接口方式中的任何一臺(tái)服務(wù)器發(fā)生假死,重啟等故障現(xiàn)象時(shí),會(huì)造成腳本發(fā)布失??;并且,服務(wù)器在重新部署期間,用戶無法進(jìn)行任何腳本發(fā)布操作。
(2)分布式集群配置管理器方式:通過分布式集群配置管理器,例如:zookeeper,diamond等向所有服務(wù)器推送最新的腳本,以確保每臺(tái)服務(wù)器都可以接收到最新的腳 本配置。
然而,此種方式存在如下缺陷:在分布式集群配置管理器方式中的腳本配置可以被覆蓋,當(dāng)服務(wù)器出現(xiàn)假死后又恢復(fù)時(shí),在此期間發(fā)生的腳本變化將無法被同步,從而易造成整個(gè)集群的腳本版本不同步。
針對(duì)上述的問題,目前未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種更新腳本的方法及裝置、計(jì)算機(jī)終端,以至少解決相關(guān)技術(shù)中所采用的腳本更新方案在單個(gè)服務(wù)器對(duì)多個(gè)腳本進(jìn)行更新的過程中容易造成遺漏或者多個(gè)服務(wù)器的腳本更新過程不同步的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種更新腳本的方法,包括:根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
可選地,根據(jù)處理順序確定處理進(jìn)度標(biāo)識(shí)包括:按照處理順序?yàn)榇履_本集合中的每個(gè)待更新腳本分配處理順序標(biāo)識(shí);根據(jù)為每個(gè)待更新腳本分配的處理順序標(biāo)識(shí)獲取與當(dāng)前時(shí)刻對(duì)應(yīng)的最新完成更新的腳本的處理順序標(biāo)識(shí);將獲取到的處理順序標(biāo)識(shí)設(shè)置為處理進(jìn)度標(biāo)識(shí)。
可選地,根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)未更新的腳本執(zhí)行更新操作包括:根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本;判斷未更新的腳本中是否存在腳本標(biāo)識(shí)相同的多個(gè)腳本;如果存在,則根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本,并對(duì)篩選后的未更新的腳本執(zhí)行更新操作;如果不存在,則按照處理順序?qū)ξ锤碌哪_本執(zhí)行更新操作。
可選地,根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本包括:在處理順序?yàn)榘凑仗幚眄樞驑?biāo)識(shí)由小到大依次對(duì)待更新腳本集合中的每個(gè)待更新腳本進(jìn)行更新的情況下,判斷待更新腳本集合中是否存在處理順序標(biāo)識(shí)大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本;如果存在,則將大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本確定為未更新的腳本。
可選地,根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本包括:按照處理順序從未更新的腳本中選取腳本標(biāo)識(shí)相同的多個(gè)腳本;對(duì)腳本標(biāo)識(shí)相同的多個(gè)腳本中每個(gè)腳本對(duì)應(yīng)的處理順序標(biāo)識(shí)進(jìn)行比較,選取并保留處理順序標(biāo)識(shí)最大的腳本。
可選地,根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)未更新的腳本執(zhí)行更新操作還包括:采用以下方式 之一對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新:在按照處理順序每次更新完成一個(gè)腳本后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行實(shí)時(shí)更新;在按照處理順序?qū)⑽锤碌哪_本全部更新完畢后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
可選地,待更新腳本集合包括以下之一:在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本;在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本以及從開始執(zhí)行腳本更新操作至當(dāng)前時(shí)刻新接收到的多個(gè)待更新腳本。
根據(jù)本發(fā)明實(shí)施例的另一方面,提供了另一種更新腳本的方法,包括:根據(jù)處理順序分別確定多個(gè)服務(wù)器中的每個(gè)服務(wù)器在當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄對(duì)應(yīng)的服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;根據(jù)處理進(jìn)度標(biāo)識(shí)向?qū)?yīng)的服務(wù)器發(fā)送指示信息,其中,指示信息用于指示對(duì)應(yīng)的服務(wù)器對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
可選地,在根據(jù)處理進(jìn)度標(biāo)識(shí)向?qū)?yīng)的服務(wù)器發(fā)送指示信息之后,還包括:接收對(duì)應(yīng)的服務(wù)器返回的響應(yīng)消息,其中,響應(yīng)消息用于表示對(duì)應(yīng)的服務(wù)器按照指示信息對(duì)未更新的腳本的完成進(jìn)度;根據(jù)響應(yīng)消息對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
根據(jù)本發(fā)明實(shí)施例的又一方面,還提供了一種更新腳本的裝置,包括:確定模塊,用于根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;更新模塊,用于根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
可選地,確定模塊包括:分配單元,用于按照處理順序?yàn)榇履_本集合中的每個(gè)待更新腳本分配處理順序標(biāo)識(shí);第一獲取單元,用于根據(jù)為每個(gè)待更新腳本分配的處理順序標(biāo)識(shí)獲取與當(dāng)前時(shí)刻對(duì)應(yīng)的最新完成更新的腳本的處理順序標(biāo)識(shí);設(shè)置單元,用于將獲取到的處理順序標(biāo)識(shí)設(shè)置為處理進(jìn)度標(biāo)識(shí)。
可選地,更新模塊包括:第二獲取單元,用于根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本;判斷單元,用于判斷未更新的腳本中是否存在腳本標(biāo)識(shí)相同的多個(gè)腳本;更新單元,用于在判斷單元輸出為是時(shí),根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本,并對(duì)篩選后的未更新的腳本執(zhí)行更新操作;或者,在判斷單元輸出為否時(shí),按照處理順序?qū)ξ锤碌哪_本執(zhí)行更新操作。
可選地,第二獲取單元包括:判斷子單元,用于在處理順序?yàn)榘凑仗幚眄樞驑?biāo)識(shí) 由小到大依次對(duì)待更新腳本集合中的每個(gè)待更新腳本進(jìn)行更新的情況下,判斷待更新腳本集合中是否存在處理順序標(biāo)識(shí)大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本;確定單元,用于在判斷子單元輸出為是時(shí),將大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本確定為未更新的腳本。
可選地,更新單元包括:選取子單元,用于按照處理順序從未更新的腳本中選取腳本標(biāo)識(shí)相同的多個(gè)腳本;比較子單元,用于對(duì)腳本標(biāo)識(shí)相同的多個(gè)腳本中每個(gè)腳本對(duì)應(yīng)的處理順序標(biāo)識(shí)進(jìn)行比較,選取并保留處理順序標(biāo)識(shí)最大的腳本。
可選地,更新模塊,還用于采用以下方式之一對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新:在按照處理順序每次更新完成一個(gè)腳本后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行實(shí)時(shí)更新;在按照處理順序?qū)⑽锤碌哪_本全部更新完畢后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
可選地,待更新腳本集合包括以下之一:在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本;在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本以及從開始執(zhí)行腳本更新操作至當(dāng)前時(shí)刻新接收到的多個(gè)待更新腳本。
根據(jù)本發(fā)明實(shí)施例的再一方面,還提供了一種更新腳本的裝置,包括:根據(jù)處理順序分別確定多個(gè)服務(wù)器中的每個(gè)服務(wù)器在當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄對(duì)應(yīng)的服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;根據(jù)處理進(jìn)度標(biāo)識(shí)向?qū)?yīng)的服務(wù)器發(fā)送指示信息,其中,指示信息用于指示對(duì)應(yīng)的服務(wù)器對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
可選地,在根據(jù)處理進(jìn)度標(biāo)識(shí)向?qū)?yīng)的服務(wù)器發(fā)送指示信息之后,還包括:接收對(duì)應(yīng)的服務(wù)器返回的響應(yīng)消息,其中,響應(yīng)消息用于表示對(duì)應(yīng)的服務(wù)器按照指示信息對(duì)未更新的腳本的完成進(jìn)度;根據(jù)響應(yīng)消息對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
根據(jù)本發(fā)明實(shí)施例的再一方面,提供了一種具有處理器可執(zhí)行的程序代碼的計(jì)算機(jī)可讀介質(zhì),在被執(zhí)行時(shí),程序代碼使得處理器執(zhí)行下述步驟:根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
根據(jù)本發(fā)明實(shí)施例的再一方面,提供了一種計(jì)算機(jī)終端,包括:處理器,處理器,用于根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí);以及根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作,其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新 的腳本。
在本發(fā)明實(shí)施例中,采用在每臺(tái)服務(wù)器中設(shè)置處理進(jìn)度標(biāo)識(shí)的方式,通過該處理進(jìn)度標(biāo)識(shí)始終記錄每臺(tái)服務(wù)器當(dāng)前已經(jīng)完成更新的腳本信息,并且根據(jù)該處理進(jìn)度標(biāo)識(shí)對(duì)每臺(tái)服務(wù)器未更新的全部腳本完成更新操作,從而能夠有效地避免每臺(tái)服務(wù)器在腳本更新過程中遺漏未更新的腳本,此外,還能夠有效地保持多臺(tái)服務(wù)器之間的腳本更新進(jìn)度保持同步,進(jìn)而解決了相關(guān)技術(shù)中所采用的腳本更新方案在單個(gè)服務(wù)器對(duì)多個(gè)腳本進(jìn)行更新的過程中容易造成遺漏或者多個(gè)服務(wù)器的腳本更新過程不同步的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是本發(fā)明實(shí)施例的一種更新腳本的方法的計(jì)算機(jī)終端的硬件結(jié)構(gòu)框圖;
圖2是根據(jù)本發(fā)明實(shí)施例一的更新腳本的方法的流程圖;
圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例一的腳本更新過程的整體示意圖;
圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例一的規(guī)則引擎服務(wù)器處理發(fā)布隊(duì)列的示意圖;
圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例一的在服務(wù)器因發(fā)生故障而需要重啟的情況下,規(guī)則引擎服務(wù)器的處理流程的示意圖;
圖6是根據(jù)本發(fā)明實(shí)施例一的另一種更新腳本的方法的流程圖;
圖7是根據(jù)本發(fā)明實(shí)施例二的更新腳本的裝置的結(jié)構(gòu)框圖;
圖8是根據(jù)本發(fā)明優(yōu)選實(shí)施例二的更新腳本的裝置的結(jié)構(gòu)框圖;
圖9是根據(jù)本發(fā)明實(shí)施例三的一種計(jì)算機(jī)終端的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實(shí)施例一
根據(jù)本發(fā)明實(shí)施例,還提供了一種更新腳本的方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本申請(qǐng)實(shí)施例一所提供的方法實(shí)施例可以在移動(dòng)終端、計(jì)算機(jī)終端、服務(wù)器或者類似的運(yùn)算裝置中執(zhí)行。以運(yùn)行在計(jì)算機(jī)終端上為例,圖1是本發(fā)明實(shí)施例的一種更新腳本的方法的計(jì)算機(jī)終端的硬件結(jié)構(gòu)框圖。如圖1所示,計(jì)算機(jī)終端10可以包括一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器102(處理器102可以包括但不限于微處理器mcu或可編程邏輯器件fpga等的處理裝置)、用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器104、以及用于通信功能的傳輸裝置106。本領(lǐng)域普通技術(shù)人員可以理解,圖1所示的結(jié)構(gòu)僅為示意,其并不對(duì)上述電子裝置的結(jié)構(gòu)造成限定。例如,計(jì)算機(jī)終端10還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。
存儲(chǔ)器104可用于存儲(chǔ)應(yīng)用軟件的軟件程序以及模塊,如本發(fā)明實(shí)施例中的更新腳本的方法對(duì)應(yīng)的程序指令/模塊,處理器102通過運(yùn)行存儲(chǔ)在存儲(chǔ)器104內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的更新腳本的方法。存儲(chǔ)器104可包括高速隨機(jī)存儲(chǔ)器,還可包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器104可進(jìn)一步包括相對(duì)于處理器102遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至計(jì)算機(jī)終端10。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
傳輸裝置106用于經(jīng)由一個(gè)網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù)。上述的網(wǎng)絡(luò)具體實(shí)例可包括計(jì)算機(jī)終端10的通信供應(yīng)商提供的無線網(wǎng)絡(luò)。在一個(gè)實(shí)例中,傳輸裝置106包括一個(gè) 網(wǎng)絡(luò)適配器(networkinterfacecontroller,nic),其可通過基站與其他網(wǎng)絡(luò)設(shè)備相連從而可與互聯(lián)網(wǎng)進(jìn)行通訊。在一個(gè)實(shí)例中,傳輸裝置106可以為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進(jìn)行通訊。
在上述運(yùn)行環(huán)境下,本申請(qǐng)?zhí)峁┝巳鐖D2所示的更新腳本的方法。圖2是根據(jù)本發(fā)明實(shí)施例一的更新腳本的方法的流程圖。如圖2所示,該方法可以包括以下步驟:
步驟s202:根據(jù)寫入的處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本。
假設(shè)按照寫入時(shí)間的先后順序在上述待更新腳本集合存在:腳本1、腳本2、腳本3、腳本4、腳本5和腳本6總共這6個(gè)腳本,那么按照寫入時(shí)間的先后順序?qū)@6個(gè)腳本執(zhí)行更新操作則需要從腳本1至腳本6順次執(zhí)行。如果在當(dāng)前時(shí)刻已經(jīng)完成腳本1、腳本2和腳本3這3個(gè)腳本的更新操作,處理進(jìn)度標(biāo)識(shí)最新記錄的應(yīng)該是腳本3的標(biāo)識(shí),其表明按照上述處理順序在腳本3之前(包括腳本3)的全部腳本已經(jīng)更新完畢。
步驟s204:根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
在優(yōu)選實(shí)施過程中,上述待更新腳本集合可以包括以下之一:
(1)在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本;
(2)在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本以及從開始執(zhí)行腳本更新操作至當(dāng)前時(shí)刻新接收到的多個(gè)待更新腳本。
仍然以上述示例加以說明,如果處理進(jìn)度標(biāo)識(shí)最新記錄的是腳本3的標(biāo)識(shí),即在腳本3之前(包括腳本3)的全部腳本已經(jīng)更新完畢,那么在待更新腳本集合中未完成更新的腳本則是腳本4、腳本5和腳本6。當(dāng)然,如果在對(duì)待更新腳本集合中執(zhí)行更新的過程中,服務(wù)器有可能會(huì)因?yàn)榘l(fā)生重啟或假死的情況被迫中斷執(zhí)行更新,而在此期間有可能會(huì)新增多個(gè)待更新腳本,例如:腳本7、腳本8……,這樣,在未完成更新的腳本中除了包括上述腳本4、腳本5和腳本6,還需要包括新增的待更新腳本(例如:腳本7、腳本8……)。
采用如圖2所示的方法,采用在每臺(tái)服務(wù)器中設(shè)置處理進(jìn)度標(biāo)識(shí)的方式,通過該處理進(jìn)度標(biāo)識(shí)始終記錄每臺(tái)服務(wù)器當(dāng)前已經(jīng)完成更新的腳本信息,并且根據(jù)該處理進(jìn)度標(biāo)識(shí)對(duì)每臺(tái)服務(wù)器未更新的全部腳本完成更新操作。即通過設(shè)置處理進(jìn)度標(biāo)識(shí)實(shí)時(shí)跟蹤記錄每臺(tái)服務(wù)器最新完成更新的腳本,從而能夠有效地避免每臺(tái)服務(wù)器在腳本更 新過程中遺漏未更新的腳本,此外,由于每臺(tái)服務(wù)器均需要將當(dāng)前寫入的腳本全部更新完畢,繼而還能夠有效地保持多臺(tái)服務(wù)器之間的腳本更新進(jìn)度保持同步,進(jìn)而解決了相關(guān)技術(shù)中所采用的腳本更新方案在單個(gè)服務(wù)器對(duì)多個(gè)腳本進(jìn)行更新的過程中容易造成遺漏或者多個(gè)服務(wù)器的腳本更新過程不同步的技術(shù)問題。
可選地,在步驟s202中,根據(jù)處理順序確定處理進(jìn)度標(biāo)識(shí)可以包括以下操作:
步驟s1:按照處理順序?yàn)榇履_本集合中的每個(gè)待更新腳本分配處理順序標(biāo)識(shí);
步驟s2:根據(jù)為每個(gè)待更新腳本分配的處理順序標(biāo)識(shí)獲取與當(dāng)前時(shí)刻對(duì)應(yīng)的最新完成更新的腳本的處理順序標(biāo)識(shí);
步驟s3:將獲取到的處理順序標(biāo)識(shí)設(shè)置為處理進(jìn)度標(biāo)識(shí)。
在優(yōu)選實(shí)施例中,本發(fā)明優(yōu)選實(shí)施例所提供的腳本發(fā)布過程(即腳本更新過程)可以分為腳本編輯器,發(fā)布隊(duì)列,規(guī)則引擎三個(gè)部分;其中,各個(gè)部分所要實(shí)現(xiàn)的具體功能如下:
(1)腳本編輯器由用戶對(duì)腳本進(jìn)行編輯,然后再將腳本內(nèi)容保存至數(shù)據(jù)庫,并向發(fā)布隊(duì)列提交發(fā)布動(dòng)作,這些發(fā)布的腳本除了腳本標(biāo)識(shí)相同只更新其中一個(gè)之外,每臺(tái)服務(wù)器均需要對(duì)全部已經(jīng)發(fā)布的腳本完成更新操作;
(2)發(fā)布隊(duì)列為每個(gè)發(fā)布動(dòng)作分配一個(gè)按照預(yù)設(shè)順序(例如:遞增順序)設(shè)置的標(biāo)識(shí)(id)信息,并維護(hù)發(fā)布信息;
(3)規(guī)則引擎內(nèi)的每一臺(tái)服務(wù)器分別記錄自身在發(fā)布隊(duì)列中的處理進(jìn)度,按照遞增的順序處理發(fā)布動(dòng)作,并在發(fā)生重啟、假死的情況下也能夠確保發(fā)布動(dòng)作不會(huì)因被遺漏而未被正常執(zhí)行。
圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例一的腳本更新過程的整體示意圖。如圖3所示,腳本編輯器在用戶提交發(fā)布動(dòng)作時(shí),將發(fā)布操作的腳本類型以及腳本自身的標(biāo)識(shí)(sid)寫入發(fā)布隊(duì)列(該發(fā)布隊(duì)列可以存儲(chǔ)于數(shù)據(jù)庫中),并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后再由發(fā)布隊(duì)列按照上述處理順序(例如:id遞增的順序)為寫入的腳本分配處理順序標(biāo)識(shí)id。另外,每臺(tái)規(guī)則引擎服務(wù)器均設(shè)置有變量i,其用于記錄該規(guī)則引擎服務(wù)器當(dāng)前最新處理過的腳本的處理順序標(biāo)識(shí)id。
例如:在t1時(shí)刻,用戶編寫了sid為100的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(100)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=1。
在t2(t2>t1)時(shí)刻,用戶編寫了sid為105的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(105)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=2。
在t3(t3>t2)時(shí)刻,用戶編寫了sid為103的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(103)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=3。
在t4(t4>t3)時(shí)刻,用戶編寫了sid為105的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(105)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=4。
在t5(t5>t4)時(shí)刻,用戶編寫了sid為107的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(107)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=5。
在t6(t6>t5)時(shí)刻,用戶編寫了sid為105的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(105)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=6。
在t7(t7>t6,當(dāng)前最新時(shí)刻)時(shí)刻,用戶編寫了sid為104的腳本,并通過腳本編輯器提交發(fā)布動(dòng)作,將該腳本的腳本類型和sid(104)寫入發(fā)布隊(duì)列,并將腳本內(nèi)容寫入數(shù)據(jù)庫。然后,發(fā)布隊(duì)列按照id遞增的順序?yàn)樵撃_本分配處理順序標(biāo)識(shí)id=7。
假設(shè)規(guī)則引擎服務(wù)器1在t5時(shí)刻啟動(dòng),則規(guī)則引擎服務(wù)器1首先需要將變量i設(shè)置為當(dāng)前最大的id值(即id=5);其次,規(guī)則引擎服務(wù)器1將當(dāng)前存在的全部腳本(即id為1、sid為100的腳本,id為4、sid為105的腳本,id為3、sid為103的腳本以及id為5、sid為107的腳本)加載至內(nèi)存并按照id增大的順序依次執(zhí)行更新操作;然后,規(guī)則引擎服務(wù)器1再開始執(zhí)行后續(xù)的腳本更新流程,即依次執(zhí)行如下腳本更新過程:采用id為6、sid為105的腳本對(duì)id為4、sid為105的腳本進(jìn)行更新以及加載新的id為7、sid為104的腳本并執(zhí)行更新操作。
假設(shè)規(guī)則引擎服務(wù)器2在t3時(shí)刻啟動(dòng),則規(guī)則引擎服務(wù)器2首先需要將變量i設(shè)置為當(dāng)前最大的id值(即id=3);其次,規(guī)則引擎服務(wù)器2將當(dāng)前存在的全部腳本(即id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本)加載至內(nèi)存并按照id增大的順序依次執(zhí)行更新操作;然后,規(guī)則引擎服務(wù)器2再開始執(zhí)行后續(xù)的腳本更新流程,即依次執(zhí)行如下腳本更新過程:加載id為5、sid為107的腳本并執(zhí)行更新操作,采用id為6、sid為105的腳本對(duì)id為2、sid為105 的腳本進(jìn)行更新以及加載新的id為7,sid為104的腳本并執(zhí)行更新操作。
假設(shè)規(guī)則引擎服務(wù)器3在t6時(shí)刻啟動(dòng),則規(guī)則引擎服務(wù)器3首先需要將變量i設(shè)置為當(dāng)前最大的id值(即id=6);其次,規(guī)則引擎服務(wù)器3將當(dāng)前存在的全部腳本(即id為1、sid為100的腳本,id為6、sid為105的腳本,id為3、sid為103的腳本以及id為5、sid為107的腳本)加載至內(nèi)存并按照id增大的順序依次執(zhí)行更新操作。然后,規(guī)則引擎服務(wù)器3再開始執(zhí)行后續(xù)的腳本更新流程,即加載新的id為7,sid為104的腳本并執(zhí)行更新操作。
可選地,在步驟s204中,根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)未更新的腳本執(zhí)行更新操作可以包括以下步驟:
步驟s4:根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本;
以上述圖3中的規(guī)則引擎服務(wù)器2為例,由于規(guī)則引擎服務(wù)器2在t3時(shí)刻啟動(dòng),因此,規(guī)則引擎服務(wù)器2首先需要將變量i設(shè)置為當(dāng)前最大的id值(即id=3);其次,規(guī)則引擎服務(wù)器2將當(dāng)前存在的全部腳本(即id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本)加載至內(nèi)存并按照id增大的順序依次執(zhí)行更新操作。此時(shí)已經(jīng)完成更新的腳本便包含有id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本,而處理進(jìn)度標(biāo)識(shí)即為id為3、sid為103的腳本的處理順序標(biāo)識(shí)(即i=3)。然后,規(guī)則引擎服務(wù)器2再開始執(zhí)行后續(xù)的腳本更新流程,那么,此時(shí)未更新的腳本即為id為4、sid為105的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本以及id為7,sid為104的腳本。
步驟s5:判斷未更新的腳本中是否存在腳本標(biāo)識(shí)相同的多個(gè)腳本;
以上述圖3中的規(guī)則引擎服務(wù)器2為例,在未更新的腳本中,id為4、sid為105的腳本與id為6、sid為105的腳本為腳本標(biāo)識(shí)相同的兩個(gè)腳本,即在未更新的腳本中存在腳本標(biāo)識(shí)相同的多個(gè)腳本。
步驟s6:如果存在,則根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本,并對(duì)篩選后的未更新的腳本執(zhí)行更新操作;如果不存在,則按照處理順序?qū)ξ锤碌哪_本執(zhí)行更新操作。
以上述圖3中的規(guī)則引擎服務(wù)器2為例,假設(shè)采用的處理順序?yàn)閕d遞增順序,則規(guī)則引擎服務(wù)器2會(huì)從id為4、sid為105的腳本與id為6、sid為105的腳本選取id值較大的id為6、sid為105的腳本加以保留,然后再依次執(zhí)行如下腳本更新過程:加載id為5、sid為107的腳本并執(zhí)行更新操作,采用id為6、sid為105的腳本對(duì) id為6、sid為105的腳本進(jìn)行更新以及加載新的id為7,sid為104的腳本并執(zhí)行更新操作。
可選地,在步驟s4中,根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本可以包括以下操作:
步驟s41:在處理順序?yàn)榘凑仗幚眄樞驑?biāo)識(shí)由小到大依次對(duì)待更新腳本集合中的每個(gè)待更新腳本進(jìn)行更新的情況下,判斷待更新腳本集合中是否存在處理順序標(biāo)識(shí)大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本;
步驟s42:如果存在,則將大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本確定為未更新的腳本。
仍然以上述圖3中的規(guī)則引擎服務(wù)器2為例,由于規(guī)則引擎服務(wù)器2在t3時(shí)刻啟動(dòng),因此,規(guī)則引擎服務(wù)器2首先需要將變量i設(shè)置為當(dāng)前最大的id值(即id=3);其次,規(guī)則引擎服務(wù)器2將當(dāng)前存在的全部腳本(即id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本)加載至內(nèi)存并按照id增大的順序依次執(zhí)行更新操作。此時(shí)已經(jīng)完成更新的腳本便包含有id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本,而處理進(jìn)度標(biāo)識(shí)即為id為3、sid為103的腳本的處理順序標(biāo)識(shí)(即i=3)。然后,規(guī)則引擎服務(wù)器2再開始執(zhí)行后續(xù)的腳本更新流程時(shí),需要獲取id值大于3的全部腳本,那么,此時(shí)未更新的腳本即為id為4、sid為105的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本以及id為7,sid為104的腳本。
可選地,在步驟s6中,根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本可以包括以下步驟:
步驟s61:按照處理順序從未更新的腳本中選取腳本標(biāo)識(shí)相同的多個(gè)腳本;
步驟s62:對(duì)腳本標(biāo)識(shí)相同的多個(gè)腳本中每個(gè)腳本對(duì)應(yīng)的處理順序標(biāo)識(shí)進(jìn)行比較,選取并保留處理順序標(biāo)識(shí)最大的腳本。即,如上所述,在假設(shè)采用的處理順序?yàn)閕d遞增順序的情況下,規(guī)則引擎服務(wù)器2會(huì)從id為4、sid為105的腳本與id為6、sid為105的腳本選取id值較大的id為6、sid為105的腳本加以保留。
作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例一的規(guī)則引擎服務(wù)器處理發(fā)布隊(duì)列的示意圖。如圖4所示,規(guī)則引擎服務(wù)器處理發(fā)布隊(duì)列的流程可以包括如下步驟:
步驟s402:定時(shí)(例如:1秒)掃描新的(即id>i)發(fā)布操作,將新的發(fā)布操作列表從數(shù)據(jù)庫讀入內(nèi)存;
假設(shè)規(guī)則引擎服務(wù)器首次掃描并處理的是id為1、sid為100的腳本。當(dāng)再次掃描時(shí),則需要獲取全部id大于1的腳本。經(jīng)過掃描得到id為2、sid為105的腳本,id為3、sid為103的腳本,id為4、sid為105的腳本,id為5、sid為107的腳本,以及id為6、sid為105的腳本,因此,得到的id列表為:{id=2,id=3,id=4,id=5,id=6}。
步驟s404:查詢發(fā)布操作列表中是否存在相同版本的腳本,如果存在,則刪除id較小的腳本,即,如果在發(fā)布操作列表中存在相同版本的腳本的情況下,僅保留id最大的腳本,從而避免腳本重復(fù)發(fā)布。
基于上述示例可以發(fā)現(xiàn),id=2,id=4以及id=6的腳本sid均為105,因此,需要保留id最大的腳本(即id=6的腳本),從而避免腳本重復(fù)發(fā)布。在執(zhí)行刪除操作過后得到的id列表為:{id=3,id=5,id=6}。
步驟s406:循環(huán)處理上述發(fā)布操作列表,并將i更新為最新執(zhí)行的腳本id。
仍然基于上述示例,規(guī)則引擎服務(wù)器依次處理id為3、sid為103的腳本,id為5、sid為107的腳本以及id為6、sid為105的腳本,規(guī)則引擎服務(wù)器的i值也更新為i=6,并等待處理即將發(fā)布的id為7、sid為104的腳本。
可選地,在步驟s204中,根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)未更新的腳本執(zhí)行更新操作還可以包括以下操作:
步驟s7:采用以下方式之一對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新:
方式一、在按照處理順序每次更新完成一個(gè)腳本后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行實(shí)時(shí)更新;
在優(yōu)選實(shí)施例中,規(guī)則引擎服務(wù)器可以采用在每完成一次腳本更新的情況下實(shí)時(shí)更新i的取值,例如:規(guī)則引擎服務(wù)器在加載id為5、sid為107的腳本并執(zhí)行更新操作后將i的取值設(shè)置為5,在采用id為6、sid為105的腳本對(duì)id為6、sid為105的腳本進(jìn)行更新后將i的取值設(shè)置為6,以及在加載新的id為7,sid為104的腳本并執(zhí)行更新操作后將i的取值設(shè)置為7。
方式二、在按照處理順序?qū)⑽锤碌哪_本全部更新完畢后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
當(dāng)然,規(guī)則引擎服務(wù)器也可以采用在對(duì)一組待更新腳本全部完成更新的情況下,再更新i的取值,例如:規(guī)則引擎服務(wù)器在加載id為5、sid為107的腳本并執(zhí)行更新操作后將i的取值保持不變,在采用id為6、sid為105的腳本對(duì)id為6、sid為 105的腳本進(jìn)行更新后將i的取值保持不變,以及在加載新的id為7,sid為104的腳本并執(zhí)行更新操作后才將i的取值直接設(shè)置為7。
下面將結(jié)合兩個(gè)優(yōu)選實(shí)施例分別對(duì)規(guī)則引擎服務(wù)器因特定原因發(fā)生重啟或假死的情形做進(jìn)一步地詳細(xì)描述。
作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例一的在服務(wù)器因發(fā)生故障而需要重啟的情況下,規(guī)則引擎服務(wù)器的處理流程的示意圖。如圖5所示,當(dāng)服務(wù)器因發(fā)生故障而需要重啟時(shí),規(guī)則引擎服務(wù)器的處理流程可以包括如下步驟:
步驟s502:將i設(shè)置為當(dāng)前發(fā)布隊(duì)列的最大id值;
規(guī)則引擎服務(wù)器在依次處理id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本后,因特定原因(例如:發(fā)生故障)而產(chǎn)生服務(wù)器重啟現(xiàn)象。此時(shí),為了避免影響腳本的正常發(fā)布,則需要將規(guī)則引擎服務(wù)器設(shè)置為當(dāng)前發(fā)布隊(duì)列的最大id值(即i=3),然后再開始執(zhí)行重啟操作。
需要說明的是,關(guān)于上述發(fā)生在規(guī)則引擎服務(wù)器重啟前已經(jīng)更新的腳本信息(即id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本)以及當(dāng)前的i值都可以存在于腳本數(shù)據(jù)庫或者其他單獨(dú)設(shè)置用于存儲(chǔ)這類信息的存儲(chǔ)區(qū)域中,以便規(guī)則引擎服務(wù)器能夠在通過執(zhí)行重啟操作恢復(fù)正常工作后,能夠繼續(xù)完成腳本更新操作。
步驟s504:全量加載腳本,加載完畢后的腳本狀態(tài)處于不小于i的狀態(tài);
當(dāng)規(guī)則引擎服務(wù)器的重啟操作執(zhí)行完畢后,需要從腳本數(shù)據(jù)庫中讀取該腳本數(shù)據(jù)庫存儲(chǔ)的全部腳本(即上述全量加載腳本),這些腳本均被記錄在與上述發(fā)布隊(duì)列不同的另外存儲(chǔ)區(qū)域中,例如:id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103的腳本,id為4、sid為109的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本,id為7、sid為104的腳本。
步驟s506:繼續(xù)重復(fù)執(zhí)行上述步驟s402-步驟s406的規(guī)則引擎處理流程,加載重啟過程中新增的發(fā)布操作以及后續(xù)的發(fā)布操作。
具體地,如果在規(guī)則引擎服務(wù)器的重啟階段,發(fā)布隊(duì)列中又依次從腳本編輯器接收到了id為4、sid為109的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本以及id為7、sid為104的腳本,那么,通過上述全量加載腳本,規(guī)則引擎服務(wù)器可以從i=3(id=3)開始,獲取到id大于3的全部腳本。由此,規(guī)則引擎服務(wù)器從id為1、sid為100的腳本,id為2、sid為105的腳本以及id為3、sid為103 的腳本,id為4、sid為109的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本以及id為7、sid為104的腳本這些全部腳本中得到id為4、sid為109的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本以及id為7、sid為104的腳本。因此,最終得到的id列表為:{id=4,id=5,id=6,id=7}。規(guī)則引擎服務(wù)器通過比較發(fā)現(xiàn),id列表中并不存在sid重復(fù)的腳本,因此,在經(jīng)過是否存在sid重復(fù)的腳本篩查過后,id列表依舊為:{id=4,id=5,id=6,id=7},于是,規(guī)則引擎服務(wù)器便可以依次采用id為4、sid為109的腳本,id為5、sid為107的腳本,id為6、sid為105的腳本以及id為7、sid為104的腳本執(zhí)行更新操作。
作為本發(fā)明的另外一個(gè)優(yōu)選實(shí)施例,當(dāng)服務(wù)器出現(xiàn)臨時(shí)假死時(shí),發(fā)布操作將無法被立即執(zhí)行,而一旦服務(wù)器從假死狀態(tài)恢復(fù)至正常工作狀態(tài),那么服務(wù)器便會(huì)恢復(fù)對(duì)發(fā)布隊(duì)列的掃描,進(jìn)而加載未完成的發(fā)布操作。
仍然以上述圖3為例,假設(shè)規(guī)則引擎服務(wù)器2在t2時(shí)刻啟動(dòng),則規(guī)則引擎服務(wù)器2首先需要將變量i設(shè)置為當(dāng)前最大的id值(即id=2),然后將當(dāng)前存在的全部腳本(即id為1、sid為100的腳本和id為2、sid為105的腳本)加載至內(nèi)存。然后,再開始執(zhí)行后續(xù)的腳本更新流程,當(dāng)規(guī)則引擎服務(wù)器2從t2時(shí)刻運(yùn)行至t3時(shí)刻,如果規(guī)則引擎服務(wù)器2在t3時(shí)刻發(fā)生假死,則id為3、sid為103的腳本將有可能被中斷執(zhí)行。
當(dāng)規(guī)則引擎服務(wù)器2經(jīng)過一段時(shí)間從假死狀態(tài)恢復(fù)至正常工作后,規(guī)則引擎服務(wù)器2首先獲取當(dāng)前時(shí)刻最新完成更新的id為2、sid為105的腳本并將i的取值設(shè)置為2,然后再通過掃描獲取未完成更新的(id大于2)的全部腳本,即id為3、sid為103的腳本,以及在規(guī)則引擎服務(wù)器2發(fā)生假死這段期間用戶通過腳本編輯器寫入發(fā)布隊(duì)列的(id大于2)的全部腳本,即id為4、sid為105的腳本,id為5、sid為107的腳本,以及id為6、sid為105的腳本,得到的id列表為:{id=3,id=4,id=5,id=6}。規(guī)則引擎服務(wù)器2經(jīng)過比較發(fā)現(xiàn)id=4與id=6的腳本sid均為105,因此,需要保留id最大的腳本(即id=6的腳本),從而避免腳本重復(fù)發(fā)布。在執(zhí)行刪除操作過后得到的id列表為:{id=3,id=5,id=6}?;谏鲜鲎罱K得到的id列表{id=3,id=5,id=6},規(guī)則引擎服務(wù)器2依次采用id為3、sid為103的腳本,id為5、sid為107的腳本以及id為6、sid為105的腳本,同時(shí),規(guī)則引擎服務(wù)器2的i值也更新為i=6,并等待處理即將發(fā)布的id為7、sid為104的腳本。
在上述運(yùn)行環(huán)境下,本申請(qǐng)?zhí)峁┝巳鐖D6所示的另一種更新腳本的方法。圖6是根據(jù)本發(fā)明實(shí)施例一的另一種更新腳本的方法的流程圖。如圖6所示,該方法可以包括以下步驟:
步驟s602:根據(jù)處理順序分別確定多個(gè)服務(wù)器中的每個(gè)服務(wù)器在當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄對(duì)應(yīng)的服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;
步驟s604:根據(jù)處理進(jìn)度標(biāo)識(shí)向?qū)?yīng)的服務(wù)器發(fā)送指示信息,其中,指示信息用于指示對(duì)應(yīng)的服務(wù)器對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
在優(yōu)選實(shí)施例中,可以采用獨(dú)立的客戶端或者服務(wù)器對(duì)需要執(zhí)行腳本更新操作的多個(gè)服務(wù)器進(jìn)行統(tǒng)一控制,該客戶端或服務(wù)器接收用戶通過腳本編輯器寫入的多個(gè)待更新腳本,按照寫入順序?qū)⒍鄠€(gè)待更新腳本存儲(chǔ)至發(fā)布隊(duì)列。另外,該客戶端或服務(wù)器還統(tǒng)一管理每個(gè)服務(wù)器在當(dāng)前時(shí)刻最新的處理進(jìn)度標(biāo)識(shí),并根據(jù)處理進(jìn)度標(biāo)識(shí)來指示對(duì)應(yīng)的服務(wù)器對(duì)未完成更新的多個(gè)待更新腳本執(zhí)行更新操作。
可選地,在步驟s604根據(jù)處理進(jìn)度標(biāo)識(shí)向?qū)?yīng)的服務(wù)器發(fā)送指示信息之后,還可以包括以下執(zhí)行步驟:
步驟s606:接收對(duì)應(yīng)的服務(wù)器返回的響應(yīng)消息,其中,響應(yīng)消息用于表示對(duì)應(yīng)的服務(wù)器按照指示信息對(duì)未更新的腳本的完成進(jìn)度;根據(jù)響應(yīng)消息對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
在優(yōu)選實(shí)施例中,如果具體的特定服務(wù)器根據(jù)指示信息對(duì)未更新的腳本執(zhí)行更新操作以后,該服務(wù)器可以將對(duì)未更新的腳本的更新進(jìn)度及時(shí)反饋至負(fù)責(zé)統(tǒng)一管理的服務(wù)器或終端,以便對(duì)其內(nèi)部存儲(chǔ)的與該服務(wù)器對(duì)應(yīng)的處理進(jìn)度標(biāo)識(shí)進(jìn)行更新,以確保腳本更新過程的一致性,避免造成對(duì)未更新腳本的遺漏或者重復(fù)更新。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的更新腳本的方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī) 軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
實(shí)施例二
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述更新腳本的裝置的結(jié)構(gòu)框圖,如圖7所示,該裝置包括:確定模塊10,用于根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;更新模塊20,用于根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
在優(yōu)選實(shí)施過程中,上述待更新腳本集合可以包括以下之一:
(1)在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本;
(2)在按照處理順序開始執(zhí)行腳本更新操作時(shí)已經(jīng)接收到的多個(gè)待更新腳本以及從開始執(zhí)行腳本更新操作至當(dāng)前時(shí)刻新接收到的多個(gè)待更新腳本。
可選地,圖8是根據(jù)本發(fā)明優(yōu)選實(shí)施例二的更新腳本的裝置的結(jié)構(gòu)框圖。如圖8所示,確定模塊10可以包括:分配單元100,用于按照處理順序?yàn)榇履_本集合中的每個(gè)待更新腳本分配處理順序標(biāo)識(shí);第一獲取單元102,用于根據(jù)為每個(gè)待更新腳本分配的處理順序標(biāo)識(shí)獲取與當(dāng)前時(shí)刻對(duì)應(yīng)的最新完成更新的腳本的處理順序標(biāo)識(shí);設(shè)置單元,用于將獲取到的處理順序標(biāo)識(shí)設(shè)置為處理進(jìn)度標(biāo)識(shí)。
可選地,如圖8所示,更新模塊20可以包括:第二獲取單元200,用于根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本;判斷單元202,用于判斷未更新的腳本中是否存在腳本標(biāo)識(shí)相同的多個(gè)腳本;更新單元204,用于在判斷單元輸出為是時(shí),根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本,并對(duì)篩選后的未更新的腳本執(zhí)行更新操作;或者,在判斷單元輸出為否時(shí),按照處理順序?qū)ξ锤碌哪_本執(zhí)行更新操作。
可選地,第二獲取單元200可以包括:判斷子單元(圖中未示出),用于在處理順序?yàn)榘凑仗幚眄樞驑?biāo)識(shí)由小到大依次對(duì)待更新腳本集合中的每個(gè)待更新腳本進(jìn)行更新的情況下,判斷待更新腳本集合中是否存在處理順序標(biāo)識(shí)大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本;確定單元(圖中未示出),用于在判斷子單元輸出為是時(shí),將大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本確定為未更新的腳本。
可選地,更新單元204可以包括:選取子單元(圖中未示出),用于按照處理順序從未更新的腳本中選取腳本標(biāo)識(shí)相同的多個(gè)腳本;比較子單元(圖中未示出),用于對(duì)腳本標(biāo)識(shí)相同的多個(gè)腳本中每個(gè)腳本對(duì)應(yīng)的處理順序標(biāo)識(shí)進(jìn)行比較,選取并保留處理順序標(biāo)識(shí)最大的腳本。
可選地,更新模塊20,還用于采用以下方式之一對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新:在按照處理順序每次更新完成一個(gè)腳本后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行實(shí)時(shí)更新;在按照處理順序?qū)⑽锤碌哪_本全部更新完畢后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
實(shí)施例三
本發(fā)明的實(shí)施例可以提供一種計(jì)算機(jī)終端,該計(jì)算機(jī)終端可以是計(jì)算機(jī)終端群中的任意一個(gè)計(jì)算機(jī)終端設(shè)備??蛇x地,在本實(shí)施例中,上述計(jì)算機(jī)終端也可以替換為移動(dòng)終端等終端設(shè)備。
可選地,在本實(shí)施例中,上述計(jì)算機(jī)終端可以位于計(jì)算機(jī)網(wǎng)絡(luò)的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備。
在本實(shí)施例中,上述計(jì)算機(jī)終端可以執(zhí)行更新腳本的方法中以下步驟的程序代碼:
可選地,圖9是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)終端的結(jié)構(gòu)框圖。如圖9所示,該計(jì)算機(jī)終端可以包括:一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器以及存儲(chǔ)器。
其中,存儲(chǔ)器可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的更新腳本的方法和裝置對(duì)應(yīng)的程序指令/模塊,處理器通過運(yùn)行存儲(chǔ)在存儲(chǔ)器內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的更新腳本的方法。存儲(chǔ)器可包括高速隨機(jī)存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器可進(jìn)一步包括相對(duì)于處理器遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至終端。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
處理器可以通過傳輸裝置調(diào)用存儲(chǔ)器存儲(chǔ)的信息及應(yīng)用程序,以執(zhí)行下述步驟:
s1:根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;
s2:根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:按照處理順序?yàn)榇履_本集合中的每個(gè)待更新腳本分配處理順序標(biāo)識(shí);根據(jù)為每個(gè)待更新腳本分配的處理順序標(biāo)識(shí)獲取與當(dāng)前時(shí)刻對(duì)應(yīng)的最新完成更新的腳本的處理順序標(biāo)識(shí);將獲取到的處理順序標(biāo)識(shí)設(shè)置為處理進(jìn)度標(biāo)識(shí)。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本;判斷未更新的腳本中是否存在腳本標(biāo)識(shí)相同的多個(gè)腳本;如果存在,則根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本,并對(duì)篩選后的未更新的腳本執(zhí)行更新操作;如果不存在,則按照處理順序?qū)ξ锤碌哪_本執(zhí)行更新操作。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:在處理順序?yàn)榘凑仗幚眄樞驑?biāo)識(shí)由小到大依次對(duì)待更新腳本集合中的每個(gè)待更新腳本進(jìn)行更新的情況下,判斷待更新腳本集合中是否存在處理順序標(biāo)識(shí)大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本;如果存在,則將大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本確定為未更新的腳本。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:按照處理順序從未更新的腳本中選取腳本標(biāo)識(shí)相同的多個(gè)腳本;對(duì)腳本標(biāo)識(shí)相同的多個(gè)腳本中每個(gè)腳本對(duì)應(yīng)的處理順序標(biāo)識(shí)進(jìn)行比較,選取并保留處理順序標(biāo)識(shí)最大的腳本。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)未更新的腳本執(zhí)行更新操作還包括:采用以下方式之一對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新:在按照處理順序每次更新完成一個(gè)腳本后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行實(shí)時(shí)更新;在按照處理順序?qū)⑽锤碌哪_本全部更新完畢后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
通過本發(fā)明實(shí)施例,采用在每臺(tái)服務(wù)器中設(shè)置處理進(jìn)度標(biāo)識(shí)的方式,通過該處理進(jìn)度標(biāo)識(shí)始終記錄每臺(tái)服務(wù)器當(dāng)前已經(jīng)完成更新的腳本信息,并且根據(jù)該處理進(jìn)度標(biāo)識(shí)對(duì)每臺(tái)服務(wù)器未更新的全部腳本完成更新操作,從而能夠有效地避免每臺(tái)服務(wù)器在腳本更新過程中遺漏未更新的腳本,此外,還能夠有效地保持多臺(tái)服務(wù)器之間的腳本更新進(jìn)度保持同步,進(jìn)而解決了相關(guān)技術(shù)中所采用的腳本更新方案在單個(gè)服務(wù)器對(duì)多個(gè)腳本進(jìn)行更新的過程中容易造成遺漏或者多個(gè)服務(wù)器的腳本更新過程不同步的技術(shù)問題。
本領(lǐng)域普通技術(shù)人員可以理解,圖9所示的結(jié)構(gòu)僅為示意,計(jì)算機(jī)終端也可以是智能手機(jī)(如android手機(jī)、ios手機(jī)等)、平板電腦、掌聲電腦以及移動(dòng)互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,mid)、pad等終端設(shè)備。圖9其并不對(duì)上述電子裝置的結(jié)構(gòu)造成限定。例如,計(jì)算機(jī)終端還可包括比圖9中所示更多或者更少的組件(如網(wǎng) 絡(luò)接口、顯示裝置等),或者具有與圖9所示不同的配置。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設(shè)備相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤、只讀存儲(chǔ)器(read-onlymemory,rom)、隨機(jī)存取器(randomaccessmemory,ram)、磁盤或光盤等。
實(shí)施例四
本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以用于保存上述實(shí)施例一所提供的更新腳本的方法所執(zhí)行的程序代碼。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以位于計(jì)算機(jī)網(wǎng)絡(luò)中計(jì)算機(jī)終端群中的任意一個(gè)計(jì)算機(jī)終端中,或者位于移動(dòng)終端群中的任意一個(gè)移動(dòng)終端中。
可選地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
s1:根據(jù)處理順序確定當(dāng)前時(shí)刻的處理進(jìn)度標(biāo)識(shí),其中,處理順序?yàn)榇履_本集合中的腳本被處理時(shí)的次序,處理進(jìn)度標(biāo)識(shí)用于記錄服務(wù)器按照處理順序在當(dāng)前時(shí)刻最新完成更新的腳本;
s2:根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)待更新腳本集合中未更新的腳本執(zhí)行更新操作。
存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:按照處理順序?yàn)榇履_本集合中的每個(gè)待更新腳本分配處理順序標(biāo)識(shí);根據(jù)為每個(gè)待更新腳本分配的處理順序標(biāo)識(shí)獲取與當(dāng)前時(shí)刻對(duì)應(yīng)的最新完成更新的腳本的處理順序標(biāo)識(shí);將獲取到的處理順序標(biāo)識(shí)設(shè)置為處理進(jìn)度標(biāo)識(shí)。
存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:根據(jù)處理順序和處理進(jìn)度標(biāo)識(shí)獲取未更新的腳本;判斷未更新的腳本中是否存在腳本標(biāo)識(shí)相同的多個(gè)腳本;如果存在,則根據(jù)處理順序從腳本標(biāo)識(shí)相同的多個(gè)腳本中保留其中一個(gè)腳本,并對(duì)篩選后的未更新的腳本執(zhí)行更新操作;如果不存在,則按照處理順序?qū)ξ锤碌哪_本執(zhí)行更新操作。
存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:在處理順序?yàn)榘凑仗幚眄樞驑?biāo)識(shí)由小到大依次對(duì)待更新腳本集合中的每個(gè)待更新腳本進(jìn)行更新的情況下,判斷待更新腳本集合中是否存在處理順序標(biāo)識(shí)大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本;如果存在,則將大于處理進(jìn)度標(biāo)識(shí)的多個(gè)腳本確定為未更新的腳本。
存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:按照處理順序從未更新的腳本中選取腳本標(biāo)識(shí)相同的多個(gè)腳本;對(duì)腳本標(biāo)識(shí)相同的多個(gè)腳本中每個(gè)腳本對(duì)應(yīng)的處理順序標(biāo)識(shí)進(jìn)行比較,選取并保留處理順序標(biāo)識(shí)最大的腳本。
存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:根據(jù)處理進(jìn)度標(biāo)識(shí)對(duì)未更新的腳本執(zhí)行更新操作還包括:采用以下方式之一對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新:在按照處理順序每次更新完成一個(gè)腳本后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行實(shí)時(shí)更新;在按照處理順序?qū)⑽锤碌哪_本全部更新完畢后,對(duì)處理進(jìn)度標(biāo)識(shí)進(jìn)行更新。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。