
1 基础知识
1.1 软件简介
– Infinispan是一款开源内存数据库
– Infinispan几乎可以存储任何类型的数据(纯文本到结构化对象)
– Infinispan支持全文和向量搜索功能(拥有闪电般的检索速度)
– Infinispan通过将数据分布到弹性扩展的集群中,可保证高可用和数据完整
– Infinispan支持多个地理位置之间复制数据的能力。
– Infinispan支持原生高性能协议或Redis或Memcached客户端连接到infinispan
1.2 软件的特点
– 互操作性,跨多种协议和编程语言访问数据
– 弹性和容错数据,确保数据始终可用以满足繁重的工作负载
– ACID事务,保证数据始终有效且一致
– 集群处理,实时处理数据,不正价资源和负担
– 查询,在分布式数据集上执行简单、准确、快速的搜索
1.3 软件的优越性
1.3.1 提升应用程序性能
– Infinispan通过将数据存储在更接近处理逻辑的位置来增强应用程序的性能,从而减少延迟和提高吞吐量
– Infinispan作为Java库,支持添加到应用程序的依赖项目中,然后将数据存储在与执行代码相同的内存空间
– Infinispan支持作为独立的数据据层运行,可实现内存级性能和远程数据访问。
– Infinispan通过一致性哈希技术,客户端之需要通过网络跃点即可访问数据
– Infinispan支持通过HTTP或Hot Rod自定义二进制TCP协议发出请求
1.3.2 高可用性和弹性
– Infinispan提供值得信赖的开源技术,实现可扩展性,满足工作负载需求比ing降低资源利用率。
– Infinispan将数据分布在多个集群,确保单点故障不会造成数据丢失。
– Infinispan常见用途是作为状态数据库(例如用户的HTTP会话)的共享存储。
– Infinispan通过将会话外部花到充当独立数据层的Infinispan集群,应用可保持轻量级并避免堆占用。
1.3.3 跨数据中心备份
– Infinispan支持跨站点复制保持数据一致性
– Infinispan客户端使用异步复制不同位置进行写入也能保证数据的一致性
1.4 部署要求
– Java 17 JDK或更高版本
– Maven 3.8或更高版本(与Gradle或Ivy兼容)
2 最佳实践
2.1 部署环境
2.1.1 部署OpenJDK
部署完成后,当前环境执行以下测试命令,
java -version
可见如下显示,
openjdk version "21.0.1" 2023-10-17 OpenJDK Runtime Environment (build 21.0.1+12-29) OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
2.1.2 部署Maven(可选)
部署完成后,当前环境执行以下测试命令,
mvn -v
可见如下显示,
Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b) Maven home: /opt/apache-maven-3.9.11 Java version: 21.0.1, vendor: Oracle Corporation, runtime: /usr/java/jdk-21.0.1 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "5.14.0-70.22.1.el9_0.x86_64", arch: "amd64", family: "unix"
2.1.3 下载并解压软件包
cd ~ wget --no-check-certificate http://github.com/infinispan/infinispan/releases/download/15.2.5.Final/infinispan-server-15.2.5.Final.zip unzip infinispan-server-15.2.5.Final.zip
另外,以上只是演示,如果不能下载或者需要其他版本,请从如下连接下载,
https://infinispan.org/download/
2.2 部署Infinispan
2.2.1 创建运行用户
groupadd -g 987 infinispan useradd -u 987 -g 987 -d /var/lib/infinispan -s /sbin/nologin infinispan
2.2.2 部署软件包
cd ~ mv infinispan-server-15.2.5.Final /opt/ mkdir -p /data/infinispan /var/log/infinispan ln -s /data/infinispan /opt/infinispan-server-15.2.5.Final/server/data rm -rf /opt/infinispan-server-15.2.5.Final/server/log ln -s /var/log/infinispan /opt/infinispan-server-15.2.5.Final/server/log ln -s /opt/infinispan-server-15.2.5.Final/server/conf /etc/infinispan
根据应用执行用户的要求,你需要修改如下目录的权限,
chown infinispan:infinispan -R /data/infinispan /var/log/infinispan chmod 770 -R /data/infinispan /var/log/infinispan
然后,你需要使用如下命令设置环境变量,
vim /etc/profile.d/infinispan-server.sh
加入如下配置,
export ISPN_HOME=/opt/infinispan-server-15.2.5.Final export PATH=${ISPN_HOME}/bin:$PATH
配置创建,我们需要使用如下命令导入环境变量,
source /etc/profile
另外,也可以使用如下命令快速配置,
echo 'export ISPN_HOME=/opt/infinispan-server-15.2.5.Final' > /etc/profile.d/infinispan-server.sh echo 'export PATH=${ISPN_HOME}/bin:$PATH' >> /etc/profile.d/infinispan-server.sh source /etc/profile
2.2.3 修改配置文件
cp /opt/infinispan-server-15.2.5.Final/bin/server.conf /opt/infinispan-server-15.2.5.Final/bin/server.conf.default vim /opt/infinispan-server-15.2.5.Final/bin/server.conf
修改如下配置,
JAVA_HOME="/usr/java/jdk-21.0.1" JAVA="/usr/java/jdk-21.0.1/bin/java" JAVA_OPTS="-Xms64m -Xmx1024m -XX:MetaspaceSize=64M -Djava.net.preferIPv4Stack=true"
上面定义的是Java虚拟机相关的参数,你还需要使用如下命令定义infinispan服务的倾听地址,
cp /etc/infinispan/infinispan.xml /etc/infinispan/infinispan.xml.default vim /etc/infinispan/infinispan.xml
修改如下配置,
<infinispan> #... <server xmlns="urn:infinispan:server:15.2"> <interfaces> <interface name="public"> <inet-address value="${infinispan.bind.address:0.0.0.0}"/> </interface> </interfaces> #... </server> </infinispan>
然后,使用如下命令创建infinispan的用户和用户所属的组,
cp /etc/infinispan/users.properties /etc/infinispan/users.properties.default cp /etc/infinispan/groups.properties /etc/infinispan/groups.properties.default echo 'admin=adminpwd' >> /etc/infinispan/users.properties echo 'admin=admin' >> /etc/infinispan/groups.properties
2.2.4 测试应用运行
sudo -u infinispan bash -c '/opt/infinispan-server-15.2.5.Final/bin/server.sh'
如何看到如下信息,则服务能正常启动,
2025-07-24 03:16:29,951 INFO [o.i.SERVER] ISPN080004: Connector SinglePort (default) listening on 0.0.0.0:11222 2025-07-24 03:16:29,951 INFO [o.i.SERVER] ISPN080034: Server 'dn2infinispan01-121' listening on http://0.0.0.0:11222 2025-07-24 03:16:30,052 INFO [o.i.SERVER] ISPN080001: Infinispan Server 15.2.5.Final started in 7242ms
如果使用如下命令查看启动端口,
ss -antp | grep java
可见如下显示,
LISTEN 0 4096 0.0.0.0:11222 0.0.0.0:* users:(("java",pid=51813,fd=226)) LISTEN 0 50 10.168.0.83:7800 0.0.0.0:* users:(("java",pid=51813,fd=209)) LISTEN 0 50 0.0.0.0:57800 0.0.0.0:* users:(("java",pid=51813,fd=212))
结合业务的需求,你需要使用如下命令开放业务端口,
firewall-cmd --permanent --add-port 11222/tcp firewall-cmd --reload firewall-cmd --list-all
2.2.5 创建服务控制脚本
vim /etc/systemd/system/infinispan.service
加入如下配置,
[Unit] Description=Infinispan Server Requires=network.target After=syslog.target network.target [Service] Type=simple User=infinispan Group=infinispan WorkingDirectory=/opt/infinispan-server-15.2.5.Final ExecStart=/usr/bin/bash -c '/opt/infinispan-server-15.2.5.Final/bin/server.sh' Restart=on-failure StandardOutput=journal LimitNOFILE=102642 [Install] WantedBy=multi-user.target
配置创建后,你需要使用如下命令重载服务使配置生效,
systemctl daemon-reload
测试服务启动并设置自动运行,
systemctl start keycloak.service systemctl enable keycloak.service
如果遇到启动异常,请使用如下命令查看日志,
tail -f /var/log/infinispan/server.log journalctl -u infinispan.service -b
2.3 测试Infinispan
2.3.1 登陆服务控制台
http://10.168.0.83:11222
Admin: admin
Password: adminpwd
输入用户名密码后,单击【Open the console】即可进入控制台
2.3.2 测试缓存数据的创建
2.3.3 测试命令行客户端
cli.sh -v
可见如下显示,
Infinispan CLI 15.2.5.Final Copyright (C) Red Hat Inc. and/or its affiliates and other contributors License Apache License, v. 2.0. http://www.apache.org/licenses/LICENSE-2.0
另外,该命令行客户端如需在非服务端安装部署请参阅如下章节,
参阅文档
==================
官方首页
———-
https://infinispan.org/
https://github.com/infinispan
官方文档
———-
https://infinispan.org/documentation/
服务器的安装
————
https://infinispan.org/docs/stable/titles/server/server.html#server-getting-started
部署教程
———-
https://infinispan.org/docs/15.2.x/titles/getting_started/getting_started.html
容器部署教程
———–
https://infinispan.org/get-started/
下载软包
————
https://infinispan.org/download/
没有评论