我正在两个服务之间编写一个网关,其中一个服务是一个非常慢的Web服务,并且快速过载,另一个是超级快速并经常发送相同的数据。
我想让我的服务丢弃(尽可能早)我收到的数据等于以前的对象。
最好的方法是什么?
我所知道的最好的方法(我怀疑是最好的)是将反序列化后的接收对象与我已经收到的对象集(换句话说,缓存)进行比较。
我更关心的是,我丢弃的内容与计算上容易丢弃一样,而不是确保丢弃所有重复数据。
仅供参考,除其他外,数据还包括经常相同的地理信息。
澄清:
情况:
服务1速度很快,并且经常发送没有新数据的更新。 服务2很慢
我想将服务1中的数据发送到服务2(稍作修改),但前提是我还没有发送过相同的数据。
戴尔
答案 0 :(得分:1)
如果没有更多信息,很难说最好的方法是什么,但听起来你可以从相对简单的缓存中受益。我不确定你是否处于沉重的阅读或重读场景中,但你应该能够以任何方式使其工作。
IE,调用快速服务并在调用慢速服务之前检查缓存中的结果。
答案 1 :(得分:0)
我认为肯尼斯提出了一个好主意。
为了解决这个问题,我觉得你有类似这种情况的事情(如果这不正确就澄清你的问题)......
[服务1] - > (电话) - > [服务2]
如果是这种情况,正如Kenneth建议的那样,您可能希望实现已经从Service 1发送的请求的缓存机制,并存储从Service 2收到的答案。因此,在伪代码中,类似这样的东西:
这也有利于通过服务1更快地查找。
答案 2 :(得分:0)
最早的一点是检测重复数据是否在数据的发送方中,而不是在接收方中。
在那里添加内存缓存。如果对象是重复的,则无需将其序列化并浪费任何时间发送它。
顺便说一下,如果你想要一个好的.Net内存缓存,我已经好运Couchbase's MemcacheD