MySQL为Node.JS中的许多工人共享内存(可能吗?)



遇到一个有趣的场景,我有许多服务器正在运行,我正在尽我最大的努力通过IPC路由它们,但发现这可能允许在必要的写入发生之前进行双重读取。这反过来可能会给我错误的计数/值。

我正在寻找设置一个数据库或某种类型的解决方案,我可以做到:

我根据最低计数读取可用服务器的数据库。我选择的服务器在一次操作中更新其计数+1。我可能有100个请求通过web套接字进入,需要这个计数准确的每个请求,而不是超载服务器。

我担心的是两个worker同时执行相同的请求,我希望其中一个在另一个之前完成读/写,但不减慢其他请求的速度。

这是可与MySQL或有一个更快的解决方案?我想我需要ACID兼容。

是的,在任意数量的客户端之间使用MySQL(或其他数据库)作为公共存储。使用"transactions"防止客户端踩到对方:

START TRANSACTION;
do several reads/writes with database, but don't take too long
COMMIT;

在执行读取操作时,如果您可能要更改读取的行,则使用

SELECT ... FOR UPDATE;

这样,您可以有效地防止其他线程在获得后续UPDATEDELETE之前干扰行。

最新更新