RPC中数据的序列化处理

大家先看下这个问题
http://segmentfault.com/q/1010000002657730?_ea=168700
由这个问题想到另外的问题
如果我使用PHPJava进行PRC调用的话,用哪种RPC和序列化方案能达到最佳性能呢?
举个例子
因为我们知道HTTP不是长连接的,如果是用HTTP进行RPC,创建连接都会耗费很多的资源(当然用keep-alive除外,不过PHP的curl能keep-alive么?)

阅读 5.7k
2 个回答

PHP CURL可以复用连接的(keep-alive),Multi_CURL也行。说到效率的话,本身http就不是一个高效率的协议(你看看那堆对你来说可以去掉的头就知道了),如果你定位在基于http的rpc的话,本身也就不会太高了。直接基于socket,并尽量使用二进制方式序列化,可能效率和性能方面会好一点,当然,不好之处就是开发难度增加、通用性方面打折。

我哪种RPC框架貌似不重要,重要的应该是数据压缩,也就是序列化为传输数据的方式吧。推荐google protobuffer,业界成熟的数据压缩方案。但是 protobuffer 好像只提供了java和python的sdk。

所以,如果你想php通过RPC调用java的话,只能自己实现一套了。

php可以用socket 来建立tcp连接。不用curl。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进