您的位置:首页 > 其它

缓存外部系统接口返回信息的方案

2016-06-28 09:52 399 查看

概述

在一个大的系统当中,通常会切分成多个子系统,子系统与子系统之间可以通过微服务、http接口或者mq等来相互通讯。假设有这样一种场景,A系统需要调用B系统的
f1
接口,获取数据后再向前端系统输出。

前端系统通常所承受的并发量是非常大的,也就是说A系统的接口需要有很高的qps。

这个时候我们需要缓存B系统接口的输出,以便提高A系统接口的响应速度。

方案一 让缓存保持新鲜

我们可以把B系统接口返回的数据存储到本地缓存(根据数据量的大小可以选择堆外或者堆内的)或者中央缓存。为了缓存数据不生效,可以使用一个定时任务去定时的调用B系统的接口,把返回的数据刷新到缓存中,让缓存保持新鲜 。这样来自前端的请求,便可直接在缓存命中,如果不命中则直接返回空,告知对方无此数据。

方案二 设置数据的缓存失效时间

另一种方案是,直接设置数据在缓存的失效时间,一旦数据过期,则直接把请求穿透到B系统,B系统返回数据后,再把数据放入到缓存中。

这种做法就无需使用定时任务去刷新缓存。不过有个缺点是,缓存失效,需要把请求穿透到B系统。

总结

无论使用哪种方案,最好能做到缓存预热,这样在系统刚启动的时候,由于缓存中有数据,不会对系统造成太大压力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  缓存