![]() |
1
5
由于您已经在JavaEE环境中,您可以创建一个MDB,它处理基于JMS队列的所有对WebService的请求。应用程序的实例可以简单地将它们的请求发布到队列中,MDB将接收它们并调用WebService。 实际上,可以为队列配置适当数量的会话,以限制对WebService的并发访问,因此可以通过队列配置来处理限制。 结果可以通过另一个队列(甚至每个应用程序实例的队列)返回。 |
![]() |
2
2
我建议使用 beanstalkd 周期性地将一组请求(作业)泵入一个管道(队列),每个都有适当的延迟。任何数量的“工作”线程或进程都将等待下一个请求可用,如果工作人员提前完成,则可以接收下一个请求。缺点是,工作人员之间没有任何显式的负载平衡,但是我发现队列外请求的分布已经得到了很好的平衡。 |
![]() |
3
1
n个节点需要通信。有多种策略:
根据您预计以后扩展到多高,一种或另一种策略可能是最好的。对于2个节点,最简单的一个是广播,但是随着节点数量的增加,问题开始增加(您将花费更多的时间广播和响应Broadcats,而不是实际执行WS请求)。 节点如何通信,由您决定。你可以打开一个TCP管道,你可以Broadcats-UDP,你可以单独为这个目的做一个完全成熟的WS,你可以使用一个文件共享协议。不管你做什么,你现在已经不在一个过程中了,所以 fallacies of distributed computing 申请。 |
![]() |
4
1
实现这一点的许多方法:您可能有一个“协调代理”,负责将“令牌”传递给服务器。每个“令牌”代表执行任务等的权限。每个应用程序需要请求“令牌”才能进行调用。 一旦一个应用程序耗尽了它的令牌,在再次访问Web服务之前,它必须请求更多的令牌。 当然,当每个应用程序由于对Web服务的并发性而对每个调用的时间有要求时,这一切就会变得复杂起来。 你可以依靠 拉比麦克 作为消息传递框架:Java绑定是可用的。 |
![]() |
5
1
这是一个有趣的问题,解决方案的难度在某种程度上取决于您对节流的要求有多严格。 我通常的解决办法是 JBossCache 一部分是因为它与JBossAppServer打包在一起,另一部分是因为它处理好了任务。您可以将它用作一种分布式哈希图,以不同的粒度记录使用统计信息。它的更新可以异步完成,这样不会减慢速度。 jbosscache通常用于重型分布式缓存,但我更喜欢它用于这些重量较轻的作业。它是纯Java的,不需要与JVM(不像TealaCoTa)混在一起。 |
![]() |
Vaccano · 限制在给定时间开放的承诺量 8 年前 |
![]() |
Covik · 使用ajax在laravel 5.1中限制登录 9 年前 |
![]() |
The Silencer · 从soundcloud获取多首曲目的统计数据 11 年前 |