VMware GemFire 是一个高性能、分布式的(key/value)内存数据库,它适用于高并发、低延迟的应用场景。GemFire 专注于弹性伸缩和数据一致性,无论是在企业内部,还是在云端,都可以轻松地扩展,以满足不断增长的数据需求,支持关键业务应用。GemFire 自2002年发布以来,已有超过21年的快速发展历史,它的客户遍布在全球各个行业中,GemFire 在国内广泛的应用在银行、保险和交通等行业中。
VMware在2023年4月14日正式发布了GemFire v10.0,它是GemFire发展过程中的一个重要里程碑,v10的新特性将为用户带来更高效的性能、更强大的功能和更出色的用户体验。接下来,让我们深入探索一下 v10.0 究竟带来了哪些令人兴奋的新特性吧!
VMware GemFire v10 主要新特性
VMware GemFire 管理控制台
GemFire v10 为用户带来了新的WEB管理模块 VMware GemFire Management Console,它使用全新的UI界面,简化了常用操作、提供系统诊断和其他管理功能。用户能够在一个 Management Console 上统一管理企业所有的GemFire集群,包括查看集群和Region的状态、创建Region、部署JAR和Function、查看或搜索集群日志等,极大的提升了运维管理的效率。
关于它的更多内容请访问 VMware GemFire Management Console Product Documentation.
安全的点对点 (Peer-to-Peer) 通信
在GemFire v10中 ,集群节点之间的通信全部采用TCP sockets,以提高安全性、性能和可维护性。在早期版本中,GemFire集群成员之间使用UDP协议和JGroups library进行通信。但从v10开始,GemFire所有成员间的通信都改用TCP/IP。不过,JGroups library仍会随着 GemFire v10一起发布,以支持从早期GemFire版本的升级。
支持广域网(WAN)的增量复制
在GemFire v10 中,WAN 复制(WAN Gateway)支持在GemFire集群之间进行增量更新(delta updates),从而提升了同步效率,降低了网络吞吐量。
增强的JSON支持
GemFire v10 弃用了JSONFormatter API,取而代之的是更先进的JsonDocumentFactory API。用户可以使用该API将JSON字符串转换为可存储在GemFire Region的二进制格式。JSON字符串必须是一个单一的JSON对象,以大括号开始和结束。GemFire可以访问二进制格式的每个字段,而不需要重新解析JSON或对二进制格式进行反序列化。这种新API可以更高效地访问JSON数据,并提供更好的可维护性。
GemFire for Redis Apps
GemFire for Redis Apps是一个支持Redis命令的GemFire扩展,它允许使用Redis客户端的应用程序连接到GemFire并发送Redis命令,应用程序仅需少量修改代码(甚至不修改代码),就可以轻松的从Redis迁移到GemFire,并从GemFire带来的高可用性和可扩展性中受益。最新的GemFire for Redis v1.1 版本不仅同时兼容GemFire v10和v9.5,还带来了一些新特性,例如,以GemFire扩展文件(.gfm)的形式进行部署,提供Allkeys-lru 驱逐策略等,想要了解它的更多信息请访问 VMware GemFire for Redis Apps Product Documentation.
GemFire Search
GemFire Search 也是GemFire的一个扩展,它与GemFire 一起使用时可提供索引和搜索功能,它允许用户对存储在GemFire中的数据创建GemFire Search索引,并支持索引数据与GemFire数据的共置和持久化。GemFire Search 基于广泛使用的 Java 全文搜索引擎 Apache Lucene® 构建,因此GemFire Search 的查询和索引定义的语法和API与Lucene相同。
类加载器隔离 (Classloader Isolation)
GemFire v10 默认使用类加载器隔离模式(classloader isolation model)来部署 JAR 文件。JAR 文件被加载到它们自己的类加载器中,这些类加载器不仅与系统的其他部分隔离,而且彼此之间也是隔离的。例如,GemFire 的类被加载到一个模块中,用户部署的 jar 和扩展分别部署到各自的模块中。这种方式有效的避免了不同应用程序之间可能出现的类冲突和版本不兼容的问题,使 GemFire 可以更顺利地运行在各种应用场景中。
JDK 支持
GemFire v10 支持 JDK 8、JDK 11 和 JDK 17 ,但是从 v10.0 开始,GemFire 推荐使用 JDK 11 作为首选版本。此外,VMware在JDK 17下对GemFire进行了广泛的测试,默认使用 Z垃圾收集器(ZGC),它可以提供出色的“低停顿”(low-pause )行为,能够与内存中的工作负载很好地融合,尤其是在较大的 heap sizes上。尽管GemFire v10 最低要求是 JDK8 update 272,但是一些功能模块已经不再兼容JDK8,例如,GemFire Search 和 GemFire Management Console都要求最低使用JDK 11. 因此,在选择 JDK 版本时,需要从GemFire工作负载的要求和系统功能等方面进行综合考虑。
默认值的变化
GemFire v10 修改了下列参数的默认值:
|
GemFire Property or Parameter |
新的默认值 |
旧的默认值(v9 及以前的版本) |
|
enable-time-statistics |
true |
false |
|
socket-lease-time |
180000 milliseconds (30 minutes) |
60000 ms (1 min) |
|
PoolFactory.DEFAULT_IDLE_TIMEOUT |
5000 milliseconds (5 seconds) |
120000 milliseconds (2 minutes) |
|
CacheServer.DEFAULT_MAX_CONNECTIONS |
800 |
1200 |
Tomcat Sessions Caching 版本更新
Tomcat Session Caching就是GemFire提供的一项功能,它可以帮助Tomcat将会话数据存储在GemFire内存中,以提高Tomcat应用的性能和可靠性。在GemFire v10 中该模块增加了对Apache Tomcat 10 和 Jakarta EE 9 的支持,另外保留了对Tomcat 8.5和9版本的支持。
新的环境变量 GEMFIRE_HOME
GemFire v10 使用环境变量 GEMFIRE_HOME 取代了 GEODE_HOME 变量,GEODE_HOME 已经被废弃。
以上内容就是GemFire v10 带来的主要新特性,如果您还想深入了解更多内容,请访问 VMware GemFire® 10.0 Documentation.
最后,特别值得一提的是,为了缅怀 VMware GemFire 研发团队中曾经的同事 Gideon Low,GemFire 10 被冠以 Gideon 版本之名。这个版本不仅是一次技术升级,更是对这位早逝同事的一份纪念和致敬。








