GemFire 入門篇1:GemFire 是什么?


一、GemFire是什么?
 
如果你了解Redis或memCached,那么恭喜,你很快就能理解GemFire是什么,沒錯,你可以把它理解為一個增強版的Redis,具體在哪些方面增強,我們日后慢慢聊。如果你不了解Redis,也沒有關系,先看官方網站上的說法:Pivotal GemFire is the distributed, in-memory database for developers who are building the highest scaling and performing data-centric apps in the world. 但是,按照我對它的理解,我更願意用下面的語言來描述它,GemFire是一個高性能的分布式內存對象緩存系統,如果非要說它是數據庫,那也只能算是一個Key/Value數據庫(我更願意稱之為Key/Value存儲系統)
 
我們通過把對象或數據緩存在內存中,減少對傳統關系型數據庫的讀寫次數(減少IO瓶頸),從而使我們的應用支持更多的TPS,更多的並發用戶數。GemFire能夠在部分場景下對關系型數據庫起到很好的補充(甚至替代)作用,它可以作為應用層與傳統數據層的“潤滑劑”。
 
二、關於GemFire的前世今生?
 
GemFire的第一個版本發布於2002年3月份,當時它還屬於一家獨立的公司GemStone Systems.后來GemStone System這家公司被VMware給收購了,GemFire也被整合到了VMware Vfabric產品線。請注意,VMWare當時也收購了Redis項目。在2013年4月EMC與VMware/GE合資成立一家新公司Pivotal,VMware慷慨的貢獻出了它的vfabric產品線,以及它收購的一些開源項目。
 
目前,GemFire的商業版權已經屬於Pivotal了。順便說一句,Redis的創始人Salvatore Sanfilippo 現在也供職於Pivotal.
 
三、GemFire有什么特點?
1.分布式數據存儲
•     穩定而高性能的的基於內存的數據數據存儲
•     靈活的Cache部署策略:點對點(peer to peer);客戶端/服務端(client server);多集群(multiple clusters)的本地或遠程數據同步,支持數據高性能災備和雙活
•     靈活的Region(數據對象集或者可理解為表)分布式處理:同一集合數據(可理解為一個表的數據)可以整集多點同步或切割后不同點保存,並支持數據實時再平衡(rebalance)既數據分隔保存后若加入新的空閑服務器,數據可以在不重啟服務的情況下重新切割和平衡數據,從而達到真正的數據在線動態延展
•     具有持續性的數據高可用性和容錯性:各個分散的數據點可以配置一個或多個基於內存的熱備數據點,當主數據點宕機的情況下,其中一個熱備點就會提升稱為主數據點,同時可以繼續在空閑機器上創建備份點,從而達到數據的持續的可用性。同時數據可以通過配置同步或異步地持續化到本地硬盤,或者到指定的數據庫或文件中。
•     數據地客戶端緩存:客戶端可以將最常用數據緩存一個備份與本地,進一步加快效能
•     在線數據備份
•     數據全內存和部分內存策略:通過配置可以將數據全部存入內存,或者通過將非頻繁使用數據擠出策略(LRU)來將部分頻繁適用數據保存於內存中達到成本效益最大化
•     內置資源優化器用以降低JAVA GC所帶來的延遲,支持單個大容量Cache點(一般服務器可配置超過40GB內存的Java heap size)
•     安全支持:基於用戶和角色的數據訪問,數據傳輸渠道加密(SSL)
•     數據存取
•     除key-value簡單cache支持外,支持復雜數據對象和關系存儲
•     豐富的OQL(類SQL)的查詢語言支持
•     支持數據單記錄或批處理
•     本地或分布式事務處理
•     Map-Reduce並行查詢:同一查詢命令可並行發送到各Cache點(Map),結果集自動在客戶端匯合(Reduce)
•     智能定點查詢:查詢命令在包含數據特征如主鍵值時,查詢命令會自動命中數據點
2.服務和事件
•     Function支持: Function相當於一個數據庫存儲過程,區別在於其可動態植入Cache點。
•     親密關系數據同業務邏輯聚合:親密關系數據指需要相互直接依賴完成一個交易的多個數據,例如客戶A和屬於客戶A的產品數據。GemFire可以將業務邏輯涉及到親密關系數據放到同一個計算機進程來處理,避免數據網絡傳輸和數據序列化等帶來的延遲,並極大體現Share Nothing的涉及理念,因為互相不依賴從而加大服務的涉及延展性
•     最大化的並行處理:數據各子集合和業務邏輯可分散在各點並行處理,而不需要想數據庫等產皮按順序處理
•     事件監聽處理:Cache點可以根據數據的增、刪、改和過期等事件來觸發另外的業務邏輯處理。
•     類消息隊列處理:客戶端可以注冊其感興趣數據在Cache點,當滿足條件數據出現時,自動向客戶端發布。可實現類似於消息隊列的Queue 或 Topic機制。
•     持續查詢功能:客戶端可以定制復雜查詢條件在Cache點,同樣在滿足條件的數據出現時向客戶端發送。
•     Delta數據傳輸:所有數據的網絡同步可以選擇只將變化碎片傳輸同步,例如當一個客戶只有地址數據發生改變時,就只需要將地址同步而非整個客戶數據對象。
3.整合與管理:
•     Cache的監控和數據分析工具,便於管理
•     Springdata-GemFire項目,使得GemFire和Spring的集成渾然一體
  
最后,想問一句,今年你買到回家的火車票了嗎?如果你用過12306的網站,那么GemFire已經為你服務過了,雖然只是余票查詢。在接下來的10個月里,我會用每兩周一篇文章的頻率來介紹GemFire.
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM