sudo
docker pull apacheignite/ignite:
{
ignite-version
}
默认情况,docker将暴露以下端口:11211, 47100, 47500, 49112
借用容器的文件系统,但是如果没有持久卷支持,容器一旦删除,数据也将丢失
docker run -d -p 10800:10800 apacheignite/ignite
sudo docker run -it --net=host \
-e "CONFIG_URI=$CONFIG_URI" \ ---Ignite配置文件地址
-e "OPTION_LIBS=$OPTION_LIBS" \ --- Ignite可选的依赖包
-e "JVM_OPTS=$JVM_OPTS" \ ---虚拟机参数
apacheignite/ignite
挂载一个持久卷或者一个本地目录
- 创建一个持久卷:sudo docker volume create persistence-volume
- 通过IGNITE_WORK_DIR系统属性指定,或通过节点配置文件指定
docker run -d -p 10800:10800 -v persistence-volume:/persistence -e IGNITE_WORK_DIR=/persistence apacheignite/ignite
- 准备一个本地目录: ~/docker/ignite/data
- cd ~/docker/ignite
docker run -d -p 10800:10800 -v ${PWD}/data:/persistence -e IGNITE_WORK_DIR=/persistence apacheignite/ignite
public class IgniteConnectionTest {
public static void main(String[] args){
ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");
try (IgniteClient client = Ignition.startClient(cfg)) {
ClientCache<Integer, String> cache = client.createCache("myCache1");
Map<Integer, String> data = new HashMap<>();
for (int i = 1; i <= 100; i++) {
Integer integer = i;
if (data.put(integer, integer.toString()) != null) {
throw new IllegalStateException("Duplicate key");
cache.putAll(data);
assert !cache.replace(1, "2", "3");
assert "1".equals(cache.get(1));
assert cache.replace(1, "1", "3");
assert "3".equals(cache.get(1));
cache.put(101, "101");
cache.removeAll(data.keySet());
assert cache.size() == 1;
assert "101".equals(cache.get(101));
cache.removeAll();
assert 0 == cache.size();
ClientCache<Integer, Person> personCache = client.getOrCreateCache("persons");
Query<Cache.Entry<Integer, Person>> qry = new ScanQuery<Integer, Person>(
(i, p) -> p.getFirstName().contains("Joe"));
try (QueryCursor<Cache.Entry<Integer, Person>> cur = personCache.query(qry)) {
for (Cache.Entry<Integer, Person> entry : cur) {
Integer key = entry.getKey();
Person value = entry.getValue();
System.out.println(key);
System.out.println(value);
IgniteBinary binary = client.binary();
BinaryObject val = binary.builder("Person").setField("id", 1, int.class).setField("name", "Joe", String.class)
.build();
ClientCache<Integer, BinaryObject> cache = client.getOrCreateCache("persons").withKeepBinary();
cache.put(1, val);
BinaryObject value = cache.get(1);
System.out.println(value);
ClientTransactions tx = client.transactions();
try (ClientTransaction t = tx.txStart(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.REPEATABLE_READ)) {
ClientCache<Integer, String> cache = client.getOrCreateCache("transCache");
cache.put(1, "new value");
t.commit();
} catch (Exception e) {
e.printStackTrace();
更多样例代码 with 2.10.0
具体可以参看官方文档的Tools
- control.sh命令
- ignitevisorcmd命令
- gridgain
Ignite 中,通过DiscoverySpi节点可以彼此发现对方,可以配置成基于多播的或者基于静态 IP 的。
在此还没有太了解,正在继续学习,更多说明可以看InfoQ
使用Docker如何开启Ignite体验这边仅使用Docker进行搭建,其余请查看官网一、获取镜像sudo docker search apacheignite/ignite二、部署单点sudo docker pull apacheignite/ignite##获取一个指定版本sudo docker pull apacheignite/ignite:{ignite-version}默认情况,docker将暴露以下端口:11211, 47100, 47500, 49112形式一:In
XC云计算阿里巴巴
spring cloud阿里巴巴集成框架可替代docker部署已更新集成阿里spring cloud 2.2.1.RELEASE版
spring cloud更新为Hoxton.SR3版本
dubbo2.7.6
ps:已将相对应框架升级为最新版本
演示演示: sentinel帐号密码为哨兵nacos帐号密码为nacos
用于数据库连接,提供service impl类
XC管理员
为提示api连接,提供控制类
xc-api
用于提供接口信息,和一些共同的实体类
为提供一些公共库
网关,分配路由,用于调用管理类的控制层,无需关注端口,路由分配转发
xc-ui
后台页面,使用 react技术开发
增加mybatis多数据源操作,引用seate1.2处理分布式事务,多数据源事务,引用shardingSphere进行分库分表处理
项目布署图
它有什么作用
本框架使用spring cloud为基本架构,结合阿里dubbo + nacos提供服务层
再结合hibernate + pgsql + jpa为数据库连接层
以ignite强大的
Docker允许将具有所有依赖项的Ignite部署打包到标准容器中。Docker自动下载Ignite版本,将用户库部署到Ignite中,并配置节点。它还会自动启动完全配置好的Ignite节点。这种集成方式允许用户通过重新启动Ignite Docker容器来部署新代码。
要运行docker容器,需要拉动并启动docker映像。默认情况下,将下载最新版本。你可以在这里看到标签的完整列表:https:...
metadata:
# Name of Ignite Service used by Kubernetes IP finder.
# The name must be equal to TcpDiscoveryKubernetesIpFinder.serviceName.
name: ignite
namespace: default
spec:
clusterIP: None # cu
ignite具有高级的
集群功能,包括逻辑
集群组和自动发现。
ignite的节点可以自动发现其他的节点。这有助于在需要时缩放
集群,而不必重新启动整个
集群。开发人员还可以利用
ignite的混合云支持,允许在私有云和公共云之间建立连接,例如Amazon Web Services,为它们提供两个世界中最好的。
集群特性一浏览:
1.Cluster APIs(
集群API)
Docker Ignite 数据卷挂载安装和启动,两个命令就搞定了
sudo docker pull apacheignite/ignite
sudo docker run -it --net=host apacheignite/ignite
如果需要制定配置文件并且enable一些可选库文件(如 restful api)可以使用如下命令
sudo docker run -it --net=ho...
通过bin/
ignite.sh启动服务,一般
Ignite有服务发现机制,无论有多少个节点,都可以只配置如上面配置的
集群中的3个IP就可以,这个三个节点需要提前启动,其他新加入的节点,会通过这三个节点,路由到
集群中的其他机器。通过
集群API查看
集群的状态。
通过客户端API创建缓存,读写数据...............
我们使用docker容器部署了ignite集群,在使用过程中发现占用内存很高,50万条数据占用了8个G内存,于是就想看一下容器内部应用的堆栈信息,分析一下。一开始我在容器创建脚本中加入了以下配置,结果端口无法访问。经过再三查阅资料,需要以下配置才可以:
修改 ignite.sh 脚本
if [ -n "$JMX_PORT" ]; then
JMX_MON="-Dcom.s...
根据官网教程部署,步骤如下:
1)下载ignite-web-agent(找不到直接下载的入口,参考API说明 https://www.zybuluo.com/liyuj/note/1273458)
https://console.gridgain.com/configuration/advanced/clusters
2)拷贝并启动ignite-web...
我是在linux中安装部署的ignite集群:
一。部署的步骤如下:
1.下载apache-ignite-2.7.6-bin.zip 使用unzip解压,配置环境变量;
2.bin/ignite.sh 启动
启动的会有详细的日志信息(下面是日志信息的解读):
[23:41:41] Ignite node started OK (id=e935ab3a)
[23:41:41] Topology sn...