Geode/Gemfire 是Pivotal公司開發的一款開源的、分布式NoSql內存數據庫,可用來進行完成分布式緩存,數據持久化,分布式事物、動態擴展等功能。
他的優點和特性:
-
性能擴展,線性擴展,事物和讀寫低延遲
-
通過全局的分布式應用進行一致的數據庫操作
-
高可用性和高伸縮性,全局規模
-
強大的開發者特性
-
簡單的分布式節點管理
- 動態復制和分區技術
- 可快速並行恢復的持久化
- 快速內存存儲,優化的大堆內存,數據壓縮,磁盤溢出回收和數據超時機制
- 分布式位置感知功能
- 分布式事物ACID
- 支持類SQL和索引
- 服務器可以將數據事件通知客戶端,同步或者異步的響應客戶端,保證事件順序
- 高可擴展高健壯性的集群技術,失敗檢測、網絡分區檢測
作為世界規模最大的實時交易系統之一12306就是使用的#GemFire#
github源代碼下載地址:https://github.com/apache/incubator-geode
geode文檔地址:http://geode-docs.cfapps.io/
Geode是Gemfire的開源版本,GemFire是商業版本,最初被應用於對實時數據處理要求很高的華爾街的金融部門。
安裝調試:
1、所需環境: jdk1.8
2、編譯:
1)如果使用Geode,則需要編譯 后方可使用。
由於使用gradle編譯,客戶端需要安裝gradle編譯環境。gradle需要下載大量的依賴包進行編譯,所以這一步必須翻*牆才能下載。建議使用最新版的自*由*men,很好用。
我最初使用了XX-net,雖然可以翻**牆,但是下載依賴包卻總是報錯,可能代理有某些限制,換了自*由*men就一切順利了。
2)如果使用GemFire已編譯好的版本,則無需理會上述麻煩,可直接使用。
3、分布式環境搭建
至少兩台機器,同時保證兩台機器使用相同版本,要么都用Geode,要么都用Gemfire,不然無法啟動server。
增加環境變量 GEODE_HOME=F:\dev\BigData\incubator-geode-develop\gemfire-assembly\build\install\apache-geode
Path里增加:%GEODE_HOME%\bin;
編譯后的文件都放在F:\dev\BigData\incubator-geode-develop\gemfire-assembly\build\install目錄下。
搭建過程參考如何命令和快速上手教程。
4、概念介紹
gfsh geode的命令行shell工具,用於執行如下命令
locator 定位器,相當於master-slave中的master,或者zookeeper,主要用於管理集群,和鏈接不同的server。
gfsh> start locator --name=locator1
server 服務器,可以部署在同一台機器,也可以部署在不同機器。在不同的機器上啟動時,需要先用connect連接已啟動的locator
connect --locator=ip[locator的port]
start server --name=server1
region 數據區域,或者叫表,是數據存儲的基本單位,以下創建一個在集群內自動復制的,自動持久化的region,並持久化數據
create region --name=regionA --type=REPLICATE_PERSISTENT
put --region=regionA --key="1" --value="one"
OQL 類SQL的腳本,用來查數
query --query="select * from /regionA"
以上命令的執行默認是以集群為范圍的,如果要單機執行,需要修改apache-geode\config\gemfire.properties文件中的屬性:enable-cluster-configuration=true,改為false。
5、快速上手教程:
http://geode-docs.cfapps.io/docs/getting_started/15_minute_quickstart_gfsh.html
下一篇,我將講解應用程序如何使用Geode進行緩存。
對於Geode的學習,最終目的是源代碼閱讀,看看Geode如何實現了這么強大的分布式數據庫。
歡迎大家一起學習,交流經驗,不吝指教,謝謝!