我有一个Java SOAP数据服务,它位于Sybase数据库之上,由于我无法控制的原因,它具有不可靠的性能.该数据库是供应商软件包的一部分,该软件包已由内部团队修改,大多数问题是由一天中某些时间的响应时间较慢引起的.
SOAP服务向计算网格提供数据,当我请求数据时,我需要快速且一致的响应时间.该服务提供基本的CRUD功能,但读写比率约为100:1.
将自己与数据库的不可靠性能隔离开来并确保SOAP服务快速可靠的最佳策略是什么?
解决方法:
我已经看过几次这个问题,通常是供应商数据库.
如果这是在Windows上,您可以创建Windows服务作为SOAP服务和数据库之间的中介.然后在SOAP服务和Windows服务之间放置一个消息队列(MSMQ或JMS实现,如MQ Series),以进行异步通信.这样,数据库性能问题将不再影响SOAP服务.然而,该解决方案的确以增加复杂性为代价.
请注意,.NET Web服务可以由其客户端调用,并以异步方式响应其客户端.我不确定Java SOAP服务是否可行.
如果这是Unix的某种风格,我认为它具有与Windows服务类似的功能 – 可能是一个守护进程.