Java 如何在计费系统中分配负载?

Java 如何在计费系统中分配负载?,java,performance,cluster-computing,billing,Java,Performance,Cluster Computing,Billing,我的用例是用Java开发电信计费。我知道每天必须计算60000张账单,因此需要将计算负载分配到几个(三个或四个)服务器上。 这就是所谓的集群(如果它是错误的,请纠正我)。 我的解决方案是开发一个中间件,为每台服务器分发一份应该收费的客户列表,然后每台服务器计算账单并生成一个PDF文件 你能给我一些更多的想法吗,比如我需要哪个Java类,或者我应该使用哪些方法 谢谢你如果你使用jms(可能是使用j2ee的一部分?),你可以简单地使用jms队列——在每个节点上都有几个消费者(j2ee中的MDB),并

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

你能给我一些更多的想法吗,比如我需要哪个Java类,或者我应该使用哪些方法

谢谢你

如果你使用jms(可能是使用j2ee的一部分?),你可以简单地使用jms队列——在每个节点上都有几个消费者(j2ee中的MDB),并将要处理的客户端列表发送到队列

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

尝试apache hadoop


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

Spring batch非常适合:

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


文档中有一整章专门用于扩展/分发:

每分钟只有41张账单。这取决于计算账单和生成pdf所需的时间。不幸的是,我没有一个原型来解决这个问题。如果我们假设一张账单需要2秒钟,我需要33小时来计算60000张账单。为什么不写一个过滤器,将下一个请求转移到四个服务器中的下一个服务器上呢?我不反对集群,但如果你打算在四个服务器上花钱,那么就把钱花在一个服务器上,省去你自己的麻烦。(半开玩笑)我同意,jms可以做到。JMS是用于异步消息的,您认为它有帮助吗?