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