Альтернативные фреймворки¶
Alternative Frameworks¶
Propane - довольно молодой фреймворк. У него много функций, но вы должны знать о возможных альтернативах. Некоторые из них сосредоточены на других аспектах разработки микросервисов, поэтому вы можете найти в них другие функции, которые могут оказаться полезными в вашем случае.
Minos¶
Minos - это фреймворк, который помогает вам создавать реактивные микросервисы на Python. Внутренне он использует event sourcing, CQRS и архитектуру Messaging.
Фреймворк minos
построен на основе следующих принципов:
- Микросервисная архитектура: создавайте приложение как набор слабо связанных сервисов.
- Разложение по поддоменам: определение служб, соответствующих поддоменам Domain-Driven Design (DDD).
- Автономный сервис: микросервисы могут отвечать на запрос, не дожидаясь ответа от другой службы.
- Событие домена: Службе часто необходимо публиковать события, когда она обновляет свои данные. Эти события могут потребоваться, например, для обновления представления CQRS.
- Источник событий: Источник событий сохраняет состояние бизнес-объекта, такого как заказ или Клиент, в виде последовательности событий, изменяющих состояние. Всякий раз, когда изменяется состояние бизнес-объекта, к списку событий добавляется новое событие. Поскольку сохранение события - это единичная операция, оно по своей сути является атомарным. Приложение восстанавливает текущее состояние объекта путем воспроизведения событий.
- Обмен сообщениями: сервисы взаимодействуют путем обмена сообщениями по каналам обмена сообщениями. (В данном случае используется Apache Kafka)
- API gateway: единая точка входа для всех клиентов. Прокси-сервер шлюза API/маршрут к соответствующей службе.
- Самостоятельная регистрация: каждый экземпляр службы регистрируется при запуске и отменяет регистрацию при остановке.
Kombu¶
Kombu - это Python библиотека для обмена сообщениями.
Цель Kombu - максимально упростить обмен сообщениями на Python, предоставив идиоматический высокоуровневый интерфейс для протокола AMQ, а также предоставить проверенные решения распространенных проблем с обменом сообщениями.
- Позволяет авторам приложений поддерживать несколько решений для серверов сообщений с помощью подключаемых транспортов.
- Транспортировка AMQP с использованием библиотек py-amqp, redis или SQS.
- Virtual transports позволяет действительно легко добавить поддержку для трансопортов, отличных от AMQP. Уже существует встроенная поддержка Redis, Amazon SQS, очередей хранилища Azure, Azure Service Bus, ZooKeeper, SoftLayer MQ, MongoDB и Pyro.
- In-memory трансопорт для тестирования.
- Поддерживает автоматическое кодирование, сериализацию и сжатие полезной нагрузки сообщений.
- Согласованная обработка исключений во всех перевозках.
- Возможность гарантировать выполнение операции путем корректной обработки ошибок подключения и канала.
- Исправлено несколько проблем с amqplib, таких как поддержка тайм-аутов и возможность ожидания событий более чем на одном канале.
Nameko¶
Nameko - это фреймворк для создания микросервисов на Python.
Он поставляется со встроенной поддержкой:
- RPC поверх AMQP
- Асинхронные события (pub-sub) через AMQP
- Простой HTTP GET и POST
- RPC Websocket и подписки (экспериментальные)
"Из коробки" вы можете создать службу, которая может отвечать на RPC-сообщения, отправлять события для определенных действий и прослушивать события из других служб. Он также имеет HTTP-интерфейсы для клиентов, которые не могут работать по AMQP, и интерфейс websocket, скажем, для клиентов Javascript.
Nameko также может быть расширен. Вы можете определить свои собственные транспортные механизмы и зависимости от сервисов, чтобы смешивать их по желанию.