# vn.rpc

### 简介

提供跨进程服务调用的RPC模块，同时支持服务端向客户端的主动数据推送，用于实现vn.py框架下模块的多进程解耦。

### 说明

1. 使用zmq作为底层通讯库

2. 目前支持两种数据序列化方案：msgpack（默认）和json，用户在RpcObject中可以自行添加其他方案

3. 客户端和服务端通过REQ-REP模式实现跨进程服务调用

4. 客户端和服务端通过SUB-PUB模式实现主动数据推送

5. RpcClient的send和RpcServer的publish函数不是多线程安全的，在多线程中使用时需要用户自行加锁，否则可能导致zmq底层崩溃

6. 考虑到vn.rpc的主要应用场景是本机多进程或者局域网内分布式架构，网络可靠性较高，因此没有在模块中提供心跳功能，用户可以视乎自己的需求添加
