Рубрики
Без рубрики

Я построил ноль: Быстрая и высокая производительность Python RPC Framework для создания микросервисов

Ноль на самом деле является RPC, как Framework, которая использует Zeromq под капотом для связи по поводу TCP …. Теги с Python, микросервисами, Showdev.

Ноль на самом деле является RPC, как Framework, которая использует Zeromq под капотом для связи над TCP. Вот почему это быстрый и супер легкий вес.

Не собираясь в подробности, давайте просто начнем, вызвать одну из философии за нулю, это Кривая обучения ноль 😃

Пример

Убедитесь, что Python 3.8+

  • Установить ноль
pip install zeroapi

К сожалению Ноль Пакет уже там 🙁.

  • Создать Server.py.
from zero import ZeroServer

def echo(msg: str):
    return msg

async def hello_world():
    return "hello world"


if __name__ == "__main__":
    app = ZeroServer(port=5559)
    app.register_rpc(echo)
    app.register_rpc(hello_world)
    app.run()

Обратите внимание, что сервер Методы RPC args Type намекают Отказ Введите подсказку Должен в нулевом сервере.

См. Тип метода Async или Sync, не имеет значения. 😃

  • Запустить его
python -m server
  • Позвоните в методы RPC
from zero import ZeroClient

zero_client = ZeroClient("localhost", 5559)

def echo():
    resp = zero_client.call("echo", "Hi there!")
    print(resp)

def hello():
    resp = zero_client.call("hello_world", None)
    print(resp)


if __name__ == "__main__":
    echo()
    hello()

Это оно! Расскажите мне о кривой обучения 😉

Немного фона

После работы над крупными системами (с 50ми + пользователями) за прошедшие годы одна из реализации – мы тратим хорошее количество временных пишущих кодов котлов и клиентов при работе над микросервисами. А также мы в основном используем HTTP для общения между ними. Это действительно хорошо, и обычно, но есть несколько накладных расходов (заголовки, отдельное TCP-соединение каждый запрос и т. Д.). В случае коммуникаций микровиссов мы можем избежать их улучшения производительности. Другое дело – это обычные веб-каркасы, громоздкие и имеют кривую обучения. Поэтому я искал что-то, чтобы уменьшить эти расходы и накладные расходы.

Ноль все еще идея, хотя пакет уже есть 😜 Ноль решает проблему кода котельной, используя RPC, как структура, вы можете просто сосредоточиться на бизнес-логике. И используйте Zeromq, скорее http, чтобы решить проблему накладных и переподключения. Хотя не оба из них не решены явно, ноль все еще ребенок, чтобы узнать больше.

Плюсы и минусы нуля над колбой или фастапи

Плюс

  • Межкладная связь является быстрее, как используя Zeromq и RAW TCP под капотом.

  • Просто и легко учиться и использовать.

  • Чрезвычайно легкий.

  • Супер гибкий ноль можно использовать только для сетевой связи, и вы можете структурировать вашу кодовую базу самостоятельно.

Господин

  • Не HTTP Framework, не столько традиционная, как колба Fastapi. Люди должны понимать фактическое использование. Как будто если у вас есть довольно большая архитектура микросервиса, и есть независимые услуги, которые взаимодействуют между ними, ноль – это хорошая замена для уменьшения накладных расходов сети и других структурных слоев. Но если у вас есть несколько услуг, которые только обмениваются напрямую с клиентом/интерфейсом, ноль не так много использования.

  • Только Python основана на основе. Ноль сервера может быть подключен только с клиентом Python Zero. (Я планирую представить Go, в отдаленном будущем, кстати)

  • Вам всегда нужна другая HTTP Framework в качестве шлюза, если ваш Frestend сообщает по HTTP, который является обычным и чрезвычайно распространенным способом.

Я вернусь!

Есть больше, я буду писать больше около нуля в ближайшие недели. На данный момент я смотрю на комментарии, мнения и предложения 🙏

GitHub: https://github.com/ananto30/zero.

Оригинал: “https://dev.to/ananto30/i-have-built-zero-fast-and-high-performance-python-rpc-framework-to-build-microservices-3j55”