Перейти к содержанию

Альтернативные фреймворки

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 также может быть расширен. Вы можете определить свои собственные транспортные механизмы и зависимости от сервисов, чтобы смешивать их по желанию.