最近在设计一个RPC框架,有些基本的想法,抛砖引玉看是否有类似的原型。
#需求场景
- 游戏,html游戏;
- 业务平台和各个同业务终端的对接;譬如:医疗平台、物流平台、停车平台等等;
#需求
- 客户端可以call服务器的接口实现;
- 服务器也可以call客户端的接口实现;
- 双方可以纯粹的发送通知,不等待响应;
- 需要支持认证,客户端主动发起认证;
- 有些服务接口实现,需要获得认证账户信息;
#技术准备
- 基于socket长连接实现,而不是http;客户端负责保持连接;
- 兼容websocket方案,客户端可以运行在html5;
- 跨语言的序列化方式,譬如protobuffer,json,hessian,先选择json,可以参考JsonRpc 2.0协议;
- 服务器实现首先锁定在java,用netty库实现;
- 客户端的demo,首先实现在java和javascript上;
#技术要点
- 客户端call服务器端简单,标准的rpc方案都有;
- 服务器实现特殊处理Context接口;如果是该接口的实现,invoke的时候,需要先将正确channel信息设置到实现的变量上(线程安全);
- 服务器主动调用客户端接口;首先每个客户端通过认证接口,维护唯一的ID编号;服务器调用客户端接口的时候,第一个参数设置为ID,作为客户端区分,该请求转发到ID对应的连接上,并等待客户端响应;
- 标记为Notify的接口,不需要等待响应;
#后续待定。。。