【问题标题】:how to distribute the load in a billing system? [closed]如何在计费系统中分配负载? [关闭]
【发布时间】:2014-04-16 03:58:10
【问题描述】:

我的用例是用 Java 开发电信计费。知道我必须每天计算 60 000 张账单,我需要将计算负载分布在几个(三或四个)服务器上。 这就是所谓的聚类(如果错了,请纠正我)。 我的解决方案是开发一个中间件,为每台服务器分发应收费的客户列表,然后每台服务器计算账单并生成 PDF 文件。

您能否再给我一些想法,例如我需要哪个 Java 类,或者我应该使用哪些方法。

谢谢

【问题讨论】:

  • 每分钟只有 41 张账单。非常可行,无需聚类。
  • 这取决于计算账单和生成 pdf 的费用。不幸的是,我没有原型来弄清楚。如果我们假设一张账单需要 2 秒,我需要 33 小时来计算 60 000 张账单。
  • 为什么不编写一个过滤器,将每个下一个请求传输到四个服务器中的下一个服务器
  • 我不反对集群,但如果您打算在 4 台服务器上花钱,那么将这笔钱花在一台服务器上,这样就省去了麻烦。 (只是半开玩笑)

标签: java performance cluster-computing billing


【解决方案1】:

春季批次将非常适合:http://projects.spring.io/spring-batch/

它支持自动重启作业和分区(分布在多台机器上)。

文档中有一个完整的章节专门用于扩展/分发:http://docs.spring.io/spring-batch/2.2.x/reference/html/scalability.html

【讨论】:

    【解决方案2】:

    试试 apache hadoop。

    http://hadoop.apache.org/

    它将非常适合这种分而治之的任务。

    【讨论】:

      【解决方案3】:

      如果您使用 jms(也许作为使用 j2ee 的一部分?),您可以简单地为此使用 jms 队列 - 每个节点上有多个消费者(j2ee 中的 mdb),并将要处理的客户端列表发送到队列。

      队列将保证每条消息(==客户端)将由一个且仅一个侦听器处理,并且由于每个节点的侦听器数量有限,您可以通过这种方式获得工作分配。

      【讨论】:

      • 我同意,jms可以做到。 JMS 是用于异步消息的,你认为它有帮助吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      相关资源
      最近更新 更多