PyZMQ:Python 分布式消息通信的轻量级方案

PyZMQ:Python 分布式消息通信的轻量级方案 文章目录PyZMQPython 分布式消息通信的轻量级方案1、PyZMQ 解决了什么2、版本和平台支持3、安装方式4、版本兼容策略5、适合哪些场景PyZMQPython 分布式消息通信的轻量级方案pyzmq 在 GitHub 上拿到了 4,142 个 Star。ZeroMQ 是一套轻量级分布式消息库pyzmq 是它的 Python 绑定。不需要消息代理、不用起中间件服务几行代码就能让不同进程、不同机器上的组件互相收发消息。1、PyZMQ 解决了什么分布式系统里组件间通信一直是个麻烦事。HTTP 请求太重gRPC 要写 proto 文件各类 MQ 中间件又要独立部署和维护。PyZMQ 走的是另一条路。它基于 ZeroMQ 的套接字抽象把 TCP 通信封装成接近原生 socket 的接口同时内置了请求响应、发布订阅、推拉队列、路由器代理这些通信模式。你不用起任何服务端进程代码里创建 socket 就能直接收发消息。2、版本和平台支持PyZMQ 完整支持 libzmq 3.x 和 4.x 的稳定 API社区版非 DRAFT功能全覆盖。直接编译对接最新的 libzmq 即可不用改代码不用传编译标志。Python 方面支持 3.9 及以上版本PyPy 也能跑。底层通过 Cython 做 C 扩展绑定兼顾了开发效率和运行时性能。3、安装方式最简单的方式pipinstallpyzmqmacOS、Windows、Linux 三个平台都提供了预编译 wheel 包pip 会自动匹配。如果你机器上已经装好了 libzmq 并且想用自己的配置版本可以强制从源码编译pipinstall--no-binarypyzmq pyzmq从 GitHub 仓库直接构建的话需要安装较新版本的 Cython。4、版本兼容策略PyZMQ 16 之后不再支持 Python 2.6 和 3.2。如果还在用这些旧版本锁死pyzmq16就行。libzmq 2.0.x 用户需要pyzmq2.1。PyZMQ 13.0 引入了基于 CFFI 的 PyPy 支持也是从这一版开始采用语义化版本号不再跟随 libzmq 的版本号。5、适合哪些场景写 Python 微服务需要在服务间做高性能异步消息通信不想引入 Redis、RabbitMQ、Kafka 这类额外中间件的团队PyZMQ 是一个值得考虑的选项。发布订阅、推拉队列、请求响应这些模式开箱即用文档齐全PyPI 上稳定迭代多年社区活跃度不低。订阅、推拉队列、请求响应这些模式开箱即用文档齐全PyPI 上稳定迭代多年社区活跃度不低。