首页 > 解决方案 > 如何处理 Ver.tx 中变量的同时更新?

问题描述

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

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

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

标签: multithreadingvert.x

解决方案


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

但是,既然 Vert.x 提供了一些开箱即用的东西,称为异步计数器,你为什么要这样做。虽然这会锁定,但这将是在集群中完成该任务的最简单方法之一。


推荐阅读