Кэширование запросов с помощью автоматического выключателя (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 });
Вы можете увидеть немного больше информации об этом тестовом файле