- 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值