我有一个相当复杂的 Web 应用程序,它在 Cassandra 数据库中创建 HTML 页面。
在创建页面时,它会在该页面中保存一个状态,以反映它正在处理的事实。
INSERT INTO content (key, column1, value)
VALUES ('http://domain/path', 'content:status', 0x0201);
(列名来自节俭日...)
虽然状态为 0x0201,但没有其他进程可以对页面执行任何操作。它被视为被锁定。
一旦完成创建页面,大约一毫秒,我将状态切换为“正常”。这是该content::status
领域的另一个插入。
INSERT INTO content (key, column1, value)
VALUES ('http://domain/path', 'content:status', 0x0102);
此处状态从0x0201
变为0x0102
。只是,在我在网站初始化时创建的大约 700 个页面中,其中 22 到 30 个(3% 到 4%)的状态没有改变。
会不会因为第一次INSERT INTO
和第二次之间的时间太短而导致 Cassandra 集群混乱而发生这种情况?(即认为两者几乎一起到达并选择其中之一,在这几种失败的情况下恰好是错误的?)