通信协议

  • HTTP
  • HTTP2【H2C】
  • Bolt【RPC私有协议】
  • RESTful
  • Dubbo

  • 了解方向

    • 连接个数
    • 连接方式
    • 传输协议
    • 传输方式
    • 序列化
    • 适用范围
    • 使用场景

HTTP

  • 请求体:【懒得写、请F12 自己看】

  • 特点:一次性无状态请求、所谓长链接是基于socket的tcp长链接

HTTP2【H2C】

  • 特点:适用于万维网、基于SPDY协议、HPACK 算法【头压缩】
  • 对比:HTTP:实现无需先入先出的多路复用、为简化客户端和服务器开发的消息—帧机制、强制性压缩(包括HTTP头部)、优先级排序、双向通讯

    对HTTP头字段进行数据压缩(即HPACK算法);
    HTTP/2 服务端推送(Server Push);
    请求管线化;
    修复HTTP/1.0版本以来未修复的队头阻塞问题;
    对数据传输采用多路复用,让多个请求合并在同一TCP连接内。
    
  • 实现:将一个TCP连接分为若干个流(Stream)【每个用户分配一个StreamID】,每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成

Bolt【RPC私有协议】

  • 特点:私有协议、针对业务更好更迅速的进行RPC初始化调用、
  • 实现:协议内容:协议魔数头、协议版本、RPC命令类型、远程命令代码、远程命令版本、请求编号、序列化代码、协议功能开关、超时时间、回复状态、请求[回复]长度、
    头长度、内容长度、

RESTful

  • 规定了url的动作表达方式 资源/动作
  • 其中动作有:GET、POST、PUT、PATCH、DELETE、COPY、HEAD、OPTIONS、LINK、UNLINK、PURGE、LOCK、UNLOCK、PROPFIND、VIEW、

  • 当然在我们开发中不够还可以通过 http://资源/动作 、的方式进行补充调用处理、或者自己实现方法、前后端协商一个新的方法名称

Dubbo【RPC私有化协议】

  • 特点:私有协议、针对业务更好更迅速的进行RPC初始化调用、
  • 实现:

Hessian【RPC公有化协议】

  • 特点:底层采用Http通讯、采用servlet暴露服务、能打过WebService和java自带的序列化

java

  • 特点:多连接、短连接、TCP、同步传输、java标准二进制序列化、RMI服务操作嵌合

webService

thrift

  • 特点:【Facebook】 协议不能传输null值