Шаблон проектирования гибких микросервисов
В реактивном программировании устойчивость достигается путем репликации, локализации, изоляции и делегирования.
Двумя известными шаблонами проектирования являются переборки с супервизором и разрывом цепи. это только для достижения изоляции и сдерживания?
Каковы наиболее известные шаблоны проектирования для микросервисов, и особенно те, которые обеспечивают устойчивость?
2 ответа
Кроме BulkHead и CB, есть еще несколько вещей, которые можно реализовать:
- Повторите попытку на идемпотентных операциях. Это требует, чтобы операция, которую нужно повторить, была идемпотентной и будет давать те же результаты при повторном выполнении.
- Правильные настройки времени ожидания, такие как подключение, время ожидания команды в случае зависимости от сети
- Ограниченные очереди запросов на уровне виртуального хоста / прослушивателя
- Стратегия отработки отказа, такая как кеширование
Резервирование, отказоустойчивые системы могут быть включены для обеспечения устойчивости к системным сбоям, а также
Вы можете применять различные модели устойчивости для достижения различных уровней устойчивости в зависимости от ваших потребностей.
- Изоляция агрегата - разбейте системы на части и изолируйте детали друг от друга. Вся система никогда не должна выходить из строя.
- Shed Load - внедрить ограничитель скорости, который избавляет от любой дополнительной нагрузки, которую приложение не может обработать, чтобы гарантировать, что приложение устойчиво к скачкам в количестве запросов. любой запрос, обрабатываемый приложением, потребляет ресурсы, такие как процессор, память, ввод-вывод и т. д. Если запросы поступают со скоростью, превышающей доступные ресурсы приложения, приложение может перестать отвечать на запросы, вести себя непоследовательно или зависать.
- Повторить - разрешить приложению обрабатывать временные сбои при попытке подключения к службе или сетевому ресурсу путем прозрачной повторной попытки неудачной операции.
- Тайм-аут - подождать заранее определенный промежуток времени и предпринять альтернативные действия, если это время будет превышено.
- Автоматический выключатель - при подключении к удаленному сервису или ресурсу обрабатывайте неисправности, восстановление которых может занять разное время.
- Bounded Queue - ограничить размеры очереди запросов перед интенсивно используемыми ресурсами.
Реактивное программирование нельзя просто возобновить в шаблонах проектирования. При проектировании систем с высокой производительностью и доступностью следует учитывать множество соображений об архитектуре систем, разработках и т.д.
В частности, об устойчивости вы должны подумать, например, о:
- контейнаризация
- Услуги оркестровки
- Отказоустойчивые рабочие места
- Pub/Sub Model
- И многое другое:)