Apache Ignite
Apache Ignite 为分布式缓存(这是我们使用二级缓存的方式)以及“数据网格”功能提供了一组非常好的功能。
我的期望是,大多数人更喜欢使用近缓存的客户端/服务器模式。
客户端/服务器模式
我们可以在client/server
模式下使用 Ignite,这意味着我们的应用程序使用Ignite 客户端
与 Ignite 集群(服务器)通信。
在此模式下,Bean 缓存数据在集群中的所有 Ignite 服务器上进行分区,而不是在我们的应用程序中。我们可以选择对某些或所有 Bean 类型使用近缓存
,并通过这样做来提高性能(通过拥有本地数据),但会增加我们应用程序中的内存占用(因为它现在保存了一些缓存数据)。
服务器模式
在服务器模式下,我们的应用程序启动Ignite 服务器实例
,它是 Ignite 集群的正式成员。这意味着它将保存数据等。
依赖
添加对 ebean-ignite
的依赖。预构建的包位于 maven 上。您选择的 ebean-ignite
工件的版本应与您正在使用的 ebean 版本匹配。当 Ebean 启动时,ebean-ignite 会自动注册为 L2 缓存实现。
禁用二级缓存
在开发和测试期间,禁用 l2 缓存的使用通常很有用。
属性
## disable use of L2 cache (for dev / testing etc)
ebean.disableL2Cache=true
配置
Apache Ignite 使用 IgniteConfiguration
类进行配置。此类的文档可在此处获得 here。此类可以通过两种方式传递:使用 XML 配置文件(表示此 bean 的持久化版本),以及通过构建此类并将其传递到 Igniter
中以编程方式进行传递。
有关 Ignite 配置的更多信息,请从 here 开始。
XML 配置
要通过 XML 配置 Ignite 实例,您需要构建一个 XML 文件,该文件以持久化状态表示 IgniteConfiguration bean。然后,您必须将此文件放置在 Ignite 预期的位置。
根据文档,当 Ignite 启动时,它会在{IGNITE_HOME}/config/default-config.xml
中查找配置文件。您应该能够导出 IGNITE_HOME 环境变量以指向包含配置文件的目录。
以编程方式配置
您可以通过创建 IgniteConfiguration
实例并通过以下方式设置它来以编程方式配置 Ignite:
IgniteConfiguration configuration = ...;
serverConfig.setServiceObject("igniteConfiguration", configuration);
要在启动时自动执行此操作,您可以创建一个实现 ServerConfigStartup
的类,并将其放置在您告诉 ebean 查找模型的目录中。
package models;
import io.ebean.config.ServerConfig;
import io.ebean.event.ServerConfigStartup;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import java.util.Arrays;
public class MyServerConfigStartup implements ServerConfigStartup {
@Override
public void onStart(ServerConfig serverConfig) {
IgniteConfiguration igniteCfg = new IgniteConfiguration();
igniteCfg.setClientMode(true);
TcpDiscoveryVmIpFinder finder = new TcpDiscoveryVmIpFinder();
finder.setAddresses(Arrays.asList("172.30.1.1"));
TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
discoverySpi.setIpFinder(finder);
igniteCfg.setDiscoverySpi(discoverySpi);
serverConfig.putServiceObject("igniteConfiguration", igniteCfg);
}
}
如果传递此配置实例,Ebean 将使用它来配置 Ignite 实例。否则,它将使用属性和 avaje IgniteConfigBuilder。
开始使用
- 使用 @Cache 注解 bean
- 添加 maven 依赖项 ebean-ignite
- 可选择添加 ebean-ignite-config.xml
- 对于客户端/服务器模式,您需要一个正在运行的 Ignite 服务器