.Net|http,grpc及netty的抓包及速度测试

前提 http调用过慢(很多原因:地域、http首次调用加载会慢,项目初始化慢),排除这些外,更多是tcp的来回次数决定了性能,通过Wireshark研究了下http,gRPC及netty每次调用的请求次数。
三次握手
无论哪种方案, 都脱离不开三次握手。握手的协议如下:
.Net|http,grpc及netty的抓包及速度测试
文章图片

通过Wireshark,可以清晰的看到三次握手。
第一次:客户端请求握手。
.Net|http,grpc及netty的抓包及速度测试
文章图片

第二次:服务端表示收到了握手请求, 并返回给客户端可以握手了。
.Net|http,grpc及netty的抓包及速度测试
文章图片

【.Net|http,grpc及netty的抓包及速度测试】第三次:客户端进行握手。
.Net|http,grpc及netty的抓包及速度测试
文章图片

Http请求
.Net|http,grpc及netty的抓包及速度测试
文章图片

截图中包含了3次握手和调用结束时关闭链接的分手,因为http调用一般都是释放链接。总共9次来回。
gRPC请求
.Net|http,grpc及netty的抓包及速度测试
文章图片

图中没有包含握手,会有7次来回,来回详情还需研究。
通过netty进行socket请求
.Net|http,grpc及netty的抓包及速度测试
文章图片

图中没有包含握手,会有4次来回。
1.客户端发服务端一个请求。
2.服务端说收到了,本次请求完成了。
3.服务端处理完后, 返回数据到客户端。
4.客户端说收到了。本次返回完成了。
结论
写了三个功能相同的服务端,通过调用发现, 调用时间和调用次数成正比。
在网络好的情况下,使用http在客户端和服务端之间通讯没有问题。在不太稳定或ping值过高时,建议通过tcp代理(可以通过netty搭建代理服务器),减少http带来的tcp请求,到服务端再进行http请求,会提高访问速度。

    推荐阅读