简单一点,http是协议,rpc是概念!rpc可以基于http协议(feign)、tcp协议(netty)、rmi协议(soap)和web服务(xml-rpc)框架实现。在传输过程中,由于序列化方法的不同,也出现了一些框架和协议,如dubbo中的dubbo协议、grpcprotobuf序列化协议等。实际上,它们都是基于远程调用的概念。什么是远程呼叫?
关键是rpc是远程调用。远程调用是客户端通过上述协议向服务器发送接口、参数、参数类型、方法、返回值、返回值类型等(称为方法签名),通知服务器要调用的接口方法。这个过程就是rpc的实现过程!http和rpc是两码事
!在性能方面,http本身是基于tcp协议的,属于应用层协议,所以http协议本身在实现过程中会占用大量的资源(内存、带宽等)。在性能方面,它肯定不如直接通过tcp实现的rpc协议快。不管http有多优化,它绝对没有tcp那么快!另一方面,tcp依赖于字节码。目前常用的是将客户端调用的接口信息以序列化的方式发送到服务器端。序列化框架包括许多内容(hession、protobuf、kryo等)。kryo具有最高的序列化性能,protobuf具有序列化后最小的字节码)。序列化后的字节码越小,占用的带宽越小,序列化时间越长,线程io延迟越短,线程io延迟越小。因此,在具体的应用层,有很多技术可以讨论。您可以根据自己的硬件能力选择相应的技术
!欢迎热爱科技的人们来探索
对于udp协议,整个数据包的最大长度为65535,其中报头长度为65535-20=65515;对于tcp协议,整个数据包的最大长度由最大段大小(mss)决定,mss是tcp数据包每次可以传输的最大数据段。为了获得最佳的传输效率,通常在tcp协议建立连接时协商双方的mss值。在执行tcp协议时,这个值通常被mtu值代替(需要减去ip包头的20字节和tcp包头的20字节),所以mss值通常是1460。对于以太网,tcp消息段(即mss)的最大长度通常为1460字节(1500(mtu)-20(ip头)-20(tcp头)=1460字节),减去12字节的tcp时间戳选项,剩下1448字节的tcp正文数据。另外,tcp流量控制采用滑动窗口机制,发送窗口的大小小于min(接收方通知的接收窗口大小和发送方的拥塞窗口大小)。
mss选项用于选择建立tcp连接时每个消息段可以承载的最大数据长度。此选项由四个字节组成:第一个字节(选项类型)为2;第二个字节(选项长度)为4,后跟16位选项数据,表示消息段中允许的最大数据长度(以字节为单位)。mss选项只能在初始连接请求(syn=1)的消息段中使用。消息段中的终端发送mss选项使用此选项通知端到端tcp实体端点在消息段中可以接受的最大数据长度。如果未指定此选项,则表示终端可以接受任何长度的消息段。