ZeroRPC-基于ZMQ的RPC通讯库
dotCloud 是一家具有伟大基因的公司,我认为的伟大是有着开源贡献的情怀,就像Amazon,Google等,而不是国内的某些巨头,虽然作为新兴的云服务提供商还不足以比肩巨头,致力于用技术解决公司的运营问题的同时也回馈社会,让我为之喝彩.我也有理由相信这样的公司会走的更远,因为他们有胸怀有远见,是否重视技术就更不言而喻了.
这篇文章旨在介绍由dotCloud开源的ZeroRpc,在dotcloud公司的基础服务得到很大应用,在阅读其manual之后更是被其简洁明了的使用方法所吸引
ZeroRPC is a modern communication layer for distributed systems built on top of ZeroMQ,
一直以来我一直喜欢python 的简洁,用过ZeroMQ做过网络通讯方面的编程,也使用RPC 做过远程过程调用,上次使用LevelDB的RPC是用python的[第三方库] (https://github.com/dotcloud/zerorpc-python)
这次刚好在Github上面看到这样的好玩意,便想与大家分享,ZeroRpc不仅仅支持代码层面的调用,也支持CLi, 这种设计本身就很有弹性.赞!
安装zerorpc
1 | sudo pip install zerorpc |
在还没开始看demo之前
我们需要了解ZeroRpc是由三层架构组成:
- 传输层是使用ZMQ 以及msgpack(http://msgpack.org/),基于ZeroMQ的分布式通讯层,通讯的数据被MsgPack 序列化过所以更快
- 消息层,比较复杂,处理heartbeat, multiplexing, and events.
- RPC层:处理请求,响应
官方的文档给出以下demo
####server.py #####
1 | import zerorpc |
####client.py
1 | import zerorpc |
client也可用命令行代替
1 | zerorpc tcp://127.0.0.1:4242 hello RPC |
够简明易懂了吧
再来一个返回连续字节流的例子
####server.py
1 | import zerorpc |
####client.py
1 | import zerorpc |
client也可用命令行代替,–json 表示头部是一个json对象
1 | zerorpc tcp://127.0.0.1:4242 streaming_range 10 20 2 --json |
Happy Hacking