我在Vert发展。x(基于Netty和Hazelcast),我正在尝试在两个服务器实例之间共享数据(在同一局域网上的不同机器中的每个实例)。
我的问题是我不知道如何配置vert. x服务器以允许它们共享它们的并发内存映射(理论上说这是可能的)。
我已经阅读了Vert. x和Hazelcast的许多文档,但还没有结果。(我不知道如何强制vert. x加载hazelcast xml配置文件)。
提前感谢!
Afaik您不能在vert的不同实例之间共享数据。x——来自文档
"[...] 通过提供共享地图结构,可以更好地解决这种用例,该结构可以由同一垂直中的不同垂直实例直接访问。x实例。"
由于“vert.x instance”表示“jvm instance”,所以不能在不同的jvm之间使用sharedmap/set。您可以使用事件总线进行此操作。
在别人投反对票之前编辑:我的答案是6年前的2012年,当时这是不可能的。现在,正如其他人所说,这是可能的
带垂直。x 3-如果您配置了Vert。将实例转换为“集群模式”(只需将集群添加到Vert.x启动器的命令行即可,详情请参见此处),然后您可以使用共享数据接口访问“分布式映射”,该映射允许集群成员透明地在集群中读写数据。
例子:
if (vertx.isClustered()) {
log.info("Using clustered data store");
vertx.sharedData().<String, MyEntity>getClusterWideMap("entities",
res -> {
AsyncMap<String, MyEntity> dataMap = res.result();
setDataStore(dataMap);
});
}
有在不同机器上的vertx实例之间共享数据的选项
选项1。
您可以使用Vert. x ClusterManager和它的地图:
ClusterManager clusterManager = ((VertxInternal)vertx).clusterManager();
Map map = clusterManager.getSyncMap("mapName"); // shared distributed map
该映射由Hazelcast IMap支持并分发。这假设您正在使用-集群
参数运行vertx并已配置集群。
但是请注意,这是内部API,通常不建议用于生产。如果你正在做一次性实验,那么它可能会很有用。
选项2。
在群集模式下启动vertx后,您可以访问Hazelcast:
Set<HazelcastInstance> instances = Hazelcast.getAllHazelcastInstances();
HazelcastInstance hz = instances.stream().findFirst().get();
Map map = hz.getMap("mapName"); // shared distributed map
场景:在使用nuxtjs 服务器渲染的时候接口数据都是asyncData进行请求的,之前用户在页面输入了一些数据等,前端这边都是缓存到localStorage 页面刷新的时候还可以拿到,现在的问题:页面刷新的时候客户端操作的数据如何实现服务器数据共享呢? 有什么好的思路吗?我想到过用cookie?但是太小了不能满足我的需求
最近我正在开发一些针对storm拓扑的计时工具,但是对于storm集群中的数据共享,我还是有一些疑问: > 如果一个组件(spout/bolt)为每个工作者配置了多个执行器,假设工作者号为1,组件的parallelism_hint为3,任务号使用默认设置(即1),是否意味着该组件在工作者中有3个实例?如果不是,是否应该在同步块中使用组件的字段? 如果在组件中(或方法内)创建了一个名为“athrea
问题内容: 我知道如何使用–volumes-from创建数据卷容器并将其安装到其他多个容器,但是我确实对它的用法和局限性有一些疑问: 情况:我正在寻找一个数据量容器来存储用户为我的Web应用程序上传的图像。该数据量容器将由运行Web前端的许多其他容器使用/安装。 问题: 数据量容器可以使用/安装在Docker群中其他主机上的容器中吗? 表现如何?建议以这种方式构造事物吗? 是否有更好的方法来处理跨
我的应用程序本质上是一堆跨Node.js实例部署的微服务。一个服务可能会写入一些数据,而另一个服务将读取这些更新。(具体的例子是,我正在使用处理管道处理入站到解决方案中的数据。阶段1对相同的数据执行某些操作,阶段2对相同的数据执行其他操作,等等。这是一个相当常见的模式) 因此,我有一个很大的数据集(现在大约250GB,我读到过,一旦数据库变得比这个大得多,就不可能在数据库中引入分片,至少不是没有一
假设我有这个中间件类: ctx。set()方法是虚构的,它在3.6.2版上不存在。那么,我们如何在请求的上下文中设置任意信息呢?
我正在我的一个工人垂直站中进行阻塞服务呼叫,该垂直站记录了一个警告。这是通过增加时限来“解决”的,但是,我 表示什么?是主顶点的某种痕迹吗?谢谢。