Передача данных в микросервисных архитектурах
Современные приложения переходят от монолитной архитектуры к микросервисной. Появляется большое число взаимодействующих между собой компонентов, которые написаны на разных языках программирования и выполняются на различных устройствах.
Использование шин потоков данных для обмена информацией между компонентами упрощает разработку микросервисной архитектуры, позволяет увеличить надежность и улучшить масштабирование.
Преимущества
Надежность
Микросервисные архитектуры, как правило, являются распределенными. В распределенных архитектурах надежность является очень важным фактором. Поддержка в каждом приложении полной модели отказов — сложная задача, поэтому отказоустойчивыми делают инфраструктурные компоненты, а остальные приложения на них опираются и становятся отказоустойчивыми вслед за ними.
Разное время жизни
В монолитной архитектуре все компоненты постоянно доступны для обмена данными. Компоненты микросервисной архитектуры имеют разное время жизни и не могут полагаться на прямой обмен данными между ними. Данные нужно или буферизировать, или пересылать через шину потоков данных.
Масштабирование
Приложения растут и по мере роста они должны продолжать оставаться такими же эффективными. Шины потоков данных предлагают такой сценарий взаимодействия, что просто следуя ему, приложения становятся масштабируемыми.
Сравнение с 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-токена или ключа доступа | Авторизация с помощью логина и пароля |
| Надежность | Высокая, данные хранятся в трех зонах доступности | Высокая, настраивается пользователем |
| Время доставки сообщений | Менее секунды | Менее секунды |
| Время хранения данных | Задается при создании: лимит по времени хранения (4, 12 или 24 часа) или по объему | Ограничено емкостью дисков виртуальных машин |
| Настраиваемость | Основные параметры | Высокая, если настройки поддержаны в Облаке |
Настройка
Чтобы настроить передачу данных между компонентами:
- Создайте поток данных Data Streams.
- Настройте AWS SDK.
- Используйте SDK: