在nodejs中使用Circuit-Breaker(Opossum)请求缓存

问题描述 投票:2回答:2

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

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

javascript node.js microservices hystrix circuit-breaker
2个回答
1
投票

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


0
投票

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

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

你可以在this test file上看到更多细节

© www.soinside.com 2019 - 2024. All rights reserved.