mq接口和http接口的区别?
MQ属于长连接,http属于短链接
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议
HTTP是一个属于应用层的,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
根据3G网络的测量结果,MQTT的吞吐量比HTTP快93倍
MQ是异步的,程序中只要放入到MQ中就认为是成功了,而HttpClient是同步的,要等待response返回的结果
http网络基础
为了理解HTTP,首先先了解TCP/IP协议族,通常使用的网络是在TCP/IP协议族的基础上运作的,HTTP是属于它内部的一个子集。
计算机与网络设备要互相通信,双方就必须基于相同的方法。
如何探测到通信目标、由那一边向发起通信、使用哪种语言进行通信、怎样结束通信等规则都是需要事先确定,不同的硬件、操作系统之间的通信,所有的一切都需要一种规则。这种规则被称之为协议。
在TCP/IP的协议族中最重要的一点就是分层,TCP/IP协议族的层次分别分为以下的四层:
将TCP/IP层次化的好处是:当协议的某个地方需要变动时可以只需将变动层替换掉即可,将各个层之间的接口规划好之后,每个层次内部的设计就可以自由的改动。每个层只需要处理自己这个层的事情即可。
TCP/IP各个层的作用如下:
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层-->传输层-->网络层-->链路层,接受端则从相反的方向走。
以http举例来说明:
发送端在层和层之间传输数据时,每经过一层必定会被打上改层首部的信息。反之接收端在层与层之间传输数据时,每经过一层时会把对应的首部去掉。
下面来了解一下与HTTP关系密切的三个协议(IP、TCP和DNS)
按枯樱层次分,IP网际协议位于网络层。
IP协议的作用是把各类数据包传送给对方,而要确保包确实传送到了对方那里,需要满足各类条件。其中两个重要的条件就是IP地址和MAC地址。
IP地址指明了节点被分配的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本不会更改。
使用ARP协议凭借MAC地址进行通信
IP间的通信依赖MAC地址,在网络上通信的双方在同一个局域网的情况很少,通常需团耐要经过多台计算机和网络设备中转才能够连接到对方,在进行中转的时候,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这个时候会采用ARP协议。ARP协议是一种用来解析地址的协议,根据通信方的ip地址可以反查出对应的MAC地址。这种机制称为路由选择。
按层次分,TCP位于传输层,提供可靠的字节流服务。
字节流服务指的是:为了方便传输,将大块的数据分割以报文段为单位的数据包进行管理。而可靠的传输服务是指,能将数据准确可靠的传递给对方。
为了准确无误的将数据传递给目标,TCP协议采用了三次握手策略,握手过程中使用TCP的标志SYN和ACK。
发送端首先发送一个带有SYN标志的数据包给对方,接受端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后发送端再回传一个带有ACK标志的数据包,代表握手结束。
如果在握没或丛手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
DNS服务与HTTP协议一样位于应用层,它提供域名到IP地址之间的解析服务。
了解了上面TCP/IP协议族中的各种协议之后,看一下在HTTP协议通信的过程中这些协议都发挥了那些作用。
URI:Uniform Resource Identifier (统一资源标识符)指的是:由某个协议方案表示的资源的定位标识符。协议方案指的是访问资源时所使用的协议类型名称。(采用HTTP协议时,协议方案就是http。除此之外还有ftp、file、telnet等。)
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称,它只包括名称不包括资源的协议。
URI可以被分为URL、URN或两者的组合,URL、URN是URI的子集。
表示指的的URI,要使用涵盖所有必要信息的绝对URI、绝对URL以及相对URL。
下面是绝对URI的格式: