Ноль на самом деле является 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”