如何最好地将我的应用程序与不可靠的数据库隔离?

Joh*_*ing 5 java database sybase soap reliability

我有一个 Java SOAP 数据服务,它位于 Sybase 数据库之上,由于我无法控制的原因,该数据库的性能不可靠。该数据库是供应商包的一部分,已由内部团队修改,大多数问题是由一天中某些时间的响应时间缓慢引起的。

SOAP 服务向计算网格提供数据,当我请求数据时,我需要响应时间既快又一致。该服务提供基本的CRUD功能,但读写比例约为100:1。

将自己与数据库不可靠的性能隔离开来并确保 SOAP 服务快速可靠的最佳策略是什么?

Roa*_*ior 4

我已经见过这个问题几次了,通常是在供应商数据库中。

如果这是在 Windows 上,您可以创建一个 Windows 服务作为 SOAP 服务和数据库之间的中介。然后在 SOAP 服务和 Windows 服务之间放置一个消息队列(MSMQ 或 JMS 实现,例如 MQ Series)以进行异步通信。这样数据库性能问题将不再影响SOAP服务。然而,该解决方案确实以增加复杂性为代价。

请注意,.NET Web 服务可由其客户端调用并异步响应。我不确定 Java SOAP 服务是否可以实现这一点。

如果这是在某种风格的 Unix 上,我认为它具有与 Windows 服务类似的功能 - 也许是一个守护进程。