`
snoopy7713
  • 浏览: 1152323 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

主要几种通信协议的性能比较

    博客分类:
  • java
阅读更多

总体性能比较:
Socket(BIO/NIO)>RMI>HTTPInvoker>=Hessian>REST>>Burlap>EJB>>Web Service

  1. 如果协议设计的比较好,Socket性能毫无疑问是最高,同时灵活性和复杂度也最高,如果采用高效的网络框架如:Mina、Netty等可以降低开发复杂度,一般在对性能有非常苛刻的条件下使用。
  2. RMI 的性能相对略低,但是与Socket还在同1个数量级,同时只能在Java系统间通信,如果是基于互联网使用,还存在穿越防火墙的问题。采用Spring 封装的方式使用比原始RMI方式性能略高,主要原因是:Spring采用了代理和缓存机制,节省了对象重新获取的时间。
  3. HTTPInvoker是Spring特有的,只能在客户端和服务器端都采用Spring框架下使用,与RMI本质相同,使用java的序列化技术传输对象,两者性能差别较小。
  4. Hessian 在数据量较小时性能表现出众,甚至比RMI还高,在数据结构复杂的对象或者大量数据对象时,较RMI要慢20%左右;Hessian的优点是精简高效,同 时可以跨语言使用,目前支持Java,C++, .net, python, ruby等语言。另外Hessian可以充分利用web容器的成熟功能,在处理大量用户访问时很有优势,在资源分配、线程排队、异常处理等方面都可以由 web容器保证,而RMI本身不提供多线程的服务器。
  5. REST架构也是一种比较简单、高效的Web服务架构,相对于Hessian性能略低,但还在同一个数量级,同时也是基于HTTP协议,目前也有比较多的成功案例。
  6. Burlap 在数据量非常小时性能尚可,同时性能随着数据量的增加急剧降低,通常性能耗时是RMI的3倍左右,主要原因是:Hessian采用二进制传输数据,而 Burlap采用XML格式,而XML描述内容太多,同样的结构,其传输量要大很多,同时,XML的解析是比较耗资源的,尤其大数据量情况下更是如此。
  7. EJB基于RMI协议,性能不高,同时只能在Java系统内使用,不能跨语言,目前使用越来越少,目前阿里巴巴内部已经完全放弃EJB。
  8. 在 这些远程调用协议中,Web Service的性能是最低的,一般情况下,Web Service的性能相对于Hessian性能要慢10~20倍左右,同时,对于同样的访问请求,Web Service的传输数据量约为Hessian的6倍左右,对网络带宽消耗非常大,同时XML的解码器普遍性能不高,XML<->Java Bean的编码、解码非常耗费资源,对于并发和负载比较高的网站不是一个好的选择。同时,Web Service的使用也不太方便。

总结:

         Hessian和REST架构个人认为是比较优秀的高性能通信协议,如果对性能要求特别苛刻可以直接采用Socket方式,目前,阿里巴巴内部的远程调用主要采用Hessian和Dubbo(基于Mina框架),经受了苛刻的高并发、高负载考验。

主要几种协议远程调用消耗大致时间(小数据量):
Socket/RMI/Hessian: 0.5ms
REST:0.7ms

Web Service(Axis): 约10ms,其中如果采用wsdl2java的方式,效率更低些。
Socket/RMI/Hessian/REST之间选择还需要在传输数据量,性能要求等各方面考量,合适的场景选择合适的协议。

分享到:
评论

相关推荐

    STM32的几种串口通信协议

    本文将详细介绍STM32支持的几种主要串口通信协议,包括通用同步异步收发器(USART)、串口外围设备接口(SPI)和I2C总线。 一、USART通用同步异步收发器 USART是一种灵活的串行通信协议,支持异步全双工通信以及...

    北斗2.1通信协议

    北斗2.1通信协议的应用非常广泛,包括但不限于以下几种典型场景: 1. **交通运输**:利用北斗2.1通信协议提供的精确位置信息和时间同步服务,实现车辆跟踪、路径规划等功能,提高交通运输效率和安全性。 2. **海洋...

    通信协议FPGA,通信协议有哪几种,Verilog

    通信协议在信息技术领域中起着至关重要的作用,特别是在FPGA(Field-Programmable Gate Array)设计中。FPGA是一种可编程逻辑器件,允许开发者根据需求定制硬件逻辑,广泛应用于高速数据传输、通信系统和嵌入式系统...

    通信协议FPGA,通信协议有哪几种,Verilog源码.zip

    常见的通信协议有以下几种: 1. **UART (Universal Asynchronous Receiver/Transmitter)**:通用异步收发器是最简单的串行通信协议,用于低速设备间的通信,如微控制器与传感器之间的通信。 2. **SPI (Serial ...

    网络层匿名通信协议综述

    介绍了网络层匿名通信协议的分类标准,简述其创新点和具体加密思想,并对它们如何在安全性和性能二者之间的权衡进行分析,也指出了这几种网络匿名通信协议的优势和不足,最后提出在匿名通信系统发展的过程中所面临的...

    飞控通信协议、匿名地面站

    首先,飞控通信协议主要涉及以下几个方面: 1. 数据传输:飞控通信协议规定了如何将飞行状态数据(如位置、姿态、速度等)和控制指令(如航向、高度、速度设定)在无线链路上安全高效地传输。常见的通信协议有...

    UL33通信协议

    UL33通信协议,是安圣电气有限公司针对其三进三出UPS(Uninterruptible Power Supply,不间断电源)系统制定的一种后台通信规范,主要用于实现对UPS设备的远程监控与管理。该协议的详细内容包括了监控内容、物理接口...

    工业上几种通讯协议

    ### 工业上几种通讯协议 #### 通讯协议概述 通讯协议,又称通信规程,是通讯双方为了确保数据传输过程中的正确性和效率性所遵循的一系列规则和约定。这些规则通常涉及数据格式、同步方式、传送速度、传送步骤、检...

    MELSEC通信协议参考手册-1801.pdf

    MELSEC通信协议是三菱电机开发的一种通信协议,广泛应用于工业自动化控制系统。为了确保安全和正确地使用MELSEC通信协议,用户必须了解相关的安全注意事项和设计注意事项,并在使用之前熟读本手册及关联手册。

    纯电动车BMS与整车系统CAN通信协议.pdf

    在了解了“纯电动车BMS与整车系统CAN通信协议”的知识点之前,我们需要先明确几个概念。首先,BMS指的是电池管理系统(Battery Management System),它是电动车中非常关键的一个组成部分。BMS的主要作用是对电动车...

    射频识别系统中通信协议的模块化设计.

    通信协议处理模块是RFID系统的核心组成部分之一,主要负责射频卡和读写器之间的通信协议处理、数据流加密以及读写器与主机之间的通信协议处理。 ##### 3.2 CPLD在模块设计中的应用 为了实现上述功能,研究者们选择...

    通信协议-物联网通信协议全解析.docx

    每种通信协议都有其特定的应用场景和优势。例如,WiFi适合家庭和商业环境的高速连接,而ZigBee和LoRa则更适合低功耗、远距离的物联网应用。选择合适的通信协议取决于设备的需求、覆盖范围、数据速率、功耗和成本等...

    VisualC__网络通信协议分析

    在使用Visual C++进行网络通信协议分析时,开发者通常会经历以下几个步骤: 1. **初始化Winsock**:调用`WSAStartup`函数,注册Winsock库并设置版本信息。 2. **创建套接字**:使用`socket`函数创建TCP或UDP套接字...

    电力系统698通信协议

    ### 电力系统698通信协议关键知识点解析 #### 一、概述 电力系统698通信协议(DL/T698.41-200X)是中国电力行业为实现电能信息采集与管理系统中主站与终端之间的数据交换而制定的一项标准。该标准详细规定了数据...

    CDMA2000基站侧通信协议实现.pdf

    在探讨CDMA2000基站侧通信协议实现时,我们需要关注几个关键技术和概念:CDMA2000技术、基站侧(BSS)通信协议、协议栈的实现、以及网络通信中涉及的多个层次的协议。 首先,CDMA2000是一种3G(第三代移动通信技术...

    物联网智能家居无线通信协议

    物联网与智能家居领域的无线通信协议种类繁多,每种协议都有其适用场景和特点。选择合适的无线通信协议对于构建高效稳定的智能家居系统至关重要。未来,随着5G等新技术的应用推广,无线通信协议将在物联网与智能家居...

    vb网络通信协议分析与应用实现

    3. **TCP通信**:TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在VB中实现TCP通信,需要创建Socket对象,建立连接,然后通过SendData和ReceiveData方法进行数据交换。书中会有详细的...

    基于扩展帧格式的CAN较高层通信协议设计

    在协议设计方面,基于扩展帧格式的CAN较高层通信协议设计需要从以下几个方面着手。首先,设计者必须明确传输层和相关外层的定义,确立数据包的结构和格式,以确保各个节点能够准确理解和处理通信信息。其次,需要...

    海鑫指纹模组通信协议SPI

    海鑫指纹模组通信协议SPI是用于在嵌入式系统中与指纹识别模块进行数据交换的一种通信协议。在这个协议中,SPI(Serial Peripheral Interface)是一种常见的串行接口,被广泛应用于微控制器和各种外围设备之间,它...

    HipulseU通信协议-V1[1][1].10.doc

    HipulseU通信协议定义了多种类型的监控数据,主要包括模拟量数据、开关量数据、告警量数据以及系统设置参数等几个方面。 1. **模拟量数据**:这些数据通常用于表示连续变化的物理量,如电压、电流等。通过监控这些...

Global site tag (gtag.js) - Google Analytics