本申請(qǐng)屬于計(jì)算機(jī)數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種內(nèi)存數(shù)據(jù)的同步處理方法、裝置、服務(wù)器及系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)信息技術(shù)的發(fā)展和互聯(lián)網(wǎng)應(yīng)用的普及,服務(wù)器需要處理的數(shù)據(jù)量也越來越大。單臺(tái)計(jì)算機(jī)已經(jīng)難以滿足一些大規(guī)模數(shù)據(jù)的處理需求,為此需要將多臺(tái)計(jì)算機(jī)聯(lián)合起來,構(gòu)成分布式服務(wù)系統(tǒng)。分布式服務(wù)系統(tǒng)可以使用大量廉價(jià)的計(jì)算機(jī)構(gòu)成計(jì)算機(jī)集群,通過該集群可以取代昂貴的高運(yùn)算速度的計(jì)算機(jī)進(jìn)行高速運(yùn)算和存儲(chǔ)。目前,分布式服務(wù)系統(tǒng)也成為諸多應(yīng)用領(lǐng)域中越來越重要的服務(wù)器的組建方式。
一般的,一些大型分布式服務(wù)系統(tǒng)通常包括業(yè)務(wù)核心系統(tǒng)、后臺(tái)數(shù)據(jù)庫以及外圍服務(wù)系統(tǒng)。所述業(yè)務(wù)核心系統(tǒng)通??梢园ǘ鄠€(gè)子系統(tǒng)服務(wù)器組成的子系統(tǒng)集群,這些子系統(tǒng)集群中的子服務(wù)器可以加載讀取后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)。當(dāng)用戶的操作引起后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變更時(shí),為了保持整個(gè)分布式服務(wù)系統(tǒng)數(shù)據(jù)的同步,所述業(yè)務(wù)核心系統(tǒng)在觸發(fā)業(yè)務(wù)操作時(shí)往往需要實(shí)時(shí)讀取后臺(tái)數(shù)據(jù)庫的數(shù)據(jù)去更新當(dāng)前子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)。所述外圍服務(wù)系統(tǒng)也可以為多個(gè)外圍系統(tǒng)服務(wù)器組成的外圍系統(tǒng)集群。根據(jù)觸發(fā)的業(yè)務(wù)需求,所述外圍系統(tǒng)服務(wù)器可以訪問業(yè)務(wù)核心系統(tǒng)中相應(yīng)的子系統(tǒng)服務(wù)器,讀取所述子系統(tǒng)服務(wù)器內(nèi)存中的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的交互、處理等。
在分布式服務(wù)系統(tǒng)中,應(yīng)用系統(tǒng)的服務(wù)器常會(huì)有需要業(yè)務(wù)上進(jìn)行某個(gè)操作需要觸發(fā)相應(yīng)的程序、資源等數(shù)據(jù)更新。例如操作人員在后臺(tái)管理維護(hù)時(shí)更新用戶基本信息,此操作會(huì)引起后臺(tái)記錄用戶基本信息的后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變更。由于用戶基本信息通常是分布式服務(wù)系統(tǒng)中多個(gè)甚至所有業(yè)務(wù)依賴的基本信息,分布式服務(wù)系統(tǒng)中的各個(gè)應(yīng)用服務(wù)器通常也需要相應(yīng)的更新內(nèi)存數(shù)據(jù)。在子系統(tǒng)服務(wù)器內(nèi)存更新的過程中,如果未等到內(nèi)存中所有的資源加載完畢或加載失敗等而出現(xiàn)外圍系統(tǒng)服務(wù)器調(diào)用該子系統(tǒng)服務(wù)器當(dāng)前未被更新成最新內(nèi)存數(shù)據(jù)的歷史內(nèi)存數(shù)據(jù)時(shí),會(huì)造成多方應(yīng)用系統(tǒng)業(yè)務(wù)上使用的內(nèi)存數(shù)據(jù)不一致,可能導(dǎo)致業(yè)務(wù)系統(tǒng)資源受損、業(yè)務(wù)邏輯錯(cuò)誤甚至服務(wù)系統(tǒng)故障或者宕機(jī)等嚴(yán)重后果發(fā)生?,F(xiàn)有技術(shù)分布式服務(wù)系統(tǒng)中若被外圍系統(tǒng)服務(wù)器訪問的子系統(tǒng)服務(wù)器的實(shí)時(shí)更新內(nèi)存數(shù)據(jù)的過程還未 完成,會(huì)導(dǎo)致所述外圍系統(tǒng)服務(wù)器同步的內(nèi)存數(shù)據(jù)不是最新的實(shí)時(shí)數(shù)據(jù),對(duì)分布式服務(wù)系統(tǒng)中的業(yè)務(wù)系統(tǒng)應(yīng)用造成很大的風(fēng)險(xiǎn)。
同時(shí),如果外圍服務(wù)系統(tǒng)中的大量外圍服務(wù)器在同一時(shí)間內(nèi)或短時(shí)間內(nèi)訪問調(diào)用子系統(tǒng)服務(wù)器,在外圍系統(tǒng)服務(wù)器大并發(fā)的請(qǐng)求情況下往往會(huì)引起子系統(tǒng)同一時(shí)間內(nèi)讀取數(shù)據(jù)庫的輸入輸出接口訪問量過大以及業(yè)務(wù)核心系統(tǒng)的臨時(shí)緩存增大,如果讀取的數(shù)據(jù)量也較大的話,還很有可能引起內(nèi)存溢出。
因此,現(xiàn)有技術(shù)中內(nèi)存數(shù)據(jù)的同步處理方法還存在著外圍系統(tǒng)服務(wù)同步訪問的不是最新的內(nèi)存數(shù)據(jù),以及大并發(fā)的請(qǐng)求情況下還會(huì)大幅度增加后臺(tái)數(shù)據(jù)庫輸入輸出接口的訪問量和臨時(shí)緩存,增加了子系統(tǒng)內(nèi)存數(shù)據(jù)處理負(fù)載壓力,大大降低了子系統(tǒng)服務(wù)器甚至整個(gè)分布式服務(wù)系統(tǒng)運(yùn)行的可靠性。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例的目的在于提供一種內(nèi)存數(shù)據(jù)的同步處理方法、裝置、服務(wù)器及系統(tǒng),可以保障系統(tǒng)可以訪問讀取最新的內(nèi)存數(shù)據(jù),減少后臺(tái)數(shù)據(jù)庫io訪問量和內(nèi)存占用量,優(yōu)化內(nèi)存數(shù)據(jù)同步處理效率,提供系統(tǒng)運(yùn)行的可靠性。
本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法、裝置、服務(wù)器及系統(tǒng)是這樣實(shí)現(xiàn)的:
一種內(nèi)存數(shù)據(jù)的同步處理方法,所述方法包括:
接收到后臺(tái)數(shù)據(jù)庫更新的通知消息時(shí)將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
在接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;
當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;
當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
一種分布式系統(tǒng)內(nèi)存數(shù)據(jù)的同步處理方法,所述方法包括:
第一子系統(tǒng)服務(wù)器完成后臺(tái)數(shù)據(jù)庫數(shù)據(jù)更新后向子系統(tǒng)集群中的第二子系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的第一通知消息,以及向所述子系統(tǒng)集群的外圍系統(tǒng)集群中的外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的第二通知消息;
接收到所述第一通知消息的第二子系統(tǒng)服務(wù)器將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
接收到第二通知消息的外圍系統(tǒng)服務(wù)器向與所述外圍服務(wù)器相對(duì)應(yīng)的所述系統(tǒng)集群中的第三子系統(tǒng)服務(wù)器發(fā)送內(nèi)存同步更新請(qǐng)求;
所述第三子系統(tǒng)服務(wù)器在接收到所述外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷設(shè)置的所述第三子系統(tǒng)的內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間;
所述外圍系統(tǒng)服務(wù)器基于所述第三子系統(tǒng)服務(wù)器更新成功后的內(nèi)存數(shù)據(jù)進(jìn)行內(nèi)存數(shù)據(jù)同步更新。
一種內(nèi)存數(shù)據(jù)的同步處理裝置,所述裝置包括:
更新監(jiān)測(cè)模塊,用于接收到后臺(tái)數(shù)據(jù)庫更新的通知消息時(shí)將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
判斷模塊,用于在接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;
第一處理模塊,用于當(dāng)所述判斷模塊的判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;
第二處理模塊,用于當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
一種服務(wù)器,所述服務(wù)器包括:
輸入輸出接口,用于獲取后臺(tái)數(shù)據(jù)庫更新的通知消息,提供讀取后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行內(nèi)存更新的接口,以及提供外圍系統(tǒng)服務(wù)器訪問內(nèi)存數(shù)據(jù)進(jìn)行外圍系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)同步的接口;
處理單元,被設(shè)置成用于基于接收到后臺(tái)數(shù)據(jù)庫更新的通知消息時(shí)將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;還用于在接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后判斷所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;還用于當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;還用于當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
一種分布式系統(tǒng),包括至少一個(gè)子系統(tǒng)服務(wù)器的子系統(tǒng)集群和多個(gè)外圍系統(tǒng)服務(wù)器的外圍系統(tǒng)集群,執(zhí)行包括下述操作:
監(jiān)測(cè)到后臺(tái)數(shù)據(jù)庫更新時(shí)向所述外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的通知消息,以及將設(shè)置在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
接收到所述通知消息的外圍系統(tǒng)服務(wù)器向與所述外圍服務(wù)器相對(duì)應(yīng)的所述系統(tǒng)集群中的子系統(tǒng)服務(wù)器發(fā)送內(nèi)存同步更新請(qǐng)求;
接收到所述內(nèi)存同步請(qǐng)求的子系統(tǒng)服務(wù)器判斷設(shè)置在所述子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于當(dāng)前更新時(shí)間;
當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新,以及當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,并將更新后的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器;否則,讀取子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。
本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法、裝置、服務(wù)器及系統(tǒng),在分布式服務(wù)系統(tǒng)中業(yè)務(wù)核心系統(tǒng)和外圍服務(wù)系統(tǒng)的數(shù)據(jù)同步過程中,通過比較業(yè)務(wù)核心系統(tǒng)中子系統(tǒng)服務(wù)器的當(dāng)前更新時(shí)間和歷史更新時(shí)間的大小,可以智能判斷所述子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)是否需要更新,保證了所述外圍服務(wù)系統(tǒng)中的外圍系統(tǒng)服務(wù)器從所述子服務(wù)器讀取的內(nèi)存數(shù)據(jù)為最新的更新后的內(nèi)存數(shù)據(jù),保障業(yè)務(wù)應(yīng)用系統(tǒng)使用的內(nèi)存數(shù)據(jù)的一致性。同時(shí)本申請(qǐng)?zhí)峁┑膬?nèi)存數(shù)據(jù)的同步處理方法,在后臺(tái)數(shù)據(jù)庫發(fā)送變時(shí)可以主動(dòng)將后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)更新到子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)中,而不需要外圍系統(tǒng)服務(wù)器每次調(diào)用子系統(tǒng)服務(wù)器時(shí)所述子系統(tǒng)服務(wù)器每次都需要去后臺(tái)數(shù)據(jù)庫讀取數(shù)據(jù)。這樣可以實(shí)現(xiàn)一次加載內(nèi)存數(shù)據(jù)成功后不需要多次讀取后臺(tái)數(shù)據(jù)庫來重新更新內(nèi)存數(shù)據(jù),可以有效減少數(shù)據(jù)庫io讀取和內(nèi)存占用量,降低內(nèi)存溢出風(fēng)險(xiǎn)、優(yōu)化內(nèi)存數(shù)據(jù)同步效率。本申請(qǐng)中提供內(nèi)存數(shù)據(jù)同步方法、裝置及系統(tǒng)保障可以保障系統(tǒng)可以訪問讀取最新的內(nèi)存數(shù)據(jù),減少數(shù)據(jù)庫io讀取和內(nèi)存占用量,優(yōu)化內(nèi)存數(shù)據(jù)同步處理效率,提供系統(tǒng)運(yùn)行的可靠性。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本申請(qǐng)?zhí)峁┑姆植际较到y(tǒng)內(nèi)存數(shù)據(jù)的同步處理方法一種實(shí)施例的流程示意圖;
圖2是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法一種實(shí)施例的方法流程示意圖;
圖3是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法另一種方法流程示意圖;
圖4是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法另一種實(shí)施例的方法流程示意圖;
圖5是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法的另一種實(shí)施例的方法流程示意圖;
圖6是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法的另一種實(shí)施例的方法流程示意圖;
圖7是本申請(qǐng)?zhí)峁┑膬?nèi)存數(shù)據(jù)的同步裝置一種實(shí)施例的模塊結(jié)構(gòu)示意圖;
圖8是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖;
圖9是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖;
圖10是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
下面結(jié)合附圖對(duì)本申請(qǐng)所述的內(nèi)存數(shù)據(jù)同步的方法進(jìn)行詳細(xì)的說明。圖1是本申請(qǐng)?zhí)峁┑姆植际较到y(tǒng)內(nèi)存數(shù)據(jù)的同步處理方法一種實(shí)施例的方法流程圖示意圖。雖然本申請(qǐng)?zhí)峁┝巳缦率鰧?shí)施例或附圖所示的方法操作步驟,但基于常規(guī)或者無需創(chuàng)造性的勞動(dòng)在所述方法中可以包括更多或者更少的操作步驟。在邏輯性上不存在必要因果關(guān)系的步驟中,這些步驟的執(zhí)行順序不限于本申請(qǐng)實(shí)施例提供的執(zhí)行順序。所述方法在實(shí)際中的數(shù)據(jù)同步過程中或者裝置執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。
具體的本申請(qǐng)?zhí)峁┑囊环N分布式系統(tǒng)內(nèi)存數(shù)據(jù)的同步處理方法的一種實(shí)施例如圖1所示,所述方法可以包括:
s1:第一子系統(tǒng)服務(wù)器完成后臺(tái)數(shù)據(jù)庫數(shù)據(jù)更新后向子系統(tǒng)集群中的第二子系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的第一通知消息,以及向所述子系統(tǒng)集群的外圍系統(tǒng)集群中的外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的第二通知消息。
所述的子系統(tǒng)集群通??梢詾榉植际綐I(yè)務(wù)服務(wù)系統(tǒng)中的業(yè)務(wù)核心系統(tǒng),可以主要系統(tǒng)應(yīng)用服務(wù)器中基本數(shù)據(jù)的運(yùn)營(yíng)、維護(hù)、處理等。所述的后臺(tái)數(shù)據(jù)庫可以存儲(chǔ)所述業(yè)務(wù)核心系統(tǒng)運(yùn)行所需要的數(shù)據(jù),如程序加載資源、基礎(chǔ)數(shù)據(jù)等。需要說明的是,本申請(qǐng)中一種實(shí)施例的應(yīng)用場(chǎng)景中,在所述分布式業(yè)務(wù)服務(wù)系統(tǒng)的子系統(tǒng)集群中可以存在一個(gè)或者多個(gè)后臺(tái)數(shù)據(jù)庫,例如可以設(shè)置存儲(chǔ)用戶基本信息的后臺(tái)數(shù)據(jù)庫,也可以同時(shí)設(shè)置存儲(chǔ)訂單信息或者資產(chǎn)信息的后臺(tái)數(shù)據(jù)庫等。所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)可以包括多種存儲(chǔ)方式,例如常見的sqlserver、oracle、access、db2等。由于業(yè)務(wù)處理上的需求,作業(yè)人員可以對(duì)后臺(tái)數(shù)據(jù)庫 中的數(shù)據(jù)進(jìn)行操作,如添加、修改、刪除基本數(shù)據(jù)等。具體的如圖1所示,用戶(作業(yè)人員)在所述子系統(tǒng)集群中某個(gè)子系統(tǒng)服務(wù)器,如子系統(tǒng)服務(wù)器上1執(zhí)行了更新用戶基本信息的業(yè)務(wù)操作。所述后臺(tái)數(shù)據(jù)庫基于用戶在所述子系統(tǒng)服務(wù)器上1的操作進(jìn)行相應(yīng)后臺(tái)數(shù)據(jù)庫中數(shù)據(jù)的更新。
與此同時(shí),所述子系統(tǒng)集群中與所述后臺(tái)數(shù)據(jù)庫有關(guān)聯(lián)關(guān)系的子系統(tǒng)服務(wù)器需要相應(yīng)的更新內(nèi)存數(shù)據(jù)。本申請(qǐng)中所述的關(guān)聯(lián)系可以包括子系統(tǒng)的操作行為需要讀取所述后臺(tái)數(shù)據(jù)庫的子系統(tǒng)服務(wù)器均勻與所述后臺(tái)數(shù)據(jù)庫存在關(guān)聯(lián)關(guān)系。本實(shí)施例的一個(gè)應(yīng)用場(chǎng)景中可以為所有的子系統(tǒng)服務(wù)器使用同一個(gè)用戶基本信息的后臺(tái)數(shù)據(jù)庫。因此,當(dāng)作業(yè)人員在其中一個(gè)子系統(tǒng)服務(wù)器(為便于清楚的描述,本應(yīng)用場(chǎng)景中可以將引起后臺(tái)數(shù)據(jù)庫更新的子系統(tǒng)服務(wù)器統(tǒng)一稱為第一子系統(tǒng)服務(wù)器,如圖1中的子系統(tǒng)服務(wù)器1)上進(jìn)行了更新用戶基本信息的業(yè)務(wù)操作,那么所述第一子系統(tǒng)服務(wù)器可以在完成后臺(tái)數(shù)據(jù)庫更新后向同一子系統(tǒng)集群中的其他子系統(tǒng)服務(wù)器(為便于清楚的描述,本實(shí)施例中可以統(tǒng)一稱為第二子系統(tǒng)服務(wù)器,如圖1中的子系統(tǒng)服務(wù)器2、子系統(tǒng)服務(wù)器3、子系統(tǒng)服務(wù)器4等)發(fā)送內(nèi)存更新的第一通知消息。具體的在本申請(qǐng)的一種實(shí)施例中,可以通過drm向所述第二子系統(tǒng)服務(wù)器發(fā)送第一通知消息,通知其他所有子系統(tǒng)服務(wù)器準(zhǔn)備更新最新的用戶基本數(shù)據(jù)的后臺(tái)數(shù)據(jù)庫的內(nèi)存數(shù)據(jù)。如圖1所示,本實(shí)施例中同時(shí)可以通過drm向外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的第二通知消息,通知所有的外圍系統(tǒng)服務(wù)器實(shí)時(shí)同步讀取用戶緩存信息。
上述實(shí)施例中所述的drm(distributedresourcemanagement)為分布式資源管理,可以為應(yīng)用提供應(yīng)用框架。所述的drm提供了一種能力,可以在應(yīng)用運(yùn)行時(shí)動(dòng)態(tài)、即時(shí)的改變應(yīng)用系統(tǒng)內(nèi)存中的資源值,同時(shí)也可以與業(yè)務(wù)核心系統(tǒng)中的子服務(wù)器和外圍系統(tǒng)服務(wù)器進(jìn)行通信,可以解決多機(jī)房問題。在本實(shí)施例應(yīng)用場(chǎng)景中,所述的外圍系統(tǒng)服務(wù)器可以通過webservices服務(wù)調(diào)用訪問子系統(tǒng),在讀取子系統(tǒng)內(nèi)存數(shù)據(jù)后同樣可以通過webservices透?jìng)鞯酵鈬到y(tǒng)。所述的webservice,為一種低耦合的、自包含的、基于可編程的web的應(yīng)用程序,可以使得運(yùn)行在不同機(jī)器上的不同應(yīng)用無須借助附加的、專門的第三方軟件或硬件,就可相互交換數(shù)據(jù)或集成,用于開發(fā)分布式的互操作。
本實(shí)施例中,檢測(cè)到數(shù)據(jù)庫完成更新后,可以通過drm向子系統(tǒng)集群中的子系統(tǒng)服務(wù)器和外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的通知消息。
s2:接收到所述第一通知消息的第二子系統(tǒng)服務(wù)器將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間。
本申請(qǐng)?zhí)峁┑膬?nèi)存數(shù)據(jù)的同步處理方法可以為子系統(tǒng)集群中的子系統(tǒng)服務(wù)器設(shè)置用戶 判斷內(nèi)存數(shù)據(jù)是否為更新后的最新數(shù)據(jù)的標(biāo)識(shí)信息。具體的,在本實(shí)施例所述的分布式系統(tǒng)的子系統(tǒng)服務(wù)器中可以新增兩個(gè)drm標(biāo)識(shí)符:上次觸發(fā)內(nèi)存數(shù)據(jù)更新的歷史更新時(shí)間(historyupdatetime)和當(dāng)前要觸發(fā)內(nèi)存數(shù)據(jù)更新的當(dāng)前更新時(shí)間(currentupdatetime)。
子系統(tǒng)服務(wù)器檢測(cè)到后臺(tái)數(shù)據(jù)庫完成更新后,可以將設(shè)置的子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,并向外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新通知消息。需要說明的,所述的子系統(tǒng)服務(wù)器可以包括上述實(shí)施例所述的第一子系統(tǒng)服務(wù)器和接收到所述第一通知消息的第二子系統(tǒng)服務(wù)器,在其他的一些實(shí)施例中,用戶操作引起后臺(tái)數(shù)據(jù)庫數(shù)據(jù)變更的子系統(tǒng)服務(wù)器可以不需要接收所述的第一通知消息,通常的進(jìn)行后臺(tái)數(shù)據(jù)庫操作的子系統(tǒng)服務(wù)器可以基于作業(yè)人員在自身系統(tǒng)上的操作確定后臺(tái)數(shù)據(jù)庫發(fā)生了更新。這種情況下,所述的第二子系統(tǒng)服務(wù)器可以包括所述第一子系統(tǒng)服務(wù)器,其中第一系統(tǒng)服務(wù)器接收自身發(fā)送的第一通知消息可以在系統(tǒng)內(nèi)部通過相應(yīng)功能組件、應(yīng)用、程序之間的消息交互等實(shí)現(xiàn)。例如第一子系統(tǒng)中的第一組件進(jìn)行業(yè)務(wù)操作后第二組件可以接收到后臺(tái)數(shù)據(jù)庫更新完成的反饋消息視為第一通知消息,準(zhǔn)備進(jìn)行第一子系統(tǒng)的內(nèi)存更新。
另一種實(shí)施例中,所述的第一子系統(tǒng)服務(wù)器也可以為業(yè)務(wù)維護(hù)的服務(wù)器,可以不需要更新某一類后臺(tái)數(shù)據(jù)的內(nèi)存數(shù)據(jù),或者不需要更新內(nèi)存數(shù)據(jù),這種應(yīng)用場(chǎng)景中,所述第一子系統(tǒng)服務(wù)器在本申請(qǐng)所述方法中執(zhí)行了變更后臺(tái)數(shù)據(jù)庫數(shù)據(jù),而可以不需要更新第一子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù),此時(shí)所述的第二子系統(tǒng)服務(wù)器可以不包括所述第一子系統(tǒng)服務(wù)器。本申請(qǐng)一種實(shí)施例中為便于描述可以將引起后臺(tái)數(shù)據(jù)庫數(shù)據(jù)更新的操作行為的子系統(tǒng)服務(wù)器稱為第一子系統(tǒng)服務(wù)器,將子系統(tǒng)集群中與更新的后臺(tái)數(shù)據(jù)庫有關(guān)聯(lián)關(guān)系的子系統(tǒng)服務(wù)器稱為第二子系統(tǒng)服務(wù)器。
在本實(shí)施例中,所述當(dāng)前更新時(shí)間和所述歷史更新時(shí)間可以作為所述業(yè)務(wù)核心系統(tǒng)中子服務(wù)器的標(biāo)識(shí)符,所述標(biāo)識(shí)符可以具有標(biāo)識(shí)符值,不同子系統(tǒng)服務(wù)器的可以對(duì)應(yīng)著相應(yīng)的標(biāo)識(shí)符值。在本實(shí)施例中,所述業(yè)務(wù)核心系統(tǒng)中第二子系統(tǒng)服務(wù)器在接收內(nèi)存更新的第一通知消息后,可以通過讀取后臺(tái)數(shù)據(jù)庫中的最新數(shù)據(jù)更新內(nèi)存數(shù)據(jù)。例如,某分布式服務(wù)系統(tǒng)的業(yè)務(wù)核心系統(tǒng)中包括20臺(tái)子系統(tǒng)服務(wù)器,分別以編號(hào)1,2,3,4,…,20表示,當(dāng)完成后臺(tái)數(shù)據(jù)更新后,可以通過所述分布式資源管理系統(tǒng)(drm)發(fā)送內(nèi)存更新的第一通知消息至上述20臺(tái)子系服務(wù)器。例如,子系統(tǒng)服務(wù)器1接收通知的時(shí)間為2015年10月20日9時(shí)23分18秒20毫秒,可以將子系統(tǒng)服務(wù)器的當(dāng)前更新時(shí)間的drm標(biāo)識(shí)符的值設(shè)置為:historyupdatetime=2015102009231820。若子系統(tǒng)服務(wù)器1之前有過內(nèi)存數(shù)據(jù)更新,則所述歷史更新時(shí)間(historyupdatetime)標(biāo)識(shí)符存儲(chǔ)有最新的內(nèi)存數(shù)據(jù)更新的時(shí)間信息。若子系統(tǒng)服務(wù)器1之前沒有進(jìn)行過內(nèi)存數(shù)據(jù)更新,可以設(shè)置子系統(tǒng)服務(wù)器1的歷史更新時(shí)間的值為默 認(rèn)的空為0值。
當(dāng)然,在一些實(shí)施例中也可以為部分子系統(tǒng)服務(wù)器接收到所述內(nèi)存更新的第一通知消息。如上述20臺(tái)子系統(tǒng)服務(wù)器中,有19臺(tái)子系統(tǒng)服務(wù)器的業(yè)務(wù)與用戶基本信息有關(guān)聯(lián)關(guān)系,其中一臺(tái)子系統(tǒng)服務(wù)器20中的所有業(yè)務(wù)并不使用用戶基本信息的后臺(tái)數(shù)據(jù)庫。那么在用戶基本信息的后臺(tái)數(shù)據(jù)庫發(fā)送更新后子系統(tǒng)服務(wù)器20接收到不到第一通知消息,其相應(yīng)的當(dāng)前更新時(shí)間也不需要進(jìn)行修改。
本申請(qǐng)實(shí)施例中,接收到所述第一通知消息的第二子系統(tǒng)服務(wù)器可以將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間。
s3:接收到第二通知消息的外圍系統(tǒng)服務(wù)器向與所述外圍服務(wù)器相對(duì)應(yīng)的所述系統(tǒng)集群中的第三子系統(tǒng)服務(wù)器發(fā)送內(nèi)存同步更新請(qǐng)求。
所述的外圍系統(tǒng)集群可以包括多個(gè)外圍系統(tǒng)服務(wù)器。接收到所述第二通知消息的外圍系統(tǒng)服務(wù)器需要讀取后臺(tái)數(shù)據(jù)同步更新內(nèi)存數(shù)據(jù)。根據(jù)業(yè)務(wù)應(yīng)用的需要,所述的外圍系統(tǒng)集群中可以由一個(gè)或者多個(gè)外圍系統(tǒng)服務(wù)器訪問子系統(tǒng)集群中的一個(gè)或者多個(gè)子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)。一般的,所述的外圍服務(wù)器與子系統(tǒng)服務(wù)器基于業(yè)務(wù)服務(wù)、數(shù)據(jù)交互等有著相應(yīng)的對(duì)應(yīng)關(guān)系。
本申請(qǐng)實(shí)施例中,可以將與需要進(jìn)行內(nèi)存數(shù)據(jù)同步更新的外圍系統(tǒng)服務(wù)器對(duì)應(yīng)的子系統(tǒng)集群中的子系統(tǒng)服務(wù)器稱為第三子系統(tǒng)服務(wù)器。接收到通過drm發(fā)送的內(nèi)存更新的第二通知消息的外圍系統(tǒng)服務(wù)器向與所述外圍服務(wù)器相對(duì)應(yīng)的所述系統(tǒng)集群中的第三子系統(tǒng)服務(wù)器發(fā)送內(nèi)存同步更新請(qǐng)求,具體的可以通過webservices接口調(diào)用訪問子系統(tǒng)服務(wù)器進(jìn)行同步內(nèi)存數(shù)據(jù)服務(wù)。
s4:所述第三子系統(tǒng)服務(wù)器在接收到所述外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷設(shè)置的所述第三子系統(tǒng)的內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
在所述第三子系統(tǒng)服務(wù)器接收外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷第三子系統(tǒng)服務(wù)器中設(shè)置的drm標(biāo)識(shí)的值,即比較歷史更新時(shí)間標(biāo)識(shí)符中的值與當(dāng)前更新時(shí)間標(biāo)識(shí)符中的值的大小。如果判斷的結(jié)果為歷史更新時(shí)間小于當(dāng)前更新時(shí)間,則可以表示當(dāng)前第三子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)不是最新的數(shù)據(jù),需要進(jìn)行更新。所述第三子系統(tǒng)服務(wù)器可以讀取用戶基本信息的后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行更新。如果當(dāng)前第三子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù) 更新成功,可以將當(dāng)前第三子系統(tǒng)服務(wù)器的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,此時(shí)更新后的歷史更新時(shí)間大于或大于等于當(dāng)前更新時(shí)間,即historyupdatetime>currentupdatetime。以圖1所示的分布式服務(wù)系統(tǒng)舉例說明,由上述可知,子系統(tǒng)服務(wù)器2接收到第二通知的時(shí)間為2015年10月20日9時(shí)23分18秒20毫秒,歷史同步時(shí)間為2015年10月18日19時(shí)16分07秒45毫秒,可以將當(dāng)前更新時(shí)間設(shè)置為2015年10月20日9時(shí)23分18秒20毫秒。所述子系統(tǒng)服務(wù)器2在2015年10月20日9時(shí)24分06秒10毫秒完成了內(nèi)存數(shù)據(jù)的更新,此時(shí),可以將歷史同步時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,也就是2015年10月20日9時(shí)24分06秒10毫秒。這樣,子系統(tǒng)服務(wù)器2完成內(nèi)存數(shù)據(jù)更新后將歷史更新時(shí)間修改為當(dāng)前系統(tǒng)時(shí)間,保障更新后子系統(tǒng)服務(wù)器的歷史更新時(shí)間大于或等于當(dāng)前系統(tǒng)時(shí)間,表明內(nèi)存數(shù)據(jù)已經(jīng)更新,而在下一次內(nèi)存數(shù)據(jù)更新時(shí)歷史更新時(shí)間小于當(dāng)前系統(tǒng)時(shí)間,保障外圍系統(tǒng)服務(wù)器在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新后才讀取,進(jìn)行同步處理。
子系統(tǒng)集群中的子系統(tǒng)服務(wù)器更新內(nèi)存數(shù)據(jù)可以包括多種實(shí)施方式。在本實(shí)施例的一個(gè)場(chǎng)景中,系統(tǒng)維護(hù)人員對(duì)后臺(tái)數(shù)據(jù)庫中的用戶基本信息進(jìn)行更新操作,所述子系統(tǒng)服務(wù)器讀取所述客戶基本信息后,可以將變更后的用戶基本信息復(fù)制到內(nèi)存中。在本實(shí)施例的另一個(gè)場(chǎng)景中,系統(tǒng)維護(hù)人員對(duì)后臺(tái)數(shù)據(jù)庫中的客戶基本信息進(jìn)行更新操作,所述子系統(tǒng)服務(wù)器讀取所述客戶基本信息后,可以將變更后的客戶基本信息復(fù)制到緩存中。存儲(chǔ)于緩存中的數(shù)據(jù)可以方便于外圍系統(tǒng)服務(wù)器的讀取,并且緩存的讀取速度是內(nèi)存的讀取速度的數(shù)倍,尤其對(duì)于同一時(shí)間有多臺(tái)外圍系統(tǒng)服務(wù)器讀取同一子系統(tǒng)服務(wù)器的場(chǎng)景,可以減少所述子系統(tǒng)服務(wù)器的輸入輸出訪問量,降低所述子服務(wù)器發(fā)生內(nèi)存溢出的風(fēng)險(xiǎn),提高數(shù)據(jù)同步的工作效率。需要說明的是,所述分布式資源管理系統(tǒng)發(fā)送的數(shù)據(jù)同步更新通知中可以包含所述后臺(tái)數(shù)據(jù)庫中更新數(shù)據(jù)的存儲(chǔ)位置,可以節(jié)省所述子服務(wù)器讀取所述后臺(tái)數(shù)據(jù)庫的時(shí)間,提高工作效率。
一般的,子系統(tǒng)集群中的子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新后,由于數(shù)據(jù)處理延時(shí)等,其更新后的歷史更新時(shí)間通常大于略當(dāng)前更新時(shí)間。但本申請(qǐng)并不排除更新后的歷史更新時(shí)間等于當(dāng)前更新時(shí)間的應(yīng)用場(chǎng)景,例如出于時(shí)間精度的考慮、延時(shí)補(bǔ)充等處理的場(chǎng)景。本申請(qǐng)所述的方法包括基于設(shè)置的內(nèi)存數(shù)據(jù)歷史更新時(shí)間和當(dāng)前更新時(shí)間的標(biāo)識(shí)信息智能判斷子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)是否為最新更新后的數(shù)據(jù)。
需要說明的是,本申請(qǐng)中所述當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間的一種實(shí)施方式包括接收到后臺(tái)數(shù)據(jù)更新的通知消息后子系統(tǒng)服務(wù)器便開始進(jìn)行更新內(nèi)存數(shù)據(jù),在更新期間沒有接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求,此時(shí)同樣可以在所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系 統(tǒng)時(shí)間。
另外,本申請(qǐng)中所述的讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新包括子系統(tǒng)服務(wù)器接收到內(nèi)存數(shù)據(jù)更新的第一通知消息時(shí)已經(jīng)執(zhí)行內(nèi)存數(shù)據(jù)更新的情況。具體而言,子系統(tǒng)服務(wù)器接收到drm通信消息后開始準(zhǔn)備更新內(nèi)存數(shù)據(jù),在更新內(nèi)存數(shù)據(jù)的過程中如果沒有外圍系統(tǒng)服務(wù)器調(diào)用該系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù),則該系統(tǒng)服務(wù)器一直更新內(nèi)存數(shù)據(jù),直至更新完成后相應(yīng)的將歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,如圖1中子系統(tǒng)服務(wù)器2整個(gè)內(nèi)存數(shù)據(jù)更新過程中沒有被外圍系統(tǒng)服務(wù)器調(diào)用。若在內(nèi)存數(shù)據(jù)更新期間有外圍系統(tǒng)服務(wù)器調(diào)用該子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù),例如調(diào)用子系統(tǒng)服務(wù)器4,由于子系統(tǒng)服務(wù)器4的內(nèi)存數(shù)據(jù)未更新完成,歷史更新時(shí)間仍小于當(dāng)前系統(tǒng)時(shí)間,此時(shí)可以繼續(xù)讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新。當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
基于上述實(shí)施例所述的實(shí)施方案可以看出,本申請(qǐng)?zhí)峁┑膬?nèi)存數(shù)據(jù)同步處理方法可以基于歷史更新時(shí)間和當(dāng)前更新時(shí)間兩個(gè)標(biāo)識(shí)符可以有效保障外圍系統(tǒng)服務(wù)器調(diào)用到的子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)為最新更新后的數(shù)據(jù),保障了分布式服務(wù)系統(tǒng)中核心業(yè)務(wù)系統(tǒng)和外圍系統(tǒng)中服務(wù)器使用的內(nèi)存數(shù)據(jù)的一致性,提高了系統(tǒng)運(yùn)行的可靠性。
s5:所述外圍系統(tǒng)服務(wù)器基于所述第三子系統(tǒng)服務(wù)器更新成功后的內(nèi)存數(shù)據(jù)進(jìn)行內(nèi)存數(shù)據(jù)同步更新。
所述第三子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新成功后,所述外圍系統(tǒng)服務(wù)器可以基于更新后的內(nèi)存數(shù)據(jù)進(jìn)行數(shù)據(jù)同步更新操作。所述外圍系統(tǒng)服務(wù)器可以讀取最新的內(nèi)存數(shù)據(jù),具體的實(shí)現(xiàn)方式上,可以包括通過讀取子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)后通過webservices透?jìng)鞯酵鈬到y(tǒng)服務(wù)器,實(shí)現(xiàn)外圍系統(tǒng)服務(wù)器的內(nèi)存同步更新。
在本申請(qǐng)實(shí)施例中,所述外圍系統(tǒng)服務(wù)器可以通過webservices訪問所述子服務(wù)器,所述webservices可以作為所述外圍系統(tǒng)服務(wù)器訪問所述子服務(wù)器的接口,運(yùn)行于不同的機(jī)器上,應(yīng)用時(shí)可以無需附加的第三方軟件或者硬件。本實(shí)施例中的webservices可以忽略所述外圍系統(tǒng)服務(wù)器和所述子系統(tǒng)服務(wù)器語言、平臺(tái)、內(nèi)部協(xié)議的不同,實(shí)現(xiàn)兩者之間的數(shù)據(jù)交換。一般的,所述的webservices的部署往往是基于常規(guī)的產(chǎn)業(yè)標(biāo)準(zhǔn),如標(biāo)準(zhǔn)通用標(biāo)記語言的子集xml、http,因此,本實(shí)施例通過webservices訪問所述子系統(tǒng)服務(wù)器可以降低應(yīng)用接口的成本。
本實(shí)施例提供的分布式系統(tǒng)內(nèi)存數(shù)據(jù)的同步處理方法可以基于設(shè)置的歷史更新標(biāo)識(shí)和當(dāng)前更新標(biāo)識(shí),如上述應(yīng)用場(chǎng)景中的drm標(biāo)識(shí)符historyupdatetime、currentupdatetime, 智能判斷子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)是否為最新的數(shù)據(jù)。若不是最新時(shí),更新從后臺(tái)數(shù)據(jù)庫中讀取最新的內(nèi)存數(shù)據(jù)更新當(dāng)前子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù),可以有效避免外圍系統(tǒng)服務(wù)器從所述當(dāng)前子系統(tǒng)服務(wù)器中讀取未更新的數(shù)據(jù)從而導(dǎo)致分布式服務(wù)系統(tǒng)中的內(nèi)存數(shù)據(jù)不一致的情況。具體的實(shí)現(xiàn)方式上可以利用drm技術(shù)對(duì)更新內(nèi)存數(shù)據(jù)進(jìn)行先后同步,及一次加載內(nèi)存數(shù)據(jù)功能后可以不再多次讀取后臺(tái)數(shù)據(jù)庫來重新更新內(nèi)存數(shù)據(jù),可以減少數(shù)據(jù)庫io讀取和內(nèi)存占用,優(yōu)化同步效率。
上述所述的分布式系統(tǒng)內(nèi)存數(shù)據(jù)的同步處理方法具體的對(duì)應(yīng)子系統(tǒng)集群中的子系統(tǒng)服務(wù)器操作而言,可以在檢測(cè)到后臺(tái)數(shù)據(jù)發(fā)生變更后進(jìn)行子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)同步處理。當(dāng)有外圍系統(tǒng)服務(wù)器調(diào)用當(dāng)前子系統(tǒng)服務(wù)器時(shí),可以基于設(shè)置的內(nèi)存數(shù)據(jù)的歷史更新時(shí)間和當(dāng)前更新時(shí)間判斷內(nèi)存數(shù)據(jù)是否為最新更新后的數(shù)據(jù)。如果不是,則子系統(tǒng)服務(wù)器進(jìn)行內(nèi)存數(shù)據(jù)更新。在更新成功后,所述外圍系統(tǒng)服務(wù)器才可以讀取子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù),進(jìn)行外圍系統(tǒng)服務(wù)器的內(nèi)存更新。因此,本申請(qǐng)還提供一種內(nèi)存數(shù)據(jù)的同步處理方法,圖2是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法一種實(shí)施例的方法流程示意圖。如圖2所示,所述方法可以包括:
s11:接收到后臺(tái)數(shù)據(jù)庫更新的通知消息時(shí)進(jìn)行內(nèi)存數(shù)據(jù)更新,并將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
s12:在接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;
s13:當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;
s14:當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
上述所述的內(nèi)存數(shù)據(jù)的同步處理方法可以的執(zhí)行主體可以包括子系統(tǒng)集群中的某一子系統(tǒng)服務(wù)器。在本申請(qǐng)的其他實(shí)施方式中,也可以設(shè)置單獨(dú)的用于內(nèi)存數(shù)據(jù)同步處理的裝置,如某個(gè)同步應(yīng)用、組件、業(yè)務(wù)服務(wù)系統(tǒng)等,由該內(nèi)存數(shù)據(jù)同步處理的裝置執(zhí)行子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)更新、信息判斷等處理。當(dāng)然,如果判斷結(jié)果為否,則可以表示當(dāng)前內(nèi)存數(shù)據(jù)已被更新為最新,不需要每一次調(diào)用該子系統(tǒng)服務(wù)器時(shí)都要去實(shí)時(shí)讀取后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù),大大降低內(nèi)存溢出的風(fēng)險(xiǎn)。圖3是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法另一種方法流程示意圖。
上述所述的方法中,后臺(tái)數(shù)據(jù)庫跟新后還可以向外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新通知消息,告知外圍系統(tǒng)服務(wù)器相應(yīng)的更新內(nèi)存數(shù)據(jù)。
在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新完成后,此時(shí)的歷史更新時(shí)間大于當(dāng)前更新時(shí)間,可以再次判斷子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于當(dāng)前更新時(shí)間。如果歷史更新時(shí)間大于或等于當(dāng)前更新時(shí)間,則可以將更新后的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。圖4是本申請(qǐng)?zhí)峁┑囊环N內(nèi)存數(shù)據(jù)的同步處理方法另一種實(shí)施例的方法流程示意圖,如圖4所示,所示方法還可以包括:
s15:當(dāng)所述判斷的結(jié)果為所述歷史更新時(shí)間大于或等于所述當(dāng)前更新時(shí)間時(shí),將所述內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。
當(dāng)然,若子系統(tǒng)服務(wù)器或內(nèi)存數(shù)據(jù)同步處理裝置在接收到內(nèi)存同步更新請(qǐng)求后判斷的結(jié)果為歷史更新時(shí)間大于或等于當(dāng)前更新時(shí)間時(shí),可以直接將當(dāng)前子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)同步在外圍系統(tǒng)服務(wù)器。在具體的實(shí)施過程中,可以進(jìn)行周期性或基于子系統(tǒng)內(nèi)存數(shù)據(jù)更新成功/完成的消息多次比較判斷歷史更新時(shí)間和當(dāng)前更新時(shí)間。在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新完成后,此時(shí)的歷史更新時(shí)間大于當(dāng)前更新時(shí)間,則可以將此時(shí)的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。
本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步處理方法的另一種實(shí)施例中,若子系統(tǒng)服務(wù)器的歷史更新時(shí)間為空(包括歷史更新時(shí)間的標(biāo)識(shí)符為0或者設(shè)置的表示該子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)未進(jìn)行更新過的標(biāo)識(shí)信息)時(shí)則可以進(jìn)行子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)的更新處理。另一種應(yīng)用場(chǎng)景中,在比較過程中若歷史更新時(shí)間與當(dāng)前更新時(shí)間相等,也可以進(jìn)行子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)的更新處理。這樣可以在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)實(shí)際并沒有更新為最新后臺(tái)數(shù)據(jù)時(shí)有效避免因延時(shí)、誤差、時(shí)間精度等原因造成歷史更新時(shí)間與當(dāng)前更新時(shí)間相等而使外圍服務(wù)器沒有讀取到最新的內(nèi)存數(shù)據(jù)的情況,保障了內(nèi)存數(shù)據(jù)最新的更新數(shù)據(jù),提高數(shù)據(jù)處理的準(zhǔn)確性和可靠性。因此,本申請(qǐng)還提供所述內(nèi)存數(shù)據(jù)同步處理方法的另一種實(shí)施例。圖5是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步處理方法的另一種實(shí)施例的方法流程示意圖,如圖5所示,所述方法還可以包括:
s16:在檢測(cè)到所述歷史更新時(shí)間為空,或所述判斷的結(jié)果為所述歷史更新時(shí)間等于所述當(dāng)前更新時(shí)間時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新。
當(dāng)然,參照其他實(shí)施例,當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后可以將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
圖6是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步處理方法的另一種實(shí)施例的方法流程示意圖。如圖6所示,若子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)更新失敗,則可以重新進(jìn)行內(nèi)存數(shù)據(jù)更新所述方法還可以包括:
s17:當(dāng)所述內(nèi)存數(shù)據(jù)更新失敗時(shí),重新讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù) 進(jìn)行更新;若所述內(nèi)存數(shù)據(jù)更新失敗次數(shù)達(dá)到設(shè)置的上限值時(shí)停止內(nèi)存數(shù)據(jù)更新,并設(shè)置不更新所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間。
本實(shí)施例中所述的失敗次數(shù)的上限值可以根據(jù)數(shù)據(jù)處理需求進(jìn)行設(shè)置。若失敗次數(shù)達(dá)到上限值則可能存在一些故障問題,可以設(shè)置停止內(nèi)存數(shù)據(jù)更新。當(dāng)所述內(nèi)存數(shù)據(jù)更新失敗時(shí),所述內(nèi)存數(shù)據(jù)并沒有實(shí)質(zhì)更新為內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),可以設(shè)置不更新所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間。
本申請(qǐng)實(shí)施例提供的內(nèi)存數(shù)據(jù)的同步處理方法可以用于分布式系統(tǒng)間的內(nèi)存數(shù)據(jù)同步處理。從本申請(qǐng)的實(shí)施方案的分布式服務(wù)器系統(tǒng)的應(yīng)用場(chǎng)景中,可以有多臺(tái)外圍系統(tǒng)服務(wù)器先后訪問同一個(gè)子系統(tǒng)服務(wù)器,換句話說,在所述子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)更新成功后,還可以有不同的外圍系統(tǒng)服務(wù)器訪問所述子服務(wù)器。一般地,現(xiàn)有技術(shù)使用的方法通常是外圍系統(tǒng)服務(wù)器每訪問一次所述子系統(tǒng)服務(wù)器,所述子系統(tǒng)服務(wù)器都會(huì)訪問一次后臺(tái)數(shù)據(jù)庫,導(dǎo)致所述子系統(tǒng)服務(wù)器的輸入輸出訪問量較大,甚至引起所述子服務(wù)器的內(nèi)存溢出。在本實(shí)施例中,可以通過比較子系統(tǒng)服務(wù)器中的當(dāng)前更新時(shí)間和歷史更新時(shí)間的大小,判別所述子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)是否是最新實(shí)時(shí)數(shù)據(jù)。當(dāng)所述內(nèi)存數(shù)據(jù)是更洗后的最新實(shí)時(shí)數(shù)據(jù)時(shí),所述外圍系統(tǒng)服務(wù)器可以直接訪問所述子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù),避免一臺(tái)或多臺(tái)外圍系統(tǒng)服務(wù)器一次或多次訪問所述后臺(tái)數(shù)據(jù)庫,大大降低所述后臺(tái)數(shù)據(jù)庫的輸入輸出訪問量,減少子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)處理負(fù)載壓力,降低內(nèi)存溢出風(fēng)險(xiǎn),提高外圍系統(tǒng)服務(wù)器的訪問效率和整個(gè)分布式服務(wù)器系統(tǒng)運(yùn)行的可靠性。
基于本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步處理方法,本申請(qǐng)還提供一種內(nèi)存數(shù)據(jù)的同步處理裝置。圖7是本申請(qǐng)?zhí)峁┑膬?nèi)存數(shù)據(jù)的同步裝置一種實(shí)施例的模塊結(jié)構(gòu)示意圖,所述裝置用于保障分布式服務(wù)系統(tǒng)中業(yè)務(wù)核心系統(tǒng)和外圍服務(wù)系統(tǒng)使用的內(nèi)存數(shù)據(jù)的一致性。具體的如圖7所示,所述裝置可以包括:
更新監(jiān)測(cè)模塊101,可以用于接收到后臺(tái)數(shù)據(jù)庫更新的通知消息時(shí)將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
判斷模塊102,可以用于在接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后,判斷所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;
第一處理模塊103,可以用于當(dāng)所述判斷模塊102的判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;
第二處理模塊104,可以用于當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)同步的處理裝置在分布式服務(wù)系統(tǒng)中業(yè)務(wù)核心系統(tǒng)和外圍系統(tǒng)服務(wù)器的數(shù)據(jù)同步過程中,可以通過比較業(yè)務(wù)核心系統(tǒng)中子系統(tǒng)服務(wù)器的當(dāng)前更新時(shí)間和歷史更新時(shí)間的大小,判斷所述子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)是否是最新實(shí)時(shí)數(shù)據(jù),以保證所述外圍系統(tǒng)集群中的外圍系統(tǒng)服務(wù)器從所述子系統(tǒng)服務(wù)器讀取的內(nèi)存數(shù)據(jù)是實(shí)時(shí)數(shù)據(jù),保障了所述業(yè)務(wù)核心系統(tǒng)和所述外圍服務(wù)系統(tǒng)內(nèi)存數(shù)據(jù)的一致性。同時(shí)可以降低所述子系統(tǒng)服務(wù)器對(duì)內(nèi)存數(shù)據(jù)的訪問量,降低內(nèi)存數(shù)據(jù)發(fā)生溢出的風(fēng)險(xiǎn)。本申請(qǐng)中提供的實(shí)施例可以大大降低子系統(tǒng)內(nèi)存數(shù)據(jù)處理的負(fù)載壓力,提高子系統(tǒng)服務(wù)器數(shù)據(jù)同步處理效率和系統(tǒng)運(yùn)行的可靠性。
圖8是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖8所示,所述裝置還可以包括:
外圍系統(tǒng)同步處理模塊105,可以用于當(dāng)所述判斷模塊102的判斷結(jié)果為所述歷史更新時(shí)間大于或等于所述當(dāng)前更新時(shí)間時(shí),將所述內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。
在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新完成后,此時(shí)的歷史更新時(shí)間大于當(dāng)前更新時(shí)間,可以再次判斷子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于當(dāng)前更新時(shí)間。如果歷史更新時(shí)間大于或等于當(dāng)前更新時(shí)間,則可以將更新后的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。在具體的實(shí)施過程中,可以進(jìn)行周期性或基于子系統(tǒng)內(nèi)存數(shù)據(jù)更新成功/完成的消息多次比較判斷歷史更新時(shí)間和當(dāng)前更新時(shí)間。在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)更新完成后,此時(shí)的歷史更新時(shí)間大于當(dāng)前更新時(shí)間,則可以將此時(shí)的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。
圖9是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖9所示,所述裝置還可以包括:
第三處理模塊106,可以用于在檢測(cè)到所述歷史更新時(shí)間為空,或所述判斷模塊102的判斷結(jié)果為所述歷史更新時(shí)間等于所述當(dāng)前更新時(shí)間時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新。
本實(shí)施例中當(dāng)子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)之前沒有更新過,此時(shí)的歷史更新時(shí)間可以為默認(rèn)的空(如前所述,所述“空”可以包括歷史更新時(shí)間的標(biāo)識(shí)符的值為0或其他設(shè)置的表示該子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)未進(jìn)行更新過的標(biāo)識(shí)信息),或在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)實(shí)際并沒有更新為最新后臺(tái)數(shù)據(jù)時(shí)有效避免因延時(shí)、誤差、時(shí)間精度等原因造成歷史更新時(shí)間與當(dāng)前更新時(shí)間相等是避免外圍服務(wù)器讀取到不是最新的內(nèi)存數(shù)據(jù)的情況,保障了內(nèi)存數(shù)據(jù)最新的更新數(shù)據(jù),提高數(shù)據(jù)處理的準(zhǔn)確性和可靠性。
圖10是本申請(qǐng)所述內(nèi)存數(shù)據(jù)的同步裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖10所示, 所述裝置還可以包括:
第四處理模塊107,可以用于當(dāng)所述內(nèi)存數(shù)據(jù)更新失敗時(shí),重新讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新,直至所述內(nèi)存數(shù)據(jù)更新失敗次數(shù)達(dá)到設(shè)置的上限值時(shí)停止內(nèi)存數(shù)據(jù)更新,并設(shè)置不更新所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間。
本實(shí)施例中所述的失敗次數(shù)的上限值可以根據(jù)數(shù)據(jù)處理需求進(jìn)行設(shè)置。若失敗次數(shù)達(dá)到上限值則可能存在一些故障問題,可以設(shè)置停止內(nèi)存數(shù)據(jù)更新。當(dāng)所述內(nèi)存數(shù)據(jù)更新失敗時(shí),所述內(nèi)存數(shù)據(jù)并沒有實(shí)質(zhì)更新為內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),可以設(shè)置不更新所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間。
上述實(shí)施例所述的內(nèi)存數(shù)據(jù)的同步處理方法或裝置可以子系統(tǒng)服務(wù)器為執(zhí)行主體的方式實(shí)現(xiàn)或者作用于子系統(tǒng)服務(wù)器上的單獨(dú)設(shè)置的處理模塊、應(yīng)用、組件等方式實(shí)現(xiàn)?;诒旧暾?qǐng)實(shí)施例所述,本申請(qǐng)還提供一種服務(wù)器,如本申請(qǐng)上述實(shí)施例中的子系統(tǒng)服務(wù)器,具體的,所述服務(wù)器可以包括:
輸入輸出接口,可以用于獲取后臺(tái)數(shù)據(jù)庫更新的通知消息,和讀取后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行內(nèi)存更新的接口,以及提供外圍系統(tǒng)服務(wù)器訪問內(nèi)存數(shù)據(jù)進(jìn)行外圍系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)同步的接口;
處理單元,被設(shè)置成可以用于基于接收到后臺(tái)數(shù)據(jù)庫更新的通知消息時(shí)將內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;還可以用于在接收到外圍系統(tǒng)服務(wù)器發(fā)送的內(nèi)存同步更新請(qǐng)求后判斷所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于所述當(dāng)前更新時(shí)間;還可以用于當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新;還可以用于當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間。
上述的輸入輸出接口可以包括一處或多處i/o數(shù)據(jù)流的接口,如接收通過drm通知服務(wù)器進(jìn)行內(nèi)存更新的消息,或通過webservices使得外圍系統(tǒng)服務(wù)器可以訪問同步內(nèi)存緩存數(shù)據(jù),以及通過后臺(tái)數(shù)據(jù)庫的i/o訪問接口讀取內(nèi)存數(shù)據(jù)進(jìn)行更新等。所述的處理單元可以包括一個(gè)或多個(gè)邏輯判斷的處理單元,如cpu、邏輯門、可編程控制電路等。
本申請(qǐng)?zhí)峁┑乃龇椒?、裝置的各個(gè)實(shí)施例可以使用多種應(yīng)用場(chǎng)景下服務(wù)器內(nèi)存數(shù)據(jù)更新的情況。尤其是對(duì)于分布式特別是大型分布式服務(wù)系統(tǒng),可以有效的保障外圍調(diào)用系統(tǒng)使用的為核心業(yè)務(wù)系統(tǒng)中的子系統(tǒng)服務(wù)器最新的內(nèi)存數(shù)據(jù),保障業(yè)務(wù)上內(nèi)存數(shù)據(jù)的一致性,同時(shí)還可以有效減少分布式系統(tǒng)中服務(wù)器對(duì)后臺(tái)數(shù)據(jù)庫的訪問量和內(nèi)存占用,優(yōu)化同步效率,提高整個(gè)分布式統(tǒng)運(yùn)行的效率和可靠性?;谏鲜?,本申請(qǐng)還提供一種分布式系統(tǒng),具體的,
所示分布式系統(tǒng),包括至少一個(gè)子系統(tǒng)服務(wù)器的子系統(tǒng)集群和多個(gè)外圍系統(tǒng)服務(wù)器的外 圍系統(tǒng)集群,且,
監(jiān)測(cè)到后臺(tái)數(shù)據(jù)庫更新時(shí)向所述外圍系統(tǒng)服務(wù)器發(fā)送內(nèi)存更新的通知消息,以及將設(shè)置在子系統(tǒng)服務(wù)器內(nèi)存數(shù)據(jù)的當(dāng)前更新時(shí)間設(shè)置為當(dāng)前系統(tǒng)時(shí)間;
接收到所述通知消息的外圍系統(tǒng)服務(wù)器向與所述外圍服務(wù)器相對(duì)應(yīng)的所述系統(tǒng)集群中的子系統(tǒng)服務(wù)器發(fā)送內(nèi)存同步更新請(qǐng)求;
接收到所述內(nèi)存同步請(qǐng)求的子系統(tǒng)服務(wù)器判斷設(shè)置在所述子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)的歷史更新時(shí)間是否小于當(dāng)前更新時(shí)間;
當(dāng)所述判斷的結(jié)果為是時(shí),讀取所述后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)對(duì)所述內(nèi)存數(shù)據(jù)進(jìn)行更新,以及當(dāng)所述內(nèi)存數(shù)據(jù)更新成功后將所述內(nèi)存數(shù)據(jù)的歷史更新時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,并將更新后的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器;否則,讀取子系統(tǒng)服務(wù)器的內(nèi)存數(shù)據(jù)同步至所述外圍系統(tǒng)服務(wù)器。
由上述所述方法或裝置的各個(gè)實(shí)施例的實(shí)施方案及描述可以看出,本申請(qǐng)?zhí)峁┑膬?nèi)存數(shù)據(jù)同步處理裝置、服務(wù)器及系統(tǒng)可以基于歷史更新時(shí)間和當(dāng)前更新時(shí)間兩個(gè)標(biāo)識(shí)符可以有效保障外圍系統(tǒng)服務(wù)器調(diào)用到的子系統(tǒng)服務(wù)器中的內(nèi)存數(shù)據(jù)為最新更新后的數(shù)據(jù),保障了分布式服務(wù)系統(tǒng)中核心業(yè)務(wù)系統(tǒng)和外圍系統(tǒng)中服務(wù)器使用的內(nèi)存數(shù)據(jù)的一致性,提高系統(tǒng)運(yùn)行的可靠性。
盡管本申請(qǐng)內(nèi)容中提到內(nèi)存、數(shù)據(jù)庫、緩存之間的數(shù)據(jù)處理、通過drm/webservices試試的子系統(tǒng)與外圍服務(wù)器的消息交互、更新時(shí)間的判斷等的數(shù)據(jù)處理、信息交互之類的描述,但是,本申請(qǐng)并不局限于必須是完全標(biāo)準(zhǔn)或者所提及的方式的信息及數(shù)據(jù)處理、信息交互的情況。本申請(qǐng)中各個(gè)實(shí)施例所涉及的上述描述僅是本申請(qǐng)中的一些實(shí)施例中的應(yīng)用,在某些標(biāo)準(zhǔn)、方法的基礎(chǔ)上略加修改后的實(shí)施方式也可以實(shí)行上述本申請(qǐng)各實(shí)施例的方案。當(dāng)然,在符合本申請(qǐng)上述各實(shí)施例的中所述的處理方法步驟的其他無創(chuàng)造性的變形,仍然可以實(shí)現(xiàn)相同的申請(qǐng),在此不再贅述。
雖然本申請(qǐng)?zhí)峁┝巳鐚?shí)施例或流程圖所述的方法操作步驟,但基于常規(guī)或者無創(chuàng)造性的勞動(dòng)可以包括更多或者更少的操作步驟。實(shí)施例中列舉的步驟順序僅僅為眾多步驟執(zhí)行順序中的一種方式,不代表唯一的執(zhí)行順序。在實(shí)際中的裝置或服務(wù)器、系統(tǒng)執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行以及包括采用循環(huán)判斷的方式執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。
上述實(shí)施例闡明的裝置或模塊,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來實(shí)現(xiàn)。為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。在實(shí)施 本申請(qǐng)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。當(dāng)然,也可以將實(shí)現(xiàn)某功能的模塊由多個(gè)子模塊或子單元組合實(shí)現(xiàn)。
本申請(qǐng)中所述的方法、裝置或模塊可以以計(jì)算機(jī)可讀程序代碼方式的控制器實(shí)現(xiàn)。所述控制具體的可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過將方法步驟進(jìn)行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)部包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔粒梢詫⒂糜趯?shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
本申請(qǐng)所述裝置中的部分模塊可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)、類等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的硬件的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,也可以通過數(shù)據(jù)遷移的實(shí)施過程中體現(xiàn)出來。該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),移動(dòng)終端,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
本說明書中的各個(gè)實(shí)施例采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同或相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。本申請(qǐng)的全部或者部分可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、移動(dòng)通信終端、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程的電子設(shè)備、網(wǎng)絡(luò)pc、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
雖然通過實(shí)施例描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。