一種解決Hibernate分布式數據緩存的方法與系統的制作方法
【專利摘要】本發(fā)明公開了一種解決Hibernate分布式數據緩存的系統及方法,其中系統包括:數據緩存服務器路由模塊,用于給應用選擇可用且適合的數據緩存服務器以提供數據緩存服務;數據序列化模塊,用于對需要緩存的數據進行序列化以便于數據緩存服務器進行儲存;數據緩存管理模塊,用于獲取數據緩存服務器上的緩存數據、以及將需要存儲且序列化后的緩存數據轉發(fā)到數據緩存服務器中進行儲存。本發(fā)明對比現有的提供對Hibernate支持的數據緩存的技術方案,本方案能在不增加開發(fā)者的開發(fā)成本的前提下,把緩存數據保存于分布式數據緩存服務器,且當分布式數據緩存集群服務器中部分服務器無法提供服務時,亦能保證數據緩存的完整性和緩存服務。
【專利說明】
_種解決H i bernate分布式數據緩存的方法與系統
技術領域
[0001]本發(fā)明屬于數據緩存管理領域,具體涉及一種解決Hibernate分布式數據緩存的方法與系統。
【背景技術】
[0002]Hibernate是一個開放源代碼的對象關系映射框架,它對java數據庫連接進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate能夠提高開發(fā)者開發(fā)服務應用的開發(fā)速度,并能高效地進行數據庫操作。且當增加Hibernate數據緩存功能,能進一步加快Hibernate的處理速度。所以大量的服務應用使用了該技術框架。
[0003]隨著時代的發(fā)展,服務應用的訪問量不斷增加,需要增加多個應用同時提供服務才能保證服務能正常運行。但是由于Hibernate自身提供的數據緩存只能為單個服務應用提供數據緩存功能,多個服務應用獨立使用緩存會出現多份緩存數據存在,無法對緩存數據統一管理,容易導致數據出現錯誤。同時Hibernate緩存無法給多個其他服務應用共用數據緩存,也難以增加緩存空間以提高緩存的命中率。
[0004]為解決以上問題,現有的方案采用以下三種:
1.Ehcache數據緩存,能把數據緩存在本地服務應用內存中。多個服務應用之間使用中間件Terracotta進行數據同步。其中,Ehcache是一個純Java的進程內緩存框架,具有快速、精干等特點,Terracotta是負責實現高性能、高可用性、高穩(wěn)定性的企業(yè)級Java集群的中間件。
[0005]2.Memcached數據緩存,能把數據存放到統一的分布式數據緩存服務器,并能被多個服務應用共享使用。其中,Memcached是一個高性能的分布式數據緩存系統,分布式數據緩存服務器是數據緩存系統服務器集群。
[0006]3.開發(fā)者在數據操作過程中顯式增加數據緩存處理流程。
[0007]然而,上述方案一定程度上實現了多個其他服務應用共用數據緩存,但是開發(fā)者在程序中顯式增加數據緩存的處理流程,會增大開發(fā)的時間和難度,且會導致代碼可讀性下降。
[0008]使用Ehcache數據緩存時,當出現多個服務應用需要緩存數據同步時,會導致多個應用存在多份相同的緩存數據。安裝與配置中間件Terracotta進行多個服務應用緩存數據同步步驟非常繁瑣復雜,且數據同步極易出現缺漏。
[0009]使用Memcached數據緩存時,當分布式數據緩存服務器中一臺服務器出現無法提供服務時,將會導致部分數據緩存失敗。
【發(fā)明內容】
[0010]為解決上述技術問題,本發(fā)明的目的是提供一種解決Hibernate分布式數據緩存的方法與系統。
[0011]本發(fā)明采用的技術方案是:
一種解決Hibernate分布式數據緩存的系統,包括:
一數據緩存服務器路由模塊,用于給應用選擇可用且適合的數據緩存服務器以提供數據緩存服務;
一數據序列化模塊,用于對需要緩存的數據進行序列化以便于數據緩存服務器進行儲存;
一數據緩存管理模塊,用于獲取數據緩存服務器上的緩存數據、以及將需要存儲且序列化后的緩存數據轉發(fā)到數據緩存服務器中進行儲存。
[0012]進一步,所述數據緩存服務器路由模塊從分布式數據緩存服務器中選擇可用且適合的數據緩存服務器。
[0013]本發(fā)明還包括與上述系統同一發(fā)明構思的數據緩存方法:包括以下步驟:
(A)、應用操作數據時自動調用Hibernate數據緩存機制;
(B)、由數據緩存服務器路由模塊給應用選擇可用且適合的數據緩存服務器;
(C)數據緩存管理模塊查詢步驟B中所選擇的數據緩存服務器是否存在應用操作時的數據緩存;
(D)若存在,數據緩存管理模塊查詢所述數據緩存并獲取數據緩存服務器中存在的數據,然后結束;若不存在,則繼續(xù)進入下一步;
(E)對于不存在于所述數據緩存服務器的緩存數據,數據序列化模塊把需要緩存的數據序列化成便于數據緩存服務器保存的數據;
(F)數據緩存管理模塊轉發(fā)序列化后的數據到所述數據緩存服務器進行存儲。
[0014]進一步,所述步驟B中數據緩存服務器路由模塊從分布式數據緩存服務器中選擇可用且適合的數據緩存服務器。
[0015]進一步,所述步驟B包括:
(BI)應用對數據緩存服務器非直接連接操作;
(B2)應用通過查詢緩存服務器路由模塊的服務選擇合適可用的數據緩存服務器;
(B3)應用根據緩存服務器路由模塊的服務返回數據緩存服務器進行連接操作。
[0016]本發(fā)明的有益效果:
本發(fā)明對比現有的提供對Hibernate支持的數據緩存的技術方案,本方案能在不增加開發(fā)者的開發(fā)成本的前提下,把緩存數據保存于分布式數據緩存服務器,且當分布式數據緩存集群服務器中部分服務器無法提供服務時,亦能保證數據緩存的完整性和緩存服務。
【附圖說明】
[0017]下面結合附圖對本發(fā)明的【具體實施方式】做進一步的說明。
[0018]圖1是本發(fā)明數據緩存系統的原理圖;
圖2是本發(fā)明數據緩存方法的步驟B子流程圖。
【具體實施方式】
[0019]參考圖1所示,為本發(fā)明的一種解決Hibernate分布式數據緩存的系統,包括: 一數據緩存服務器路由模塊,用于給應用從分布式數據緩存服務器中選擇可用且適合的數據緩存服務器以提供數據緩存服務;
一數據序列化模塊,用于對需要緩存的數據進行序列化以便于數據緩存服務器進行儲存;
一數據緩存管理模塊,用于獲取數據緩存服務器上的緩存數據、以及將需要存儲且序列化后的緩存數據轉發(fā)到數據緩存服務器中進行儲存。
[0020]本發(fā)明還包括與上述系統同一發(fā)明構思的數據緩存方法:包括以下步驟:
(A)、應用操作數據時自動調用Hibernate數據緩存機制;
(B)、由數據緩存服務器路由模塊給應用從分布式數據緩存服務器中選擇可用且適合的數據緩存服務器;
(C)數據緩存管理模塊查詢步驟B中所選擇的數據緩存服務器是否存在應用操作時的數據緩存;
(D)若存在,數據緩存管理模塊查詢所述數據緩存并獲取數據緩存服務器中存在的數據,然后結束;若不存在,則繼續(xù)進入下一步;
(E)對于不存在于所述數據緩存服務器的緩存數據,數據序列化模塊把需要緩存的數據序列化成便于數據緩存服務器保存的數據;
(F)數據緩存管理模塊轉發(fā)序列化后的數據到所述數據緩存服務器進行存儲。
[0021]如圖2所示,所述步驟B包括:
(BI)應用對數據緩存服務器非直接連接操作;
(B2)應用通過查詢緩存服務器路由模塊的服務選擇合適可用的數據緩存服務器;
(B3)應用根據緩存服務器路由模塊的服務返回數據緩存服務器進行連接操作。
[0022]如上所述,可以看出本發(fā)明方法基于Hibernate緩存機制,只需要簡單的進行配置即可使Hibernate擁有數據緩存功能,同時多個應用能共用緩存服務中的數據并能保證在分布式數據緩存服務器中出現不可用的服務器亦能保證正常的緩存服務。
[0023]以上所述僅為本發(fā)明的優(yōu)先實施方式,本發(fā)明并不限定于上述實施方式,只要以基本相同手段實現本發(fā)明目的的技術方案都屬于本發(fā)明的保護范圍之內。
【主權項】
1.一種解決Hibernate分布式數據緩存的系統,其特征在于包括: 一數據緩存服務器路由模塊,用于給應用選擇可用且適合的數據緩存服務器以提供數據緩存服務; 一數據序列化模塊,用于對需要緩存的數據進行序列化以便于數據緩存服務器進行儲存; 一數據緩存管理模塊,用于獲取數據緩存服務器上的緩存數據、以及將需要存儲且序列化后的緩存數據轉發(fā)到數據緩存服務器中進行儲存。2.根據權利要求1所述的一種解決Hibernate分布式數據緩存的系統,其特征在于:所述數據緩存服務器路由模塊從分布式數據緩存服務器中選擇可用且適合的數據緩存服務器。3.—種基于上述權利要求1或2所述系統的數據緩存方法:其特征在于:包括以下步驟 (A)、應用操作數據時自動調用Hibernate數據緩存機制; (B)、由數據緩存服務器路由模塊給應用選擇可用且適合的數據緩存服務器; (C)數據緩存管理模塊查詢步驟B中所選擇的數據緩存服務器是否存在應用操作時的數據緩存; (D)若存在,數據緩存管理模塊查詢所述數據緩存并獲取數據緩存服務器中存在的數據,然后結束;若不存在,則繼續(xù)進入下一步; (E)對于不存在于所述數據緩存服務器的緩存數據,數據序列化模塊把需要緩存的數據序列化成便于數據緩存服務器保存的數據; (F)數據緩存管理模塊轉發(fā)序列化后的數據到所述數據緩存服務器進行存儲。4.根據權利要求3所述的數據緩存方法:其特征在于:所述步驟B中數據緩存服務器路由模塊從分布式數據緩存服務器中選擇可用且適合的數據緩存服務器。5.根據權利要求3所述的數據緩存方法:其特征在于:所述步驟B包括: (BI)應用對數據緩存服務器非直接連接操作; (B2)應用通過查詢緩存服務器路由模塊的服務選擇合適可用的數據緩存服務器; (B3)應用根據緩存服務器路由模塊的服務返回數據緩存服務器進行連接操作。
【文檔編號】G06F17/30GK106021569SQ201610377909
【公開日】2016年10月12日
【申請日】2016年5月31日
【發(fā)明人】余敬龍
【申請人】廣東能龍教育股份有限公司