在nodejs中使用断路器(负鼠)请求缓存

Request Caching with Circuit-Breaker(Opossum) in nodejs

基于 Netflix Hystrix 断路器设计模式,我尝试执行以下操作:

const circuitBreaker = require('opossum');
import * as request from 'request-promise';

const circuit = circuitBreaker(request.get);

circuit.fallback(() => Promise.resolve({result:[]}));

我部署了 3 个节点 js 服务。他们使用断路器(负鼠)在它们之间进行 REST 调用。我有一个后备方法来处理服务出现故障时的情况。我想知道是否可以将诸如请求缓存之类的东西与断路器一起使用,以便在调用回退时 return 缓存响应。如果是,我该如何实现?

P.S : 请求是我的客户端进行 REST 调用

据我所知,opossum 没有为您的问题提供开箱即用的解决方案。您必须实施某种机制来缓存最新的成功调用。在我看来,最好的方法可能是拥有像 Redis 这样的分布式缓存并缓存最新的成功响应,但确保在 Redis 中有一个临时条目,你不想 return 旧的弃用数据.

我不确定这是否有帮助,但你可以试试:

circuitBreaker(request.get, { cache: true });

您可以在 this test file

上查看更多详细信息