国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)同步裝置及其實(shí)現(xiàn)數(shù)據(jù)同步的方法、客戶端訪問系統(tǒng)與流程

      文檔序號(hào):12494798閱讀:291來源:國(guó)知局
      數(shù)據(jù)同步裝置及其實(shí)現(xiàn)數(shù)據(jù)同步的方法、客戶端訪問系統(tǒng)與流程

      本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理的技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)同步裝置及其實(shí)現(xiàn)數(shù)據(jù)同步的方法以及一種客戶端訪問系統(tǒng)。



      背景技術(shù):

      為了減輕后臺(tái)服務(wù)器和數(shù)據(jù)庫(kù)的壓力,網(wǎng)站常常增設(shè)緩存服務(wù)器,將用戶頻繁訪問的數(shù)據(jù)放在緩存服務(wù)器中,以分擔(dān)后臺(tái)服務(wù)器和數(shù)據(jù)庫(kù)的訪問量,使后臺(tái)服務(wù)器和數(shù)據(jù)庫(kù)的壓力得以降低。例如,如圖1所示的客戶端訪問系統(tǒng),后臺(tái)服務(wù)器編輯數(shù)據(jù),保存數(shù)據(jù)至數(shù)據(jù)庫(kù)中的同時(shí),同步更新數(shù)據(jù)至緩存服務(wù)器中;每個(gè)客戶端訪問各自所連接的接口服務(wù)器,每個(gè)接口服務(wù)器從緩存服務(wù)器中讀取最新的數(shù)據(jù),并將數(shù)據(jù)返回給客戶端。

      但是,隨著網(wǎng)站規(guī)模的擴(kuò)大以及訪問量的提高,緩存服務(wù)器的壓力越來越大;當(dāng)訪問量達(dá)到緩存服務(wù)器的極限(例如,超過10萬個(gè)并發(fā)用戶鏈接)時(shí),緩存服務(wù)器不可避免地會(huì)出現(xiàn)響應(yīng)速度降低或者無法訪問的情況。

      因此需要在接口服務(wù)器上提供一種數(shù)據(jù)同步裝置和實(shí)現(xiàn)數(shù)據(jù)同步的方法,將緩存服務(wù)器上的數(shù)據(jù)分發(fā)至各個(gè)客戶端對(duì)應(yīng)的接口服務(wù)器,并在接口服務(wù)器上實(shí)時(shí)同步緩存服務(wù)器的數(shù)據(jù),從而使得接口服務(wù)器每次收到客戶端的連接訪問請(qǐng)求時(shí),不必要從緩存服務(wù)器上讀取最新的數(shù)據(jù)。



      技術(shù)實(shí)現(xiàn)要素:

      為了解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)同步裝置及其實(shí)現(xiàn)數(shù)據(jù)同步的方法以及一種客戶端訪問系統(tǒng),能夠使得接口服務(wù)器與緩存服務(wù)器之間始終保持?jǐn)?shù)據(jù)同步,進(jìn)而提升緩存服務(wù)器訪問性能。

      為了達(dá)到本發(fā)明目的,本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:

      本發(fā)明實(shí)施例提供了一種數(shù)據(jù)同步裝置,包括:監(jiān)聽模塊、讀取模塊和存儲(chǔ)模塊;其中,

      監(jiān)聽模塊,用于監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更,當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),通知讀取模塊;

      讀取模塊,用于在自身所屬裝置啟動(dòng)時(shí),從緩存服務(wù)器讀取所需的數(shù)據(jù),并存儲(chǔ)至存儲(chǔ)模塊;當(dāng)接收到來自監(jiān)聽模塊的通知時(shí),重新從緩存服務(wù)器讀取所需的數(shù)據(jù),并更新存儲(chǔ)模塊存儲(chǔ)的數(shù)據(jù);

      存儲(chǔ)模塊,用于存儲(chǔ)讀取模塊所讀取的數(shù)據(jù)。

      進(jìn)一步地,所述監(jiān)聽模塊具體用于:通過消息中間件與所述緩存服務(wù)器建立第一數(shù)據(jù)通道,并在第一數(shù)據(jù)通道上監(jiān)聽所述緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      進(jìn)一步地,所述監(jiān)聽模塊具體用于:通過套接字與所述緩存服務(wù)器建立第二數(shù)據(jù)通道,并在第二數(shù)據(jù)通道上監(jiān)聽所述緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      進(jìn)一步地,還包括:數(shù)據(jù)處理模塊,用于接收客戶端的連接訪問請(qǐng)求,根據(jù)連接訪問請(qǐng)求讀取存儲(chǔ)模塊中相應(yīng)的數(shù)據(jù)。

      本發(fā)明實(shí)施例提供了一種客戶端訪問系統(tǒng),包括客戶端、接口服務(wù)器、緩存服務(wù)器和后臺(tái)服務(wù)器;

      客戶端,用于發(fā)起連接訪問請(qǐng)求至相應(yīng)的接口服務(wù)器;

      接口服務(wù)器,用于在啟動(dòng)時(shí),從緩存服務(wù)器讀取自身所連的客戶端所需的數(shù)據(jù),并存儲(chǔ)至本地;監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更;當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),重新從緩存服務(wù)器讀取客戶端所需的數(shù)據(jù),并更新本地存儲(chǔ)的數(shù)據(jù);接收客戶端的連接訪問請(qǐng)求,根據(jù)連接訪問請(qǐng)求讀取相應(yīng)的本地存儲(chǔ)的數(shù)據(jù)并生成連接訪問響應(yīng),將連接訪問響應(yīng)返回至客戶端;

      緩存服務(wù)器,用于同步存儲(chǔ)后臺(tái)服務(wù)器的數(shù)據(jù);當(dāng)存儲(chǔ)的數(shù)據(jù)發(fā)生變更時(shí),通知相應(yīng)的接口服務(wù)器;

      后臺(tái)服務(wù)器,用于管理多個(gè)客戶端的數(shù)據(jù),并將所述客戶端的數(shù)據(jù)同步存儲(chǔ)至緩存服務(wù)器。

      進(jìn)一步地,所述接口服務(wù)器具體用于:通過消息中間件或套接字與所述緩存服務(wù)器建立數(shù)據(jù)通道,并在數(shù)據(jù)通道上監(jiān)聽所述緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)同步裝置的實(shí)現(xiàn)數(shù)據(jù)同步的方法,包括如下步驟:

      在數(shù)據(jù)同步裝置啟動(dòng)時(shí),從緩存服務(wù)器讀取所需的數(shù)據(jù)并存儲(chǔ)至本地;

      監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更;

      當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),重新從緩存服務(wù)器讀取所需的數(shù)據(jù)并存儲(chǔ)至本地。

      進(jìn)一步地,所述實(shí)現(xiàn)數(shù)據(jù)同步的方法,還包括:

      所述數(shù)據(jù)同步裝置接收客戶端的連接訪問請(qǐng)求,根據(jù)連接訪問請(qǐng)求讀取相應(yīng)的本地存儲(chǔ)的數(shù)據(jù)。

      進(jìn)一步地,所述監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更包括:

      通過消息中間件與所述緩存服務(wù)器建立第一數(shù)據(jù)通道,并在第一數(shù)據(jù)通道上監(jiān)聽所述緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      進(jìn)一步地,所述監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更包括:

      通過套接字與所述緩存服務(wù)器建立第二數(shù)據(jù)通道,并在第二數(shù)據(jù)通道上監(jiān)聽所述緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      本發(fā)明提供的技術(shù)方案,通過在數(shù)據(jù)同步裝置啟動(dòng)時(shí),從緩存服務(wù)器讀取所需的數(shù)據(jù)并存儲(chǔ)至本地;然后監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更;當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),重新從緩存服務(wù)器讀取所需的數(shù)據(jù)并存儲(chǔ)至本地,從而使得數(shù)據(jù)同步裝置與緩存服務(wù)器之間始終保持?jǐn)?shù)據(jù)同步;

      進(jìn)一步地,本發(fā)明的客戶端訪問系統(tǒng),通過在接口服務(wù)器上應(yīng)用本發(fā)明的數(shù)據(jù)同步裝置及其實(shí)現(xiàn)數(shù)據(jù)同步的方法,使得接口服務(wù)器與緩存服務(wù)器之間始終保持?jǐn)?shù)據(jù)同步,當(dāng)接口服務(wù)器接收到客戶端的連接訪問請(qǐng)求時(shí),不需要從緩存服務(wù)器讀取最新的數(shù)據(jù),解決了由于網(wǎng)站規(guī)模的擴(kuò)大以及訪問量的提高,導(dǎo)致緩存服務(wù)器訪問性能下降的問題。

      附圖說明

      此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:

      圖1為一種客戶端訪問系統(tǒng)的硬件結(jié)構(gòu)示意圖;

      圖2為本發(fā)明的第一種數(shù)據(jù)同步裝置的結(jié)構(gòu)示意圖;

      圖3為本發(fā)明的第二種數(shù)據(jù)同步裝置的結(jié)構(gòu)示意圖;

      圖4為本發(fā)明的第一種實(shí)現(xiàn)數(shù)據(jù)同步的方法的流程示意圖;

      圖5為本發(fā)明的第二種實(shí)現(xiàn)數(shù)據(jù)同步的方法的流程示意圖。

      具體實(shí)施方式

      下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      如圖2所示,根據(jù)本發(fā)明的一種數(shù)據(jù)同步裝置,包括監(jiān)聽模塊10、讀取模塊20和存儲(chǔ)模塊30;

      其中,監(jiān)聽模塊10,用于監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更,當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),通知讀取模塊20;

      讀取模塊20,用于在自身所屬裝置啟動(dòng)時(shí),從緩存服務(wù)器讀取所需的數(shù)據(jù),并存儲(chǔ)至存儲(chǔ)模塊30;當(dāng)接收到來自監(jiān)聽模塊10的通知時(shí),重新從緩存服務(wù)器讀取所需的數(shù)據(jù),并更新存儲(chǔ)模塊30存儲(chǔ)的數(shù)據(jù);

      存儲(chǔ)模塊30,用于存儲(chǔ)讀取模塊20所讀取的數(shù)據(jù)。

      可選地,監(jiān)聽模塊10具體用于:通過消息中間件與緩存服務(wù)器建立第一數(shù)據(jù)通道,并在第一數(shù)據(jù)通道上監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。消息中間件是介于應(yīng)用系統(tǒng)和系統(tǒng)軟件之間的一類軟件,它使用系統(tǒng)軟件所提供的基礎(chǔ)服務(wù)功能,銜接網(wǎng)絡(luò)上應(yīng)用系統(tǒng)的各個(gè)部分或不同的應(yīng)用,能夠達(dá)到資源共享、功能共享的目的,它的出現(xiàn)保證了消息傳輸?shù)目煽啃?、高效性和安全性?/p>

      具體的,在緩存服務(wù)器端配置消息中間件的消息發(fā)布者,在監(jiān)聽模塊10中配置消息中間件的某一主題(topic)的消息訂閱者,當(dāng)后臺(tái)管理界面針對(duì)某一主題的數(shù)據(jù)進(jìn)行新增、修改或者刪除操作時(shí),后臺(tái)服務(wù)器首先保存相關(guān)數(shù)據(jù)至數(shù)據(jù)庫(kù)中,然后將變更數(shù)據(jù)同步更新至緩存服務(wù)器中,緩存服務(wù)器向消息中間件系統(tǒng)中的相關(guān)主題發(fā)布一條數(shù)據(jù)變更通知;監(jiān)聽模塊10接收到該主題的數(shù)據(jù)變更通知后,通知讀取模塊20。

      可選地,本發(fā)明的消息中間件為Redis、Kafka或消息隊(duì)列(Message Queue,MQ)等等現(xiàn)有的消息中間件。Redis(REmote DIctionary Server)是一個(gè)開源的內(nèi)存存儲(chǔ)系統(tǒng),可以同時(shí)用來做數(shù)據(jù)庫(kù)、緩存或者消息代理服務(wù)。Kafka是一個(gè)分布式的基于推送-訂閱(push-subscribe)的消息系統(tǒng),它具備快速、可擴(kuò)展、可持久化的特點(diǎn)。消息隊(duì)列MQ是分布式應(yīng)用間交換信息的一種技術(shù),消息隊(duì)列可駐留在內(nèi)存或者磁盤上,隊(duì)列存儲(chǔ)消息直到它們被應(yīng)用程序讀走。消息隊(duì)列MQ包括RabbitMQ、ActiveMQ和ZeroMQ等等現(xiàn)有的消息中間件,RabbitMQ是實(shí)現(xiàn)高級(jí)消息隊(duì)列協(xié)議(AMQP)的消息中間件的一種,用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息;ActiveMQ是阿帕奇(Apache)軟件基金下的一個(gè)開源軟件,遵循JMS(Java Message Service)規(guī)范;ZeroMQ是一個(gè)非常輕量級(jí)的消息系統(tǒng),專門為高吞吐量/低延遲的場(chǎng)景開發(fā)。

      具體地,如果緩存服務(wù)器為Redis緩存服務(wù)器,本發(fā)明的消息中間件優(yōu)選使用Redis消息中間件。

      可選地,監(jiān)聽模塊10具體用于:通過套接字(Socket)與緩存服務(wù)器建立第二數(shù)據(jù)通道,并在第二數(shù)據(jù)通道上監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。Socket用于描述IP地址和端口,可以用來實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。

      具體的,在緩存服務(wù)器端配置服務(wù)器端套接字,在監(jiān)聽模塊10中配置客戶端套接字。緩存服務(wù)器實(shí)時(shí)監(jiān)聽客戶端套接字的連接請(qǐng)求;客戶端套接字發(fā)起連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字;緩存服務(wù)器接收到客戶端套接字的連接請(qǐng)求,響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,第二數(shù)據(jù)通道就建立好了。當(dāng)后臺(tái)服務(wù)器數(shù)據(jù)變更導(dǎo)致緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),緩存服務(wù)器通過第二數(shù)據(jù)通道向監(jiān)聽模塊10發(fā)送一條數(shù)據(jù)變更通知;監(jiān)聽模塊10接收到緩存服務(wù)器的數(shù)據(jù)變更通知后,通知讀取模塊20。

      可選地,當(dāng)讀取模塊20接收到來自監(jiān)聽模塊10的通知時(shí),重新從緩存服務(wù)器讀取全部所需的數(shù)據(jù)。

      可選地,緩存服務(wù)器發(fā)送至監(jiān)聽模塊10的數(shù)據(jù)變更通知中,包括緩存服務(wù)器的具體變更信息。例如:所述具體變更信息包括變更文件名及其地址。當(dāng)監(jiān)聽模塊10接收到緩存服務(wù)器的數(shù)據(jù)變更通知并通知讀取模塊20時(shí),將緩存服務(wù)器的具體變更信息發(fā)送至讀取模塊20。讀取模塊20根據(jù)具體變更信息,讀取緩存服務(wù)器的相應(yīng)的變更數(shù)據(jù),并更新存儲(chǔ)模塊存儲(chǔ)的數(shù)據(jù)。

      在本發(fā)明的一實(shí)施例中,存儲(chǔ)模塊30包括緩存存儲(chǔ)單元和/或硬盤存儲(chǔ)單元。

      具體的,讀取模塊30將讀取的緩存服務(wù)器的數(shù)據(jù),存儲(chǔ)至存儲(chǔ)模塊的緩存存儲(chǔ)單元中,或者存儲(chǔ)至存儲(chǔ)模塊的硬盤存儲(chǔ)單元中,或者同時(shí)存儲(chǔ)至緩存存儲(chǔ)單元和硬盤存儲(chǔ)單元中。

      進(jìn)一步地,如圖3所示,本發(fā)明的數(shù)據(jù)同步裝置,還包括:數(shù)據(jù)處理模塊40,用于接收客戶端的連接訪問請(qǐng)求,根據(jù)連接訪問請(qǐng)求讀取存儲(chǔ)模塊30中相應(yīng)的數(shù)據(jù)。

      本發(fā)明實(shí)施例還提供了一種客戶端訪問系統(tǒng),包括客戶端、接口服務(wù)器、緩存服務(wù)器和后臺(tái)服務(wù)器;

      客戶端,用于發(fā)起連接訪問請(qǐng)求至相應(yīng)的接口服務(wù)器;

      接口服務(wù)器,用于在啟動(dòng)時(shí),從緩存服務(wù)器讀取自身所連的客戶端所需的數(shù)據(jù),并存儲(chǔ)至本地;監(jiān)聽緩存服務(wù)器中相應(yīng)的數(shù)據(jù)是否發(fā)生變更;當(dāng)監(jiān)聽到緩存服務(wù)器中相應(yīng)的數(shù)據(jù)發(fā)生變更時(shí),重新從緩存服務(wù)器讀取客戶端所需的數(shù)據(jù),并更新本地存儲(chǔ)的數(shù)據(jù);接收客戶端的連接訪問請(qǐng)求,根據(jù)連接訪問請(qǐng)求讀取相應(yīng)的本地存儲(chǔ)的數(shù)據(jù)并生成連接訪問響應(yīng),將連接訪問響應(yīng)返回至客戶端;

      緩存服務(wù)器,用于同步存儲(chǔ)后臺(tái)服務(wù)器的數(shù)據(jù);當(dāng)存儲(chǔ)的數(shù)據(jù)發(fā)生變更時(shí),通知相應(yīng)的接口服務(wù)器;

      后臺(tái)服務(wù)器,用于管理多個(gè)客戶端的數(shù)據(jù),并將所述客戶端的數(shù)據(jù)同步存儲(chǔ)至緩存服務(wù)器。

      可選地,接口服務(wù)器通過消息中間件與緩存服務(wù)器建立第一數(shù)據(jù)通道,并在第一數(shù)據(jù)通道上監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      具體的,在緩存服務(wù)器端配置消息中間件的消息發(fā)布者,在接口服務(wù)器端配置消息中間件的某一主題的消息訂閱者,當(dāng)后臺(tái)管理界面針對(duì)某一主題的數(shù)據(jù)進(jìn)行新增、修改或者刪除操作時(shí),后臺(tái)服務(wù)器首先保存相關(guān)數(shù)據(jù)至數(shù)據(jù)庫(kù)中,然后將變更數(shù)據(jù)同步更新至緩存服務(wù)器中,緩存服務(wù)器向消息中間件系統(tǒng)中的相關(guān)主題發(fā)布一條數(shù)據(jù)變更通知;接口服務(wù)器接收到該主題的數(shù)據(jù)變更通知。

      可選地,本發(fā)明的消息中間件為Redis、Kafka或消息隊(duì)列(Message Queue,MQ)等等現(xiàn)有的消息中間件。

      具體地,如果緩存服務(wù)器為Redis緩存服務(wù)器,本發(fā)明的消息中間件優(yōu)選使用Redis消息中間件。

      可選地,接口服務(wù)器通過套接字與緩存服務(wù)器建立第二數(shù)據(jù)通道,并在第二數(shù)據(jù)通道上監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      具體的,在緩存服務(wù)器端配置服務(wù)器端套接字,在接口服務(wù)器端配置客戶端套接字。緩存服務(wù)器實(shí)時(shí)監(jiān)聽客戶端套接字的連接請(qǐng)求;客戶端套接字發(fā)起連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字;緩存服務(wù)器接收到客戶端套接字的連接請(qǐng)求,響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,第二數(shù)據(jù)通道就建立好了。當(dāng)后臺(tái)服務(wù)器數(shù)據(jù)發(fā)生變更導(dǎo)致緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),緩存服務(wù)器通過第二數(shù)據(jù)通道向接口服務(wù)器發(fā)送一條數(shù)據(jù)變更通知。

      可選地,當(dāng)接口服務(wù)器接收到數(shù)據(jù)變更通知后,重新從緩存服務(wù)器讀取全部所需的數(shù)據(jù)。

      可選地,緩存服務(wù)器發(fā)送的數(shù)據(jù)變更通知中,包括緩存服務(wù)器的具體變更信息。例如:所述具體變更信息包括變更文件名及其地址。當(dāng)接口服務(wù)器接收到緩存服務(wù)器的數(shù)據(jù)變更通知后,根據(jù)其中的具體變更信息,讀取緩存服務(wù)器的相應(yīng)的變更數(shù)據(jù),并更新接口服務(wù)器上存儲(chǔ)的數(shù)據(jù)。

      在本發(fā)明的一實(shí)施例中,接口服務(wù)器將讀取的緩存服務(wù)器的數(shù)據(jù),存儲(chǔ)至緩存存儲(chǔ)單元和/或硬盤存儲(chǔ)單元。

      具體的,接口服務(wù)器將讀取的緩存服務(wù)器的數(shù)據(jù),緩存至本地的緩存存儲(chǔ)單元中,或者存儲(chǔ)至本地的硬盤存儲(chǔ)單元中,或者同時(shí)緩存至緩存存儲(chǔ)單元以及存儲(chǔ)至硬盤存儲(chǔ)單元中。

      如圖4所示,根據(jù)本發(fā)明的一種數(shù)據(jù)同步裝置的實(shí)現(xiàn)數(shù)據(jù)同步的方法,包括以下步驟:

      步驟101:在數(shù)據(jù)同步裝置啟動(dòng)時(shí),從緩存服務(wù)器讀取所需的數(shù)據(jù)并存儲(chǔ)至本地;

      步驟102:監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更;

      步驟103:當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),重新從緩存服務(wù)器讀取所需的數(shù)據(jù)并存儲(chǔ)至本地。

      可選地,所述監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更包括:通過消息中間件與緩存服務(wù)器建立第一數(shù)據(jù)通道,并在第一數(shù)據(jù)通道上監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      具體的,在緩存服務(wù)器端配置消息中間件的消息發(fā)布者,在數(shù)據(jù)同步裝置中配置消息中間件的某一主題(topic)的消息訂閱者,當(dāng)后臺(tái)管理界面針對(duì)某一主題的數(shù)據(jù)進(jìn)行新增、修改或者刪除操作時(shí),后臺(tái)服務(wù)器首先保存相關(guān)數(shù)據(jù)至數(shù)據(jù)庫(kù)中,然后將變更數(shù)據(jù)同步更新至緩存服務(wù)器中,緩存服務(wù)器向消息中間件系統(tǒng)中的相關(guān)主題發(fā)布一條數(shù)據(jù)變更通知,數(shù)據(jù)同步裝置接收到該主題的數(shù)據(jù)變更通知。

      可選地,本發(fā)明的消息中間件為Redis、Kafka或MQ(Message Queue)等等現(xiàn)有的消息中間件。

      具體地,如果服務(wù)器為Redis緩存服務(wù)器,本發(fā)明的消息中間件優(yōu)選使用Redis消息中間件。

      可選地,所述監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更包括:通過套接字(Socket)與緩存服務(wù)器建立第二數(shù)據(jù)通道,并在第二數(shù)據(jù)通道上監(jiān)聽緩存服務(wù)器的數(shù)據(jù)是否發(fā)生變更。

      具體的,在緩存服務(wù)器端配置服務(wù)器端套接字,在數(shù)據(jù)同步裝置中配置客戶端套接字。緩存服務(wù)器實(shí)時(shí)監(jiān)聽客戶端套接字的連接請(qǐng)求;客戶端套接字發(fā)起連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字;緩存服務(wù)器接收到客戶端套接字的連接請(qǐng)求,響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,第二數(shù)據(jù)通道就建立好了。當(dāng)后臺(tái)服務(wù)器數(shù)據(jù)發(fā)生變更導(dǎo)致緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),緩存服務(wù)器通過第二數(shù)據(jù)通道向數(shù)據(jù)同步裝置發(fā)送一條數(shù)據(jù)變更通知。

      可選地,當(dāng)監(jiān)聽到緩存服務(wù)器的數(shù)據(jù)發(fā)生變更時(shí),重新從緩存服務(wù)器讀取全部所需的數(shù)據(jù)。

      可選地,緩存服務(wù)器發(fā)送的數(shù)據(jù)變更通知中,包括緩存服務(wù)器的具體變更信息。例如:所述具體變更信息包括變更文件名及其地址。當(dāng)接收到緩存服務(wù)器的數(shù)據(jù)變更通知后,根據(jù)其中的具體變更信息,讀取緩存服務(wù)器的相應(yīng)的變更數(shù)據(jù),并更新本地存儲(chǔ)的數(shù)據(jù)。

      在本發(fā)明的一實(shí)施例中,將讀取的緩存服務(wù)器的數(shù)據(jù),存儲(chǔ)至緩存存儲(chǔ)單元和/或硬盤存儲(chǔ)單元。

      具體的,將讀取的緩存服務(wù)器的數(shù)據(jù),緩存至本地的緩存存儲(chǔ)單元中,或者存儲(chǔ)至本地的硬盤存儲(chǔ)單元中,或者同時(shí)緩存至緩存存儲(chǔ)單元以及存儲(chǔ)至硬盤存儲(chǔ)單元中。

      進(jìn)一步地,如圖5所示,本發(fā)明的數(shù)據(jù)同步裝置的實(shí)現(xiàn)數(shù)據(jù)同步的方法,還包括:

      步驟104:所述數(shù)據(jù)同步裝置接收客戶端的連接訪問請(qǐng)求,根據(jù)連接訪問請(qǐng)求讀取相應(yīng)的本地存儲(chǔ)的數(shù)據(jù)。

      本發(fā)明的客戶端訪問系統(tǒng),通過在接口服務(wù)器上應(yīng)用本發(fā)明的數(shù)據(jù)同步裝置及其實(shí)現(xiàn)數(shù)據(jù)同步的方法,使得接口服務(wù)器與緩存服務(wù)器之間始終保持?jǐn)?shù)據(jù)同步,當(dāng)接口服務(wù)器接收到客戶端的連接訪問請(qǐng)求時(shí),不需要從緩存服務(wù)器讀取最新的數(shù)據(jù),解決了由于網(wǎng)站規(guī)模的擴(kuò)大以及訪問量的提高,導(dǎo)致緩存服務(wù)器訪問性能下降的問題。

      需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。

      通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(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ù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

      以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1