续:Grpc over http2 PK WebApi over http2

Posted netcore技术生态分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了续:Grpc over http2 PK WebApi over http2相关的知识,希望对你有一定的参考价值。


上篇我们做了win10环境下的测试,下面是我在Ubuntu18下测试的结果,当然,在Ubuntu下测试会麻烦点,比如证书,以及Ubuntu下如何发布打包程序等问题。今天我们先看看测试结果,Ubuntu下使用vscode作为开发工具,以后会做专题来讲。


测试环境:

Operation System: Ubuntu 18.04.2 LTS

CPU:

Intel(R)Core(TM)i7-7700CPU@3.60GHz,1physical

processor;4cores;8threads

RAM:32GB


测试所得数据

1000 千次请求1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test1GRPC takes:218毫秒1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test2WebApi2 takes:177毫秒
10000 一万次请求1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test1GRPC takes:2000毫秒1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test2WebApi2 takes:1770毫秒
100000 十万次请求1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test1GRPC takes:20788毫秒1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test2WebApi2 takes:17800毫秒
1000000 百万次请求1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test1GRPC takes:212276毫秒1 GRPC Test, 2 WebApi2 Test, 3 WebApi1 Test2WebApi2 takes:181279毫秒


总结:

    在netcore3.0下,目前Grpc over http2 和Webapi over http2的性能差别并不大,Webapi over http2的性能稍好点,单次请求所损耗的时间都是在0.2ms左右,非常稳定。

    在编码效率方面,肯定是Webapi的效率更胜一筹,而且其还有swagger等工具,以及完善的限流和负债均衡方案等等,所以笔者更倾向在项目中使用Webapi over http2方案。

    以后会介绍一款框架,根据swagger文档生成httpclient客户端的代码库。


谢谢关注!


以上是关于续:Grpc over http2 PK WebApi over http2的主要内容,如果未能解决你的问题,请参考以下文章

Node JS:双向 GRPC 调用会打开多个 http2 连接吗?

GRPC 服务器上的 JMeter 测试:服务器端异常:io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception

grpc基于http2之上的协议

GRPC 在 Cloud Foundry 中如何工作? GoRouter 不支持 HTTP2

关于 Web 浏览器中的 gRPC 支持以及它们如何利用 HTTP2 的问题

Spring Boot + GRPC Http2Exception