Cod*_*nci 10 java concurrency design-patterns
我有一个在服务器集群上运行的Web服务.此Web服务执行一些内部处理,然后可以调用外部服务,这会产生费用.
我想进行一些缓存,这样如果我收到相同的服务请求(保证会发生),那么我就不必重复处理,既节省了处理时间/功率,也节省了外部部件的成本服务电话.
但是,当我遇到以下约束时,我正在努力弄清楚如何管理这个缓存
在分布式环境中工作时,如何阻止执行其他服务调用,直到第一个服务调用响应(因此在缓存中可用).
我已经考虑过放入一个前端代理模式并在代理中建立一个相同请求的队列,这样当第一次返回时,它也可以向其他请求返回相同的响应.这是正确的模式,还是有更好的并发模式来处理这种情况?
你可以
在步骤2,如果散列已经在数据库中,并且具有"结果挂起"状态,则可以每隔X毫秒轮询一次数据库,并最终返回结果.
当然,魔鬼在细节中,因为如果发生错误,您必须决定做什么: