是否应该存在缓存服务?

时间:2010-03-02 16:53:20

标签: web-services soa

缓存问题是否应该转变为网络服务?

这个问题可能有点奇怪,但我觉得在SOA中,应该根据业务解决方案来识别服务,我们不应该公开只负责缓存对象的服务。这似乎根本不是商业功能。如果有什么事情似乎是性能提升。

我们是否应该只为缓存数据而引入和实施服务?从您的域模型本身来看,这不是一个障碍吗?我的意思是,只要你需要在另一个服务中缓存一个对象,你就必须将这个类移动到cacheService。

对此有何普遍看法?

4 个答案:

答案 0 :(得分:3)

我认为提高用户的性能是一项业务功能。我认为您的问题实际上是您是否应该将缓存分解为单个服务,或者在内部对其他服务进行分解。答案一如既往,取决于。但它肯定可以有一个专门的缓存服务。例如,Google会为memcache执行此操作。

编辑:同样,有一种方法可以给猫皮肤涂抹。你不一定要缓存权威的Person对象。另一种可能性是使用缓存服务来渲染数据,例如PDF帐户声明。例如,Hi5(一个社交网站),uses memcache来缓存完全准备好的用户配置文件。

答案 1 :(得分:2)

我认为这不是一个好主意,通常缓存的概念是使数据可用并使其更接近使用点。将其转换为真正的软件即服务或其他服务模型,在传统意义上限制了这种能力。

缓存需要快速,本地且随时可用。

答案 2 :(得分:1)

如果该服务充当先前非缓存服务的Facade,那么是,它可以是“它自己的服务”。特别是对于只读或大多数读取数据,这是有道理的。但请记住,像线程一样的缓存是一个危险的域。它很容易“做”但很难做到“正确”,并且做得不正确会导致一系列难以调试的问题,一旦找到原因就难以修复。以这种方式考虑,像Akamai这样的内容分发提供商构建了他们的整个business,提供缓存即服务。

答案 3 :(得分:0)

我同意您的想法,即Web服务应该公开业务功能。缓存Web服务的想法似乎是一个坏主意。

从使用角度考虑这个问题,这意味着什么?这似乎意味着客户端会首先点击缓存Web服务来获取对象。如果不存在,他们需要从真实的Web服务中获取它,然后将对象“推”回缓存中吗?这问了很多客户。任何缓存工作流程都应该对客户端透明。

但是,如果您谈论支持一些相关的Web服务,其缓存是从客户端“隐藏”(和透明),仅用于使整个Web服务系列更具响应性,那么它可能是一个好主意。