3

基于 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 调用。我有一个后备方法来处理服务出现故障时的情况。我想知道是否可以在断路器旁边使用请求缓存之类的东西来在调用回退时返回缓存的响应。如果是,我怎样才能做到这一点?

PS:请求是我的客户进行 REST 调用

4

2 回答 2

1

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

于 2018-04-02T13:31:32.350 回答
0

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

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

您可以在此测试文件中看到更多详细信息

于 2019-02-13T16:35:21.633 回答