原本是Hazelcast的fans,偶然的机会看到了Ignite,一个以内存为中心的数据平台,其中支持off-heap memory,并且兼容 ANSI-99 的SQL语法十分让人心动。更棒的是,它的中文文档竟然update到了最新版,看起来方便很多。
先看一下如何让它跑起来
Package安装
- 从https://ignite.apache.org/下载Ignite的zip压缩包 apache-ignite-fabric-2.2.0-bin.zip
- unzip apache-ignite-fabric-2.2.0-bin.zip
- cd apache-ignite-fabric-2.2.0-bin
- bin/ignite.sh
... ....
[18:10:59] Ignite node started OK (id=0d488108)
[18:10:59] Topology snapshot [ver=1, servers=1, clients=0, CPUs=4, heap=1.0GB]
这样一个基本的Ignite实例就跑起来了。在本机的一个新的终端再执行一次 bin/ignite.sh会启动一个新的实例,默认情况下,新的实例会自动加入集群
[18:11:14] Ignite node started OK (id=34223b83)
[18:11:14] Topology snapshot [ver=2, servers=2, clients=0, CPUs=4, heap=2.8GB]
Ignite的目录结构
├── benchmarks <-- build-in benchmark tool
├── bin
├── config
├── docs
├── examples
├── libs <-- jar包目录,默认只加载核心库
│ ├── annotations-13.0.jar
│ ├── cache-api-1.0.0.jar
│ ├── ignite-core-2.1.0.jar
│ ├── ignite-indexing
│ ├── ignite-shmem-1.0.0.jar
│ ├── ignite-spring
│ └── optional <--可选库,默认不加载
├── platforms
└── work
Ingite默认只加载一些核心库,如core,index(用以使用Lucene索引)和spring,其他库文件放在libs/optional文件夹中,如需使用,需要mv到libs目录下
Ignite的配置文件
Ignite的配置文件放置在IGNITE_HOME/config目录下,用以为Ignite启动实例时提供必要的信息,这里只挑几个常用的说
- 设置client模式,默认的Ignite实例以server模式加入集群
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
...
<!-- Enable client mode. -->
<property name="clientMode" value="true"/>
...
</bean>
启动实例后日志为
[18:11:14] Topology snapshot [ver=2, servers=1, clients=1, CPUs=4, heap=2.8GB]
- enable Peer Class Loading
Ignite的分布式计算支持Zero Deployment,实现了节点间的字节码交换。当Peer Class Loading enable时,不需要在网格内的每个节点上手工地部署用以计算的Java或者Scala代码。 当一个enable了Peer Class Loading的节点加入一个没有打开Peer Class Loading的集群中时会出差,导致节点无法启动,反之亦然。推荐在配置文件中默认打开
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
...
<!-- Explicitly enable peer class loading. -->
<property name="peerClassLoadingEnabled" value="true"/>
...
</bean>
- 配置集群发现机制
Ignite支持N中发现模式,这里只聊静态IP机制
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
...
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>10.xxx.xxx.xxx:47500..47509</value>
<value>11.xxx.xxx.xxx:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
配置好后,制定配置文件启动ignite实例
bin/ignite.sh config/xxx.xml
Docker安装
docker安装和启动比较简单,两个命令就搞定了
- sudo docker pull apacheignite/ignite
- sudo docker run -it --net=host apacheignite/ignite
如果需要制定配置文件并且enable一些可选库文件(如 restful api)可以使用如下命令
sudo docker run -it --net=host -v /PATH/example-cache.xml:/opt/ignite/apache-ignite-fabric-2.1.0-bin/config/example-cache.xml -e "CONFIG_URI=/opt/ignite/apache-ignite-fabric-2.1.0-bin/config/example-cache.xml" -e "OPTION_LIBS=ignite-rest-http" apacheignite/ignite
NOTE: Ignite 的restful模块目前比较弱,基本属于不能使用状态。如cache只支持
<string,string>
模式的input和查询 ......