服务间通信
- HTTP调用:基于HTTP协议,在应用层,效率较低
- RPC:远程过程调用,基于TCP/IP协议,TCP协议在传输层,效率高
- 消息中间件:相较于RPC,两服务之间多一个中间件的组件
TCP/IP协议
"我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议."
"WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。"
- TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如何包装数据
- 传输层的TCP基于网络层的IP协议,而应用层的HTTP协议又是基于传输层的TCP协议
socket
- socket是对TCP/IP协议的调用接口的封装,socket本身不是协议,是一组使用TCP/IP协议的调用接口,提供了一个针对TCP或者UDP编程的接口,所以socket属于RPC之一
HTTP协议
- HTTP协议就是无状态的,但是这样不好,两种用于保持HTTP状态的技术,一个是Cookie,而另一个则是Session
- 可以是短连接,或者长连接,主要看基于TCP协议是长连接还是短链接。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive
其他概念
- HTTP:超文本传输协议,应用层协议,基于传输层协议TCP
- TCP:面向连接的传输控制协议,传输层协议。通信前需要建立可靠的连接
- UDP:面向无连接的用户数据报协议,传输层协议。通信前不需要建立连接
- SOCKET:不是协议,是TCP或者UDP协议的具体实现API
- 短连接:建立连接,发送完数据,关闭连接,TCP可以实现短连接,因为HTTP基于TCP,也可实现短连接。对于传输数据不频繁的情况下用短连接
- 长连接:建立连接,发送完数据,保持连接一段时间,TCP可以实现长连接,因为HTTP基于TCP,也可实现长连接。对于传输数据频繁的情况下用长连接
- 无状态:协议对于事务处理没有记忆能力