multithreading - 如何处理 Ver.tx 中变量的同时更新?
问题描述
我是 Vert.x 的新手。我有一个场景,我需要计算所有传入请求到一个 Verticle 中 - 它用作 REST API。
如果我只是为所有请求增加计数器,那么对于同时请求,该值将不正确 - 因为它将同时被所有请求更新。这将与多个线程同时更新一个变量相同。
如何在 Vert.x 中处理这种情况?
解决方案
一种解决方案是实现一个verticle(和一个处理程序)来进行计数/聚合。每次你收到一个请求,你都会向那个地址发布一条消息(实际上什么都没有),当 Verticle 收到它时,做数学 - 只需添加一个。如果您需要该count
值,则需要另一个处理程序。要记住的一件事是,您只需要实例化其中的一个——如果您有一个集群,问题会稍微复杂一些。
但是,既然 Vert.x 提供了一些开箱即用的东西,称为异步计数器,你为什么要这样做。虽然这会锁定,但这将是在集群中完成该任务的最简单方法之一。
推荐阅读
- algorithm - 最大可能分数
- spring-boot - KafkaConsumer 没有轮询所有消息
- html - safari 没有显示带阴影的圆形 div
- curl - 上传图片时出现错误 {"name":"Bad Request","message":"Unsupported image type","code":0,"status":400}
- css - Bootstrap Carousel 的问题(图像显示但不滑动/更改)
- java - Java中ImageIcon上的内存泄漏
- javascript - 在 AngularJS 数据表之外触发过滤
- java - 如何使用 Selenium Java 从网站中的框架切换
- android-management-api - 设备未同步政策更改
- python - Python 中的 Slack 集成