RPC通信协议的选择

来源:互联网 发布:mac草莓红和番茄红 编辑:程序博客网 时间:2024/05/19 05:03

1、基于TCP协议实现的RPC

由于处于协议栈的下层,能够更灵活的对协议字段进行定制,减少网络传输字节数,降低网络开销,提高性能,达到更大的吞吐量和并发数,但是需要更多的关注底层复杂细节,实现的代价更高,胶南实现跨平台调用。

而随着请求规模的扩张,基于TCP协议RPC的实现,程序需要考虑多线程并发,锁,IO等等复杂的底层细节的实现,实现起来较为复杂,在大流量高并发压力下啊,任意一个细小的错误,都会被无线方法,最终导致程序宕机。


2、基于HTTP协议的RPC

可以使用JSON或者XML格式的相应数据,而JSON和XML作为最通用的格式标准,开源的解析工具已经相当成熟,在器上进行二次开发屏蔽了很多的层繁琐的细节,非常简便和简单。而对于基于HTTP协议的实现来说,很多成熟的开源WEB容器已经帮器处理好这些事情,如tomcat、jboss、apache等等,开发人员可以将更多的精力集中在业务的实现上,而非底层细节的处理。

当然,基于HTTP协议的实现,也有其处于劣势的一面,由于是上层协议,发送包含同等内容的信息,使用HTTP协议传输所占用的字节数肯定要比使用TCP协议占用的字节数更多,因此,同等网络环境下,通过HTTP协议传输相同内容,效率会比基于TCP协议的数据传输要低,信息传输所占用的时间要更长。

当然,通过优化代码实现以及使用gzip数据压缩,能够缩小这一差距,通过权衡利弊,结合实际环境中器性能对于用户体验的影响来看,基于HTTP协议的RPC还是有很大优势的。

当系统的需求是高并发和高并发时,我们更多的选择是基于TCP的RPC,当系统需求是异构、跨平台的调用,我们更多的采用HTTP协议,需求决定技术路线。

0 0