Кэширование запросов с помощью автоматического выключателя (Opossum) в 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 между ними. У меня есть запасной метод, который обрабатывает сценарий, когда служба выходит из строя. Мне было интересно, можно ли использовать что-то вроде кэширования запросов вместе с автоматическим выключателем для возврата кэшированного ответа всякий раз, когда вызывается запасной вариант. Если да, как я могу достичь этого?

PS: запрос мой клиент, чтобы сделать вызовы REST

1 ответ

Решение

Насколько я знаю opossum не предоставляет готового решения вашей проблемы. Вы должны реализовать какой-то механизм для кэширования последнего успешного вызова. С моей точки зрения, вероятно, лучший способ сделать это - иметь некоторый распределенный кеш, такой как Redis, и кэшировать последний успешный ответ, но убедитесь, что в Redis есть временная запись, которую вы не хотите возвращать старыми устаревшими данными.

Я не уверен, может ли это помочь, но вы можете попробовать:

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

Вы можете увидеть немного больше информации об этом тестовом файле

Другие вопросы по тегам