Шаблон проектирования гибких микросервисов

В реактивном программировании устойчивость достигается путем репликации, локализации, изоляции и делегирования.

Двумя известными шаблонами проектирования являются переборки с супервизором и разрывом цепи. это только для достижения изоляции и сдерживания?

Каковы наиболее известные шаблоны проектирования для микросервисов, и особенно те, которые обеспечивают устойчивость?

2 ответа

Кроме BulkHead и CB, есть еще несколько вещей, которые можно реализовать:

  • Повторите попытку на идемпотентных операциях. Это требует, чтобы операция, которую нужно повторить, была идемпотентной и будет давать те же результаты при повторном выполнении.
  • Правильные настройки времени ожидания, такие как подключение, время ожидания команды в случае зависимости от сети
  • Ограниченные очереди запросов на уровне виртуального хоста / прослушивателя
  • Стратегия отработки отказа, такая как кеширование

Резервирование, отказоустойчивые системы могут быть включены для обеспечения устойчивости к системным сбоям, а также

Вы можете применять различные модели устойчивости для достижения различных уровней устойчивости в зависимости от ваших потребностей.

  • Изоляция агрегата - разбейте системы на части и изолируйте детали друг от друга. Вся система никогда не должна выходить из строя.
  • Shed Load - внедрить ограничитель скорости, который избавляет от любой дополнительной нагрузки, которую приложение не может обработать, чтобы гарантировать, что приложение устойчиво к скачкам в количестве запросов. любой запрос, обрабатываемый приложением, потребляет ресурсы, такие как процессор, память, ввод-вывод и т. д. Если запросы поступают со скоростью, превышающей доступные ресурсы приложения, приложение может перестать отвечать на запросы, вести себя непоследовательно или зависать.
  • Повторить - разрешить приложению обрабатывать временные сбои при попытке подключения к службе или сетевому ресурсу путем прозрачной повторной попытки неудачной операции.
  • Тайм-аут - подождать заранее определенный промежуток времени и предпринять альтернативные действия, если это время будет превышено.
  • Автоматический выключатель - при подключении к удаленному сервису или ресурсу обрабатывайте неисправности, восстановление которых может занять разное время.
  • Bounded Queue - ограничить размеры очереди запросов перед интенсивно используемыми ресурсами.

Реактивное программирование нельзя просто возобновить в шаблонах проектирования. При проектировании систем с высокой производительностью и доступностью следует учитывать множество соображений об архитектуре систем, разработках и т.д.

В частности, об устойчивости вы должны подумать, например, о:

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