首页 > 其他分享 >5、基于 request cache 请求缓存技术

5、基于 request cache 请求缓存技术

时间:2023-05-26 19:15:44浏览次数:68  
标签:缓存 name text cache request data nodes type id

Hystrix command 执行时 8 大步骤第三步,就是检查 Request cache 是否有缓存。 首先,有一个概念,叫做 Request Context 请求上下文,一般来说,在一个 web 应用中,如果我们用到了 Hystrix,我们会在一个 filter 里面,对每一个请求都施加一个请求上下文。就是说,每一次请求,就是一次请求上下文。然后在这次请求上下文中,我们会去执行 N 多代码,调用 N 多依赖服务,有的依赖服务可能还会调用好几次。 在一次请求上下文中,如果有多个 command,参数都是一样的,调用的接口也是一样的,而结果可以认为也是一样的。那么这个时候,我们可以让第一个 command 执行返回的结果缓存在内存中,然后这个请求上下文后续的其它对这个依赖的调用全部从内存中取出缓存结果就可以了。 这样的话,好处在于不用在一次请求上下文中反复多次执行一样的 command,避免重复执行网络请求,提升整个请求的性能。 举个栗子。比如说我们在一次请求上下文中,请求获取 productId 为 1 的数据,第一次缓存中没有,那么会从商品服务中获取数据,返回最新数据结果,同时将数据缓存在内存中。后续同一次请求上下文中,如果还有获取 productId 为 1 的数据的请求,直接从缓存中取就好了。 0 HystrixCommand 和 HystrixObservableCommand 都可以指定一个缓存 key,然后 Hystrix 会自动进行缓存,接着在同一个 request context 内,再次访问的话,就会直接取用缓存。

标签:缓存,name,text,cache,request,data,nodes,type,id
From: https://www.cnblogs.com/huigui-mint/p/17435582.html

相关文章

  • 6、基于本地缓存的 fallback 降级机制
    1、fallback降级机制hystrix调用各种接口,或者访问外部依赖,mysql,redis,zookeeper,kafka,等等,如果出现了任何异常的情况比如说报错了,访问mysql报错,redis报错,zookeeper报错,kafka报错,error对每个外部依赖,无论是服务接口,中间件,资源隔离,对外部依赖只能用一定量的资源去访问,线程池/信号......
  • webpack报错处理:The extension in the request is mandatory for it to be fully spe
    完整的报错提示如下:BREAKINGCHANGE:Therequest'./module2'failedtoresolveonlybecauseitwasresolvedasfullyspecified(probablybecausetheoriginisstrictEcmaScriptModule,e.g.amodulewithjavascriptmimetype,a'*.mjs'file,or......
  • C++文件流结构体序列化,并查集,LRU缓存
    c语言中的文件操作中用fprintf将数据写入到文件中,用fscanf将文件读入内存中,而c++中也有ostream和istream作为键盘流输入,屏幕流输出,对于文件也有ofstream/istream来进行相关的操作.如图:图中表示将一个结构体的的数据输入到文件中,并从文件中读取数据,并用得到的数据初始化一......
  • libmemcached支持连接池访问memcached
    #include<stdio.h>#include<libmemcached/memcached.h>#include<libmemcached/util.h>#include<assert.h>//g++-m32-gmemcached_test.c-omemcached_test-I/usr/lib/libmemcached/include-L/usr/lib/libmemcached/lib-lmemcached-l......
  • 如何防止缓存被击穿
    在什么情况下缓存会被击穿高并发应用场景中,当大量请求同时请求同个key,这个key便会失效了,这就使得数据库被超量的请求直接访问。此现象就是缓存击穿,其后果会导致数据库压力陡增。使用singleflight阻止同时请求请求1、2、3同时请求相同的key,singleflight机制只会让请求1访问DB,请......
  • Memcached与Redis的区别和选择
    一、Memcached简介Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcache......
  • api/Request
    1、介绍 对应http请求对象。两种设置方法:基于url设置基于请求报文message设置,伴随设置协议类型https_flag2、代码importreimporttimeimportrequestsfromapi.PropertiesClassesimportHeadersfromapi.ResponseClassimportResponsefromapi.UrlClassimport......
  • 跟我一起探索 HTTP-HTTP缓存
    概览HTTP缓存会存储与请求关联的响应,并将存储的响应复用于后续请求。可复用性有几个优点。首先,由于不需要将请求传递到源服务器,因此客户端和缓存越近,响应速度就越快。最典型的例子是浏览器本身为浏览器请求存储缓存。此外,当响应可复用时,源服务器不需要处理请求——因为它不需要解......
  • Guava cache使用总结
    importcom.google.common.cache.CacheBuilder;importcom.google.common.cache.CacheLoader;importcom.google.common.cache.LoadingCache;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Random;importjava.util.concurrent.TimeUnit;......
  • Redis中的缓存穿透|缓存击穿|缓存雪崩
    Redis是一种内存数据库,也就是说,它是一种存储在内存中的数据库.相当于Redis是提供一种缓存服务,提供这种缓存服务的有很多种,包括Redis,MongoDB等,其中国内用的最多的最常见的可能就是Redis既然是缓存服务,那么就可能存在缓存穿透,缓存击穿和缓存雪崩的现象存在,现在我们来分别详细描......