在本文中,我们将更进一步,让您完成第一个Ignite应用程序的创建,以从分布式缓存中进行读写操作。 作为第一个示例,我们将尽可能简单地向您展示如何用Java编写用于处理Apache Ignite集群数据的应用程序。
可从GitHub存储库(第二章)中获得本节中显示的应用程序。 您可以从GitHub克隆或下载项目,使用Maven编译应用程序并在工作站中运行它。 但是,如果您想手动输入程序,则可以随意输入。 在这种情况下,您必须使用文本编辑器而不是文字处理器将程序输入到计算机中。
您遵循以下三个步骤:
1.启动您的Ignite节点。
2.创建一个mvn项目或输入程序。
3.编译程序。 4.运行程序。 步骤1 。 如果尚未启动Apache Ignite单节点集群,请启动它。 在您喜欢的终端中使用以下命令。
$ IGNITE_HOME/bin/ignite.sh
第二步 。
使用以下命令创建一个maven项目。 如果从GitHub下载项目,请跳过此步骤。
mvn archetype:generate -DartifactId=chapter-two -DgroupId=com.blu.imdg -DarchetypeArtifac\ tId=maven-archetype-quickstart -DinteractiveMode=false
上面的命令将创建一个目录,该目录具有与artifactId相同的名称。 切换到第二章目录。 在此目录下,您将找到以下标准项目结构。
src / main / java目录包含项目源代码,src / test / java目录包含测试源,而pom.xml是项目的项目对象模型或POM。 pom.xml文件是Maven中项目配置的核心。 它是一个配置文件,其中包含编译和运行Java程序的所有必需信息。 pom.file可能很复杂,但是没有必要了解所有复杂性才能有效地使用它。
第三步 。
将以下Ignite Maven依赖项添加到pom.xml文件中。
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.version}</version>
</dependency>
另外,将项目属性部分添加到pom.xml文件中,如下所示。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<ignite.version>2.4.0</ignite.version>
</properties>
您可以使用Maven从命令行运行该应用程序。 另外,您可以构建一个包含所有必需的依赖项,类和资源的单个可执行JAR文件,然后运行该应用程序。 这使得在整个开发生命周期中,跨不同环境等等的情况下,可以轻松地将服务作为应用程序进行发布,版本控制和部署。 在pom.xml的plugin部分中再添加两个插件,以创建一个
胖的可执行jar,用于有效运行应用程序。
<build> <plugins>
<plugin>
<groupId>com.jolira</groupId> <artifactId>onejar-maven-plugin</artifactId> <version>1.4.4</version>
<executions>
<execution> <id>build-query</id> <configuration>
<mainClass>com.blu.imdg.HelloIgnite</mainClass> <attachToBuild>true</attachToBuild> <classifier>onejar</classifier> <filename>HelloIgnite-runnable.jar</filename>
</configuration> <goals>
<goal>one-jar</goal> </goals>
</execution> </executions>
</plugin> </plugins>
</build>
第四步。
在src / main / java / com / blu / imdg目录中,您可以添加所需的任何Java类。
为了与本指南的其余部分保持一致,请创建以下Java类:这些目录中的HelloIgnite。
package com.blu.imdg;
public class HelloIgnite { }
步骤5 。
在package语句之后添加以下所有库。
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder
步骤6 。
现在您已经有了一个Java类,将以下代码行复制到该类中。
public static void main(String[] args) {
System.out.println("Hello Ignite");
// create a new instance of TCP Discovery SPI
TcpDiscoverySpi spi = new TcpDiscoverySpi();
// create a new instance of tcp discovery multicast ip finder TcpDiscoveryMulticastIpFinder tcMp = new TcpDiscoveryMulticastIpFinder(); tcMp.setAddresses(Arrays.asList("localhost")); // change your IP address here // set the multi cast ip finder for spi
spi.setIpFinder(tcMp);
// create new ignite configuration
IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setClientMode(true);
// set the discovery spi to ignite configuration
cfg.setDiscoverySpi(spi);
// Start ignite
Ignite ignite = Ignition.start(cfg);
// get or create cache
IgniteCache < Integer, String > cache = ignite.getOrCreateCache("HelloWorld"); // put some cache elements
for (int i = 1; i <= 100; i++) {
cache.put(i, Integer.toString(i)); }
// get them from the cache and write to the console
for (int i = 1; i <= 100; i++) { System.out.println("Cache get:" + cache.get(i));
}
// close ignite instance
ignite.close();
}
对Java有一定编程经验的人都应该熟悉该程序。 让我们仔细检查程序的每个部分。 它具有main()方法,程序将在该方法处开始执行。 所有Java程序都通过调用main()方法开始执行。 main()方法中的代码的下一行输出字符串Hello Ignite。 接下来,我们创建了一个TCP Discovery SPI实例,并在其上设置了多播IP查找程序实例。
稍后,我们为SPI设置了多播IP查找程序。 当TCP发现开始时,此查找器将发送多播请求,并在其他节点用包含其地址的消息答复此请求时等待一段时间。 然后,我们创建了一个Ignite配置实例,并将发现SPI设置为该配置。
启动Ignite实例后,它与现有的Ignite群集一起作为客户端加入。 接下来,我们创建了一个名称为“ HelloWorld”的缓存,并将100个条目放入其中。 在for-each循环中,我们从缓存中读取了这100个条目并在控制台上打印。 最后,我们停止了Ignite客户端实例。
现在,您已经可以使用Maven构建一个项目,下一步就是构建和运行该应用程序。
步骤7 。
要尝试构建,请在命令行中发出以下命令。
$ mvn clean install
这将运行Maven,告诉它执行安装目标。 此目标将编译,测试和打包您的项目代码,然后将其复制到本地依赖项存储库中。 第一次构建过程需要几分钟才能完成,成功编译后,将在目标目录中创建一个可执行jar。
步骤8 。
通过键入以下命令来运行应用程序。
$ java -jar .\target\HelloIgnite-runnable.jar
您应该在终端中看到很多日志。 首先,将创建一个新的Ignite客户端实例,它将连接到群集中的随机节点(在我们的示例中,只有一个单节点)。 在Ignite服务器节点控制台中,您应该看到如下所示的日志:
另一方面,Apache Ignite客户端节点控制台按1到100打印缓存条目。
让我们使用Ignite visor管理员控制台检查缓存条目。 Apache Ignite visor命令行工具为Ignite群集提供监视和管理功能。 使用以下命令对遮阳板工具进行午餐。
$ IGNITE_HOME/bin/ignitevisorcmd.sh
向visor命令工具发出以下命令。
cache -a
它将返回您的缓存“ HelloWorld”的缓存统计信息的详细信息,如下图所示。
您会注意到总缓存大小为100,而Offheap大小也为100。从版本2.0.1开始,默认情况下,Apache Ignite将缓存条目存储到Offheap内存中。 在后面的章节中,我们将详细介绍Offheap内存以及Onheap和Offheap内存之间的区别。 还要注意,为了使示例尽可能简单,我们在此程序中未使用任何与弹簧相关的配置。
翻译自: https://www.javacodegeeks.com/2018/10/apache-ignite-easy-java-application.html