总结 - phxrpc代码阅读(8)
写在前面
这应该是phxrpc代码阅读系列正文的最后一篇。通过阅读代码,发现了自己在知识上的若干不足。
临渊羡鱼,不如退而结网。接下来可能会在网络编程方面再下一点工夫。请大家期待下一个系列吧。
其实真没人读,我就是在骗自己。
先补充一点 - 代码生成
protobuf并不包含RPC的实现,但是它可以声明rpc。客户端和服务端需要实现RPC接口,来实现通信。
phxrpc使用proto文件来定义接口,然后解析并使用代码模板进行生成。
这里我们不讨论代码生成的细节,因为pb实在太过流行,代码生成的方法也有不少的流派。并且用C++来做代码生成,真心不是我的菜。
想了解更多,可以参考这篇博客。
工作流程 - 客户端
客户端与服务器的通信有如下的特点:
- 连接少
- 负载少
- 通信的主动方
所以,所有的网络交互相关的内容可以托管给网络库中的协程。每个协程主动运行一段时间后,主动放弃CPU时间,将控制权交还给主控制流的epoll。
所以协程中不能有CPU密集的运算,幸好面对开发者,phxrpc并不暴露内部函数,而是将CPU密集的运算分配给工作线程来完成。
工作流程 - 服务端
服务器的通信有以下的特点:
- 连接多
- 负载多
- 通信的被动方
- 响应时间敏感
这里说一下响应时间的问题 …
more ...