使用Infinispan作为持久性解决方案

2022-04-14 00:00:00 数据 缓存 您的 群集 持久性

各种RDBMS是持久性的实际标准。 建筑师认为使用它们是一个安全的选择,我敢说现在它们在很多地方都使用过。 为了解决这个问题,我近一直在探索其他持久性选项,例如图数据库 。 这次我和Infinispan一起玩。

如果您通常不熟悉Infinispan或分布式键/值数据存储,则可以将其视为类固醇上的HashMap。 本质上,该映射在所有群集节点之间共享。 借助群集,您可以获得巨大的规模,实现快速访问和冗余,这取决于您如何配置它。 有几种与Infinispan竞争的产品,例如OS world的Ehcache和Hazelcast以及商业方面的Oracle Coherence 。

实际上,Infinispan是一种您可能根本没有注意到的技术。 例如, Wildfly的高可用性功能在很大程度上依赖Infinispan缓存。 它还经常用作ORM库的二级缓存。 但是它本身也可以直接用作持久性库。

为什么将其视为您的持久性解决方案:

  • 这是闪电般的快速内存数据存储
  • 存储的值可以是任何可序列化的对象,不需要复杂的映射库
  • 它是为群集环境从头开始构建的–您的数据更安全,更快速地访问。 水平缩放非常容易
  • 它具有多种可选的高速缓存存储选项,用于将状态写入磁盘(例如,集群范围内的重新引导)
  • 并非所有数据都需要存储,Infinispan具有内置的复杂逐出规则
  • 使用事务访问进行ACID更改的可能性

听起来很棒,不是吗? 它肯定是针对某些用例的,但是所有技术都有其弱点,键/值数据存储也是如此。 与RDBMS相比,大的缺点是与其他实体的关系。 您将不得不提出一种策略,该策略用于存储对其他实体的引用,并且还必须解决基于相关特征的搜索。 如果您终想知道这些问题,请确保检查Hibernate OGM是否可以为您提供帮助。

同样,对数据进行一些分析也可以被认为比传统的SQL查询更简单,或者至少更熟悉。 特别是如果终有大量数据分布在多个节点上,则必须学习MapReduce编程模型的基础知识才能进行任何非平凡的查询。

在Web应用程序中使用Infinispan

尽管Infinispan与Wildfly无关,但我还是决定将实验基于Wildfly。 如果您明确要求,它的内置版本可用于Web应用程序。 简单的方法是将以下MANIFEST.MF条目添加到您的war文件中。 如果您不想用过时的文件来破坏项目,只需使用一个小的war插件配置将其添加即可。

Dependencies: org.infinispan export

当然,您仍然需要向应用程序中添加Infinispan依赖项,但是您可以将其保留为提供。 确保使用服务器提供的相同版本,在Wildlfy 8中,Infinispan版本为6.0.2。 在Maven项目中,添加这种依赖项声明:

  1. 相关文章