代码之家  ›  专栏  ›  技术社区  ›  KRR16

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

  •  1
  • KRR16  · 技术社区  · 8 年前

    我刚接触Vert.x。我有一个场景,在这个场景中,我需要将所有传入的请求计算到一个Verticle中,该Verticle作为一个RESTAPI。

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

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   x80486    8 年前

    一种解决方案是实现垂直(和处理程序)来进行计数/聚合。每次收到请求时,都会将消息发布到该地址(实际上没有什么),当Verticle收到消息时,只需添加一条即可。如果你需要 count 值,您需要另一个处理程序。要记住的一点是,您需要实例化 只有一个 在这些问题中,如果你有一个集群,那么问题就更加复杂了。

    但是,既然Vert.x提供了一个现成的名为 Asynchronous counters . 虽然这会锁定,但这是在集群中完成该任务的最简单方法之一。