如何在Ver.tx中处理变量的同步更新?

时间:2018-05-20 17:50:05

标签: multithreading vert.x

我是Vert.x的新手。我有一个场景,我需要计算所有传入请求到一个Verticle - 它作为REST API。

如果我只是为所有请求递增计数器,那么对于同时请求,该值将不正确 - 因为它将同时由所有请求进行更新。它将与多个线程同时更新变量相同。

如何在Vert.x中处理这种情况?

1 个答案:

答案 0 :(得分:1)

一种解决方案是实现一个Verticle(和一个处理程序)来进行计数/聚合。每次收到请求时,都会向该地址发布一条消息(实际上没有任何内容),当Verticle接收到它时,请进行数学计算 - 只需添加一个。如果您需要count值,则需要另一个处理程序。要记住的一件事是你需要实例化只有一个 - 如果你有一个集群,问题就会复杂化一点。

但是,为什么你会这样做,因为Vert.x提供了一些名为 Asynchronous counters 的开箱即用的东西。这会锁定,但这将是在群集中完成该任务的最简单方法之一。