【问题标题】:Sequential vs multi-threaded Accounting Events Processing顺序与多线程会计事件处理
【发布时间】:2011-06-02 00:31:42
【问题描述】:

我们正在开发一个事件驱动的会计引擎,到目前为止,我们正在以批处理/顺序方式完成所有工作。

问题是每天创建数以千计的事件,并且按顺序处理所有事件会使其变慢。

有没有一种安全的方法可以实现多线程事件处理会计引擎,而无需担心财务数据的完整性和一致性?

或者只是安全地使用它并允许遵循批处理/顺序方法更好?

【问题讨论】:

  • 这些事件应该按顺序处理还是相互独立?
  • 有的需要按顺序处理,有的不需要。

标签: architecture event-driven event-driven-design


【解决方案1】:

也许您可能想研究软件事务内存模型。这个概念已经在这个paper

中讨论过了

【讨论】:

    【解决方案2】:

    如果你遵守规则,你可以使用多个并发事务

    退房
    en.wikipedia.org/wiki/Atomicity_(database_systems)
    en.wikipedia.org/wiki/ACID
    en.wikipedia.org/wiki/Record_locking

    或阅读本节所有相关文章
    http://en.wikipedia.org/wiki/Category:Transaction_processing

    为您正在做的事情提供正确的锁定级别

    【讨论】:

      【解决方案3】:

      您已经成功构建了一个满足您的财务数据完整性和一致性要求的会计引擎。有了这个,并行处理应该是可行的。

      你需要

      • 一个新的调度程序组件,负责为多个线程提供待处理的事件数据,同时保持一致性(即每个事件只计费一次)和
      • 一个新的聚合器组件,用于混合帐户上的评级事件。

      聚合器组件通常会成为并行架构的瓶颈。

      由于您明确打算构建多线程应用程序:根据需求和环境,构建多进程设计可能是可行的,即让多个独立进程并行运行。与进程间通信的实际需求相比,您将获得一个更简单的并发模型。

      几乎所有电信计费系统都通过多线程或多处理进行扩展,因此这绝对是一个明智的前进方向。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多