基于json的rpc库
# 基于 json 的 rpc 库
很多web
框架其自身都实现了json-rpc
,但是我们要独立于这些框架之外,要寻求一种较为干净的解决方案,我们使用jsonrpclib
。
这个库现在还在维护,同时支持
python2
和python3
# 安装
pip install jsonrpclib-pelix -i https://pypi.douban.com/simple
1
服务端案例代码
# -*- coding: utf8 -*-
# @Time : 2022/1/28 23:01
# @Author : wxvirus
# @File : server.py
# @Software: PyCharm
from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
def add(a, b):
return a + b
# 1. 实例化一个 server
server = SimpleJSONRPCServer(('localhost', 8080))
# 2. 将函数注册到 server 中
server.register_function(add)
# 3. 启动 server
server.serve_forever()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
客户端案例代码
# -*- coding: utf8 -*-
# @Time : 2022/1/28 23:04
# @Author : wxvirus
# @File : client.py
# @Software: PyCharm
import jsonrpclib
server = jsonrpclib.Server('http://localhost:8080')
server.add(5, 6)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
和xmlrpc
底层不一样的就是序列化和反序列化为json
格式,如果仅仅是专业,那几乎和xmlrpc
没有优势可言,无非就是底层换掉了。
但是实际上,功能会比xmlrpc
的功能要多一点,它还支持SSL
和Thread Pool
线程池,任何一个web
服务如果不具备并发接收和处理的能力的话,那么这个server
就没有用。
# rpc 的一些功能需求
超长机制 - 重试
限流 - 处于长期可用的状态 - 高可用
解耦
负载均衡,一般是用在微服务,那就是分布式应用的具体体现,即需要多活策略
json
是否满足上述的要求序列化数据压缩是否高效,
json
这种数据格式已经非常的简单了能不能有一个算法或者协议,将这个数据压缩变得更小
这个序列化和反序列化的速度够不够快
在
python
中json.dumps()
和json.loads()
是非常耗时的。
后面我们如果做架构,上述技术选型都是我们需要考虑到的点。
编辑 (opens new window)
上次更新: 2022/01/28, 23:34:03