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