【问题标题】:Request Caching with Circuit-Breaker(Opossum) in nodejs在nodejs中使用断路器(负鼠)请求缓存
【发布时间】:2018-09-06 22:51:28
【问题描述】:

基于 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 调用

【问题讨论】:

  • 可能你必须自己做,就像拥有一个 Redis 实例来存储该特定 url 的最新成功调用。确保在 redis 中设置了一个临时条目。
  • @MarcoTalento 这似乎是个好主意。
  • @MarcoTalento 如果你回答这个问题,我可以投票并选择它。
  • 正如下面 Helio 的帖子中所述,您可以提供 { cache: true } 作为选项。

标签: javascript node.js microservices hystrix circuit-breaker


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

  • 欢迎您!请尝试通过引用您的解决方案的功能以及提供相关文档的链接来彻底回答问题。
猜你喜欢
  • 2021-01-30
  • 2014-08-01
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
相关资源
最近更新 更多