我们有一个Web服务以非常高的频率接收请求。 该应用程序部署在集群中的两个jboss服务器上(用于负载平衡)
我们处理请求并将一些请求确定为“好请求”。 现在我们要特别处理某些百分比的“好请求”(向下游发送到另一个系统)。这个百分比值是可配置的。 例如,如果百分比是75%,对于我们收到的每4个“好请求”,其中3个必须专门处理(发送到下游),第4个必须被忽略。
我不想添加确定“好请求”是否必须作为现有系统的一部分向下游发送的过程。因为这会减慢处理时间。
这是我对这个问题的解决方案。
Count - 是下游模块收到的请求数
由于应用程序部署在两台服务器上,因此上述方法可以预见到几个问题。
我以为我会在数据库中维护一个表,该表将插入“好请求”并为其生成唯一编号(Good_request_count),并在每个“下游模块”中使用Good_request_count来决定是否必须是否经过特殊处理。
但我担心我的解决方案效率很低,因为它涉及以下
根本问题是,我有两台服务器,我希望两者都有唯一的计数。
任何人都可以建议我一个更好的解决方案,或者指出我可以改进的系统效率低下。
如果我不清楚任何部分,请告诉我,我可以解释一下。
非常感谢您阅读!
答案 0 :(得分:2)
以下是另外两个需要考虑的策略:
创建一个MBean,其中包含保持计数的代码并将其部署在群集中每台服务器上的deploy-hasingleton目录中。您可以通过JNDI查找引用MBean,并保证只有一个实例可以在整个集群中访问。
如果您使用的是更新版本的JBoss,则可以选择使用单例会话EJB来跟踪计数。