Передача данных в микросервисных архитектурах
Современные приложения переходят от монолитной архитектуры к микросервисной. Появляется большое число взаимодействующих между собой компонентов, которые написаны на разных языках программирования и выполняются на различных устройствах.
Использование шин потоков данных для обмена информацией между компонентами упрощает разработку микросервисной архитектуры, позволяет увеличить надежность и улучшить масштабирование.
Преимущества
Надежность
Микросервисные архитектуры, как правило, являются распределенными. В распределенных архитектурах надежность является очень важным фактором. Поддержка в каждом приложении полной модели отказов — сложная задача, поэтому отказоустойчивыми делают инфраструктурные компоненты, а остальные приложения на них опираются и становятся отказоустойчивыми вслед за ними.
Разное время жизни
В монолитной архитектуре все компоненты постоянно доступны для обмена данными. Компоненты микросервисной архитектуры компоненты имеют разное время жизни ине могут полагаться на прямой обмен данными между ними. Данные нужно или буферизировать, или пересылать через шину потоков данных.
Масштабирование
Приложения растут и по мере роста они должны продолжать оставаться такими же эффективными. Шины потоков данных предлагают такой сценарий взаимодействия, что просто следуя ему, приложения становятся масштабируемыми.
Сравнение с Apache Kafka®
В таблице ниже приведено сравнение Data Streams с популярной шиной потоков данных Apache Kafka®.
Параметр | Yandex Data Streams | Apache Kafka® |
---|---|---|
Поддерживаемый протокол | Amazon Kinesis Data Streams API | Apache Kafka® |
Поддерживаемые SDK | HTTP, Java, C++, Go и другие | HTTP, Java, C++, Go и другие |
Стоимость | Оплата за использование ресурсов: скорость, время хранения | Оплата за резервирование ресурсов: виртуальные машины |
Сложность эксплуатации | Администрирование пользователем не требуется | Система администрируется пользователем, Облако отвечает только за инфраструктуру |
Масштабирование | Без прерывания обслуживания (в данный момент доступно только масштабирование вверх) | С прерыванием обслуживания на время перезапуска кластера |
Интеграция в Облако | Высокая: триггеры Cloud Functions, API Gateway и пр. | Базовая |
Безопасность | Авторизация с помощью IAM-токена или ключа доступа | Авторизация с помощью логина и пароля |
Надежность | Высокая, данные хранятся в трех зонах доступности | Высокая, настраивается пользователем |
Время доставки сообщений | Менее секунды | Менее секунды |
Время хранения данных | Задается при создании, 1-24 часа | Ограничено емкостью дисков виртуальных машин |
Настраиваемость | Основные параметры | Высокая, если настройки поддержаны в Облаке |
Настройка
Чтобы настроить передачу данных между компонентами:
- Создайте поток данных Data Streams.
- Настройте AWS SDK.
- Используйте SDK: