本發明涉及數據緩存技術領域,特別涉及一種跨局域網的Memcache數據共享方法及系統。
背景技術:
Memcache是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,目前被許多網站使用,以提升網站的訪問速度,尤其對于一些大型的、需要頻繁訪問數據庫的網站,其訪問速度提升效果十分顯著。
通常各個Memcache服務系統和數據庫在同一個局域網內,各個Memcache服務系統通過局域網從同一個數據庫獲取數據并加載數據到緩存中,從而實現了多個Memcahe服務器數據共享。但是,當Memcache服務系統和數據庫不在同一個局域網內,并且各個Memcache服務系統分布在不同的局域網時,若各個Memcache服務系統要共享數據庫中的數據,則需要在各個Memcache服務系統所在的局域網內都部署數據庫,并且數據庫之間需要通過同步數據的方式保證數據的一致性。但這種方式需要同步很長時間,從而使Memcache不能及時的提供最新的數據,時效性不高。另外,這種方式需要維護多個數據庫,運維成本比較高。
因而現有技術還有待改進和提高。
技術實現要素:
本發明的目的在于提供一種跨局域網的Memcache數據共享方法及系統。
一種跨局域網的Memcache數據共享系統,其包括:處于第一局域網的緩存服務器和API服務器以及處于第二局域網的數據庫和數據服務器,所述數據服務器從數據庫獲取數據并為所述API服務器提供數據調取接口,所述API服務器通過數據服務器提供的調取接口獲取數據并將所述數據轉存于所述緩存服務器。
所述跨局域網的Memcache數據共享系統,其中,所述第二局域網內還包括WEB服務器,所述WEB服務器用于接收用戶對數據的操作,并根據所述操作對數據庫和/或緩存服務器進行相應操作。
所述跨局域網的Memcache數據共享系統,其中,所述WEB服務器與數據庫通信,并當接收到用戶對數據進行的增加操作時,將所述操作對所述數據寫入數據庫。
所述跨局域網的Memcache數據共享系統,其中,所述WEB服務器與各緩存服務器通信,并當其接收到用戶對數據進行修改和/或刪除操作時,控制緩存服務器內相應的數據失效。
所述跨局域網的Memcache數據共享系統,其中,所述API服務器與數據服務器之間采用JSON格式進行通信。
一種跨局域網的Memcache數據共享方法,其包括:
當處于第一局域網的API服務器接收到外部終端設備的調用數據請求時,所述API服務器從緩存服務器中讀取所述數據,其中,所述緩存服務器處于第一局域網;
若所述API服務器未讀取到所述數據,則所述AIP服務器訪問處于第二局域網的數據服務器以獲取所述數據,并將所述數據加載至所述緩存服務器。
所述跨局域網的Memcache數據共享方法,其中,所述若所述API服務器未讀取到所述數據,則所述AIP服務器訪問處于第二局域網的數據服務器以獲取所述數據,并將所述數據加載至所述緩存服務器具體包括:
若所述API服務器未讀取到所述數據,則所述AIP服務器向所述處于第二局域網的數據服務器發送獲取所述數據的請求;
所述數據服務器從數據庫內獲取所述數據,并將所述數據反饋至所述AIP服務器,其中,所述數據庫處于第二局域網;
所述AIP將所述數據加載至所述緩存服務器。
所述跨局域網的Memcache數據共享方法,其中,所述若所述API服務器未讀取到所述數據,則所述AIP服務器向所述處于第二局域網的數據服務器發送獲取所述數據的請求具體包括:
所述AIP服務器獲取所述數據服務器的IP及端口,并將所述IP及端口拼接為調用接口的url;
根據所述url與所述數據服務器建立連接,并向所述處于第二局域網的數據服務器發送獲取所述數據的請求。
所述跨局域網的Memcache數據共享方法,其中,所述第二局域網內還包括WEB服務器,所述方法還包括:
當所述WEB服務器接收到數據處理指令時,判斷所述處理指令的類型,其中,所述數據處理指令的類型為增加/查詢/修改/刪除;
當所述數據處理指令為增加時,所述WEB服務器將所述數據處理指令對應的數據寫入數據庫。
所述跨局域網的Memcache數據共享方法,其還包括:
當所述數據處理指令為修改/刪除數據時,所述WEB服務器控制數據庫修改/刪除所述數據處理指令對應的數據;
所述WEB服務器根據所述數據處理指令失效各緩存服務器內相應的數據。
有益效果:與現有技術相比,本發明提供了一種跨局域網的Memcache數據共享方法及系統,所述系統包括處于第一局域網的緩存服務器和API服務器以及處于第二局域網的數據庫和數據服務器,所述數據服務器從數據庫獲取數據并為所述API服務器提供數據調取接口,所述API服務器通過數據服務器提供的調取接口獲取數據并將所述數據轉存于所述緩存服務器。本系統采用了不同局域網內的AIP服務器從同一數據庫獲取數據的策略,從而避免了數據不一致的風險,降低了維護成本。
附圖說明
圖1為本發明提供的跨局域網的Memcache數據共享系統的結構原理圖。
圖2為本發明提供的跨局域網的Memcache數據共享方法較佳實施的流程圖。
具體實施方式
本發明提供一種跨局域網的Memcache數據共享方法及系統,為使本發明的目的、技術方案及效果更加清楚、明確,以下參照附圖并舉實施例對本發明進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不用于限定本發明。
本發明中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發明的說明,其本身并沒有特定的意義。因此,“模塊”、“部件”或“單元”可以混合地使用。
下面結合附圖,通過對實施例的描述,對發明內容作進一步說明。
請參照圖1,圖1為本發明提供的跨局域網的Memcache數據共享系統的結構原理圖。所述系統包括:其包括:處于第一局域網的AIP服務器101和緩存服務器102,以及處于第二局域網的數據庫202和數據服務器201,所述第一局域網和第二局域為不同的局域網。所述數據服務器201從數據庫202獲取數據并為AIP服務器101提供數據調取接口,所述AIP服務器101通過數據服務器提供的調取接口獲取數據。本系統采用了不同局域網內的各AIP服務器從同一數據庫獲取數據的策略,從而避免了數據不一致的風險,降低了維護成本。
示例性的,所述API服務器101(Application Program Interface 服務器,調用服務器)用于從數據服務器201獲取數據,并將所述數據加載到緩存服務器102中。所述緩沖服務器102用于存儲API服務器101獲取的數據。在實際應用中,當API服務器101獲取數據時,還可以包括一個判斷過程,其具體可以為:API服務器判斷緩存服務器內是否存儲所述數據,當緩存服務器內為存儲所述數據時,將所述數據加載到緩存服務器中。所述API服務器內置Memcache客戶端,通過內置的Memcache客戶端與緩存服務器連接,并將獲取緩存服務器的數據。
所述API服務器101還用于接收客戶端調用數據請求,并根據所述調用請求查找緩存服務器內是否存儲其對應的數據,如果請求的數據存儲于緩存服務器,則直接把請求數據返回,不再對數據庫進行任何操作;如果請求的數據未存儲于緩存服務器中,則API服務器通過數據服務器判斷所述數據庫中是否存在該數據,當存在時,通過數據服務器從數據庫中獲取的數據返回給客戶端,同時將數據加載于緩存服務器中;并且每次更新數據庫的同時更新緩存服務器中的數據,以保證數據的一致性。
示例性的,所述數據服務器201采用SpringMVC框架,發布Restful風格的調用接口,如http://ip/tpl/layout。所述數據服務器從數據庫中獲取數據,然后將Java對象轉成JSON格式的字符串向外發布。也就是說,所述數據服務器201將從數據庫202獲取的數據共享給其他不同局域網的各AIP服務器101,使得API服務器101統通過數據服務器201從統一的數據庫獲取數據。各局域網內API服務器101通過調用數據服務器201提供的接口來獲取數據,并將數據加載到緩存服務器102中。這樣避免了API服務器101直接訪問數據庫,保證了數據的安全性。同時,通過數據服務器201統一發布數據,將多次數據庫查詢的結果通過調用一次接口獲取,這種方式降低了網絡開銷,提高了獲取數據的效率。在實際應用中,當各局域網內的API服務器101與數據服務器201連接具體過程可以為:AIP服務器101首先獲取數據服務器201的IP地址以及端口,將所述IP地址和端口拼接為調用接口的url(Uniform Resource Locator,統一資源定位符),所述API服務器通過內置HTTP客戶端根據調用接口的url以GET方式調用數據服務器暴露的調用接口,并通過所述調用接口獲取數據。
示例性的,所述第二局域網內還包括WEB服務器203,所述WEB服務器203用于接收用戶對數據的操作,并根據所述操作對數據庫和/或緩存服務器進行相應操作。所述WEB服務器采用SpringMVC框架實現,提供對數據庫內的數據進行增加/刪除/修改/查詢的操作,用戶通過瀏覽器訪問WEB服務器203,在線對數據庫進行操作。
在本實施例中,所述WEB服務器203在對數據庫進行操作時,會判斷所述操作的類型為增加/查詢操作還是修改/刪除操作。當操作類型為修改/刪除操作時,WEB服務器對數據庫中相應數據進行操作后,還會遠程失效各個局域內的緩存服務器中的數據,使緩存服務器能及時更新的數據,從而保證了各個緩存服務器102中的數據的時效性,以及緩存服務器102中數據與數據庫201內數據的一致性。
進一步,為了保證緩存服務器102和數據庫201中數據的一致性,在遠程對緩存服務器102失效時,采用事務的策略,將數據庫的操作和緩存服務器102的失效操作放到一個事務中,以保證了緩存服務器102和數據庫中數據的一致性。具體地,當WEB服務器203接收到修改/刪除操作時,將對數據庫202內相應的數據以及緩存服務器內的相應的數據的遠程失效放在一個事務中進行執行,以保證緩存服務器102和數據庫中數據的一致性。
進一步,由于對數據庫的操作和緩存服務器的操作是分開進行的,因此可能存在數據庫操作成功,緩存服務器的操作失敗而導致的數據不一致的問題。從而,在對緩存服務器內的數據進行失效操作后,WEB服務器還進行一個驗證過程,其具體為:當WEB服務器對緩存服務器進行失效操作時,判斷所述失效操作是否成功;當所述失效操作失敗時,對數據庫進行恢復操作,所述恢復操作用于恢復所述失效操作對應的數據。
示例性地,當所述操作為修改數據操作時,WEB服務器對數據庫和緩存服務器進行的修改操作具體為:先將修更新數據庫的數據再失效緩存服務器內數據。當失效操作失敗時,返回失效的節點IP及失效的數據的key,記錄到日志中;WEB服務器將將緩存服務器中的舊數據更新到數據庫中,并標記本次失效失敗,提示操作人員重新操作。
示例性地,當所述操作為刪除數據操作時,WEB服務器對數據庫和緩存服務器進行的修改操作具體為:事務的操作順序是先刪除數據然后失效數據。當失效操作失敗時:返回失效的節點IP及失效的數據的key,記錄到日志中。將緩存中的舊數據添加到數據庫中,并標記本次失效失敗,提示操作人員重新操作。
基于上述的跨局域網的Memcache數據共享系統,提供了一種跨局域網的Memcache數據共享方法,如圖2所示,其包括:
一種跨局域網的Memcache數據共享方法,其包括:
S100、當處于第一局域網的API服務器接收到外部終端設備的調用數據請求時,所述API服務器從緩存服務器中讀取所述數據,其中,所述緩存服務器處于第一局域網;
S200、若所述API服務器未讀取到所述數據,則所述AIP服務器訪問處于第二局域網的數據服務器以獲取所述數據,并將所述數據加載至所述緩存服務器。
所述跨局域網的Memcache數據共享方法,其中,所述若所述API服務器未讀取到所述數據,則所述AIP服務器訪問處于第二局域網的數據服務器以獲取所述數據,并將所述數據加載至所述緩存服務器具體包括:
S201、若所述API服務器未讀取到所述數據,則所述AIP服務器向所述處于第二局域網的數據服務器發送獲取所述數據的請求;
S202、所述數據服務器從數據庫內獲取所述數據,并將所述數據反饋至所述AIP服務器,其中,所述數據庫處于第二局域網;
S203、所述AIP將所述數據加載至所述緩存服務器。
所述跨局域網的Memcache數據共享方法,其中,所述若所述API服務器未讀取到所述數據,則所述AIP服務器向所述處于第二局域網的數據服務器發送獲取所述數據的請求具體包括:
S2011、所述AIP服務器獲取所述數據服務器的IP及端口,并將所述IP及端口拼接為調用接口的url;
S2012、根據所述url與所述數據服務器建立連接,并向所述處于第二局域網的數據服務器發送獲取所述數據的請求。
所述跨局域網的Memcache數據共享方法,其中,所述第二局域網內還包括WEB服務器,所述方法還包括:
當所述WEB服務器接收到數據處理指令時,判斷所述處理指令的類型,其中,所述數據處理指令的類型為增加/查詢/修改/刪除;
當所述數據處理指令為增加時,所述WEB服務器將所述數據處理指令對應的數據寫入數據庫。
所述跨局域網的Memcache數據共享方法,其還包括:
當所述數據處理指令為修改/刪除數據時,所述WEB服務器控制數據庫修改/刪除所述數據處理指令對應的數據;
所述WEB服務器根據所述數據處理指令失效各緩存服務器內相應的數據。
在本發明所提供的實施例中,應該理解到,所揭露的系統和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用硬件加軟件功能單元的形式實現。
上述以軟件功能單元的形式實現的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執行本發明各個實施例所述方法的部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。