【发布时间】:2011-03-29 02:51:25
【问题描述】:
我正在编写一个分布式程序,它需要管理对某些数据库行的独占访问。显然,这种情况下存在许多技术,但试图 KISS。这会大规模扩展到用户吗?不知道,但我想规划一些未来的容量。
我不一定要采用经典的 PtP 或 PnS 队列模型,因为这种处理将是分散-收集和可选同步的。在经典队列模型上分层是可能的,但我担心会比必要的复杂。您能否推荐以下其中一项以及为什么要实施一些较低级别的控制?我有一个数据库和 n 个处理节点。
- 通过
select for update(或等效项)轮询数据库记录。有些人对 A) 数据库争用和 B) 仍在进行轮询表示担忧。 - 网络同步资源锁定、等待处理通知的持久连接(一直在讨论 HTTP 服务器推送式...可能比在 MQ 上分层更复杂?),
- UDP 消息推送(带 TTL)由单个调度程序?
任何优点/缺点或您在过去的解决方案中是如何实现相同的,您在数据库同步层是否有同样的顾虑?
【问题讨论】:
-
是的,苹果 //c 在你的照片中!
-
独占访问的目的是什么 - 避免编辑冲突?我也不明白你的scatter-gather语句,数据库是分布式的吗?
-
单数据库。我有需要路由到特定端点或一组端点的遥测数据。这些端点可能会或可能不会配置为“同步”,因为我需要等待响应。独占访问的目的是我只希望一个进程|线程|无论如何能够路由任何给定的消息,并且会有数百个并发路由进程,因为会有很多消息。经典 MQ,但我无法更改遥测设备以符合 MQ 模式(将响应发送回 MQ),我需要直接控制它们。
标签: database concurrency message-queue