缓存外部系统接口返回信息的方案
2016-06-28 09:52
399 查看
概述
在一个大的系统当中,通常会切分成多个子系统,子系统与子系统之间可以通过微服务、http接口或者mq等来相互通讯。假设有这样一种场景,A系统需要调用B系统的f1接口,获取数据后再向前端系统输出。
前端系统通常所承受的并发量是非常大的,也就是说A系统的接口需要有很高的qps。
这个时候我们需要缓存B系统接口的输出,以便提高A系统接口的响应速度。
方案一 让缓存保持新鲜
我们可以把B系统接口返回的数据存储到本地缓存(根据数据量的大小可以选择堆外或者堆内的)或者中央缓存。为了缓存数据不生效,可以使用一个定时任务去定时的调用B系统的接口,把返回的数据刷新到缓存中,让缓存保持新鲜 。这样来自前端的请求,便可直接在缓存命中,如果不命中则直接返回空,告知对方无此数据。方案二 设置数据的缓存失效时间
另一种方案是,直接设置数据在缓存的失效时间,一旦数据过期,则直接把请求穿透到B系统,B系统返回数据后,再把数据放入到缓存中。这种做法就无需使用定时任务去刷新缓存。不过有个缺点是,缓存失效,需要把请求穿透到B系统。
总结
无论使用哪种方案,最好能做到缓存预热,这样在系统刚启动的时候,由于缓存中有数据,不会对系统造成太大压力。相关文章推荐
- 页面缓存:内存和文件之间的那些事
- 浅析SQL Server中的执行计划缓存(上)
- Enterprise Library for .NET Framework 2.0缓存使用实例
- PowerShell中编程清空IE缓存方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- C#中缓存的基本用法总结
- Android实现图片异步加载并缓存到本地
- wap开发中如何有效的利用缓存减少消息的传送量
- PHP基于文件存储实现缓存的方法
- smarty缓存用法分析
- 在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency
- 在ASP.NET 2.0中操作数据之五十八:在程序启动阶段缓存数据
- 在ASP.NET 2.0中操作数据之五十七:在分层架构中缓存数据
- 引用全局程序集缓存内的程序集的方法
- asp Response.flush 实时显示进度
- C#实现清除IE浏览器缓存的方法
- ASP.NET缓存管理的几种方法
- PHP文件缓存类实现代码
- 清除aspx页面缓存的程序实现方法
- C#缓存之SqlCacheDependency用法实例总结