# gemfire **Repository Path**: naclnezn/gemfire ## Basic Information - **Project Name**: gemfire - **Description**: Apache Geode 是一个数据管理平台(gemfire是它的商业版本)可在广泛分布的云架构中提供对数据密集型应用程序的实时、一致的访问 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-09-03 - **Last Updated**: 2025-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gemfire ## 介绍 Apache Geode 是一个数据管理平台,可在广泛分布的云架构中提供对数据密集型应用程序的实时、一致的访问。 Geode 跨多个进程汇集内存、CPU、网络资源和可选的本地磁盘,以管理应用程序对象和行为。它使用动态复制和数据分区技术来实现高可用性、改进的性能、可伸缩性和容错性。 除了作为分布式数据容器之外,Geode 还是一个内存数据管理系统,可提供可靠的异步事件通知和有保证的消息传递。 (gemfire是它的商业版本) ## 主要组件概念 - locator:locator 定位器,类似于 zk ,进行选举协调,服务发现等功能,我们的应用程序链接的是 locator 定位器 - server:真正提供缓存服务的功能 - region:对数据进行区域划分,类似数据库中表的概念 - gfsh:Geode 的命令行控制台 - client:链接 Geode 服务的客户端 ## Geode 特性 - 高读写吞吐量 - 低且可预测的延迟 - 高可扩展性 - 持续可用性 - 可靠的事件通知 - 数据存储上的并行应用程序行为 - 无共享磁盘持久性 - 降低拥有成本 - 客户/服务器的单跳能力 - 客户/服务器安全 - 多站点数据分布 - 连续查询 - 异构数据共享 ## Geode 与 Redis 总体来说 Geode 的功能包含 Redis 的功能,但是还是有一些迥异点的 - 定位不同:Geode 定位数据管理平台,强调实时一致性, Redis 高速缓存。 - 集群:Geode 天然支持集群,节点是对等的,Redis 集群去中心化,主从复制。 - 部署方式:Geode 有点对点方式、C/S 方式、WAN 多数据中心方式,而 Redis 是 C/S 主从方式、集群方式。 - 查询:Geode 支持 OQL 查询、函数计算、Redis KV 查询 - 发布订阅:Geode 支持稳定的时间订阅和连续查询, Redis 的发布订阅貌似用的并不多。 - 事务支持:Geode 支持的也是存内存的 ACID 事务,对落盘的事务支持也不行,Redis 支持的也是内存型事务,相对来说,ACID 更一些。 - Geode 支持 Redis 的协议模拟,有 Redis Adaper。 ## 环境搭建 ```shell docker pull gemfire/gemfire:9.15.13 ``` ### 无命令行启动 ```shell docker run -it -e 'ACCEPT_TERMS=y' --rm --name gf-locator --network=gf-network -p 10334:10334 -p 7070:7070 gemfire/gemfire:9.15.6 gfsh start locator --name=locator1 ``` ```shell docker run -it -e 'ACCEPT_TERMS=y' --rm --name gf-server1 --network=gf-network -p 40404:40404 gemfire/gemfire:9.15.6 gfsh start server --name=server1 --locators=gf-locator\[10334\] ``` ```shell docker run -it -e 'ACCEPT_TERMS=y' --rm --name gf-server2 --network=gf-network -p 40405:40405 gemfire/gemfire:9.15.6 gfsh start server --name=server2 --locators=gf-locator\[10334\] ``` ### 命令行 ```shell docker run -it -p 10334:10334 -p 7575:7575 -p 40404:40404 -p 1099:1099 gemfire/gemfire:9.15.13 gfsh ``` 启动locator server ```shell gfsh> start locator --name=locator1 --port=10334 gfsh> start server --name=server1 --server-port=40404 ``` 获取成员 ```shell list members ``` 创建数据表 ```shell gfsh> create region --name=hello --type=REPLICATE gfsh> create region --name=People --type=REPLICATE ``` 查询hello ```shell gfsh>query --query="select * from /hello" ``` 删除People数据 ```shell gfsh>remove --all --region=People ``` 关闭服务器 ```shell gfsh> shutdown --include-locators=true ```