Skip to content

micro-svc/go-rpc-framework-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

result

测试结果

name package transport codec tps
gin gin http json 29241
grpc grpc grpc protobuf 49967
rpcx-01 rpcx-v5 tcp json 38435
rpcx-02 rpcx-v5 tcp protobuf 73303
rpcx-03 rpcx-v5 tcp msgpack 40637
rpcx-04 rpcx-v5 tcp jsoniter 53163
go-micro-01 go-micro-v2 grpc json 6879
go-micro-02 go-micro-v2 grpc protobuf 24923
go-micro-03 go-micro-v2 http json 4297
go-micro-04 go-micro-v2 http protobuf 4016
twirp-01 twirp-v7 http json 8344
twirp-02 twirp-v7 http protobuf 41862
erpc-01 erpc-v6 tcp json 38183
erpc-02 erpc-v6 tcp protobuf 62062
arpc-01 arpc tcp json 44339
arpc-02 arpc tcp protobuf 89693
arpc-03 arpc tcp jsoniter 63259

机器配置:4 Cores 16G Memory

更新时间:2020-10-14

测试列表

  • gin:WEB 框架,用来和 RPC 做对比
  • grpc:跨语言 RPC 框架
  • rpcx/v5:RPC 框架,自带微服务组件
  • go-micro/v2:RPC 框架,自带微服务组件
  • twirp/v7:RPC 框架
  • erpc-v6:RPC 框架
  • arpc:RPC 框架

详细结果

gin

$ bin/gin-cli --transport=http --codec=json
{"time":"2020-10-14T22:12:59.380+08:00","level":"info","caller":"main.go:52","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:13:02.834+08:00","level":"info","caller":"main.go:75","goid":1,"tps":29241,"min":"133.706µs","max":"33.977848ms","mean":"3.361119ms","median":"2.349353ms"}

grpc

$ bin/grpc-cli --transport=grpc --codec=protobuf
{"time":"2020-10-14T22:13:22.086+08:00","level":"info","caller":"main.go:48","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:13:24.118+08:00","level":"info","caller":"main.go:71","goid":1,"tps":49967,"min":"149.954µs","max":"19.60794ms","mean":"1.98342ms","median":"1.767637ms"}

rpcx-01

$ bin/rpcx-v5-cli --transport=tcp --codec=json
{"time":"2020-10-14T22:13:43.265+08:00","level":"info","caller":"main.go:65","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:13:45.901+08:00","level":"info","caller":"main.go:88","goid":1,"tps":38435,"min":"128.622µs","max":"29.78092ms","mean":"2.54391ms","median":"1.879683ms"}

rpcx-02

$ bin/rpcx-v5-cli --transport=tcp --codec=protobuf
{"time":"2020-10-14T22:14:04.532+08:00","level":"info","caller":"main.go:65","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:14:05.928+08:00","level":"info","caller":"main.go:88","goid":1,"tps":73303,"min":"74.261µs","max":"20.752848ms","mean":"1.330593ms","median":"1.080378ms"}

rpcx-03

$ bin/rpcx-v5-cli --transport=tcp --codec=msgpack
{"time":"2020-10-14T22:14:24.565+08:00","level":"info","caller":"main.go:65","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:14:27.057+08:00","level":"info","caller":"main.go:88","goid":1,"tps":40637,"min":"115.936µs","max":"27.667247ms","mean":"2.409238ms","median":"1.826393ms"}

rpcx-04

$ bin/rpcx-v5-cli --transport=tcp --codec=jsoniter
{"time":"2020-10-14T22:14:45.688+08:00","level":"info","caller":"main.go:65","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:14:47.601+08:00","level":"info","caller":"main.go:88","goid":1,"tps":53163,"min":"85.394µs","max":"21.437595ms","mean":"1.844519ms","median":"1.456187ms"}

go-micro-01

$ bin/go-micro-v2-cli --transport=grpc --codec=json
{"time":"2020-10-14T22:15:06.756+08:00","level":"info","caller":"main.go:79","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:15:21.323+08:00","level":"info","caller":"main.go:102","goid":1,"tps":6879,"min":"581.034µs","max":"130.350326ms","mean":"14.278674ms","median":"9.94277ms"}

go-micro-02

$ bin/go-micro-v2-cli --transport=grpc --codec=protobuf
{"time":"2020-10-14T22:15:40.075+08:00","level":"info","caller":"main.go:79","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:15:44.120+08:00","level":"info","caller":"main.go:102","goid":1,"tps":24923,"min":"218.682µs","max":"22.308351ms","mean":"3.958798ms","median":"3.332323ms"}

go-micro-03

$ bin/go-micro-v2-cli --transport=http --codec=json
{"time":"2020-10-14T22:16:02.906+08:00","level":"info","caller":"main.go:79","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:16:26.206+08:00","level":"info","caller":"main.go:102","goid":1,"tps":4297,"min":"724.543µs","max":"386.259566ms","mean":"23.175511ms","median":"22.880496ms"}

go-micro-04

$ bin/go-micro-v2-cli --transport=http --codec=protobuf
{"time":"2020-10-14T22:16:44.996+08:00","level":"info","caller":"main.go:79","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:17:09.924+08:00","level":"info","caller":"main.go:102","goid":1,"tps":4016,"min":"1.222163ms","max":"172.771424ms","mean":"24.871255ms","median":"24.670879ms"}

twirp-01

$ bin/twirp-v7-cli --transport=http --codec=json
{"time":"2020-10-14T22:17:28.989+08:00","level":"info","caller":"main.go:56","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:17:41.004+08:00","level":"info","caller":"main.go:79","goid":1,"tps":8344,"min":"449.595µs","max":"121.748109ms","mean":"11.760852ms","median":"7.731058ms"}

twirp-02

$ bin/twirp-v7-cli --transport=http --codec=protobuf
{"time":"2020-10-14T22:17:59.633+08:00","level":"info","caller":"main.go:56","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:18:02.055+08:00","level":"info","caller":"main.go:79","goid":1,"tps":41862,"min":"97.612µs","max":"31.231029ms","mean":"2.331445ms","median":"1.578338ms"}

erpc-01

$ bin/erpc-v6-cli --transport=tcp --codec=json
{"time":"2020-10-14T22:18:21.267+08:00","level":"info","caller":"main.go:54","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:18:23.918+08:00","level":"info","caller":"main.go:77","goid":1,"tps":38183,"min":"113.675µs","max":"33.545517ms","mean":"2.536947ms","median":"1.621098ms"}

erpc-02

$ bin/erpc-v6-cli --transport=tcp --codec=protobuf
{"time":"2020-10-14T22:18:42.577+08:00","level":"info","caller":"main.go:54","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:18:44.222+08:00","level":"info","caller":"main.go:77","goid":1,"tps":62062,"min":"74.662µs","max":"19.501517ms","mean":"1.576802ms","median":"1.037877ms"}

arpc-01

$ bin/arpc-cli --transport=tcp --codec=json
{"time":"2020-10-14T22:19:03.154+08:00","level":"info","caller":"main.go:58","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:19:05.440+08:00","level":"info","caller":"main.go:81","goid":1,"tps":44339,"min":"90.944µs","max":"63.282135ms","mean":"2.140956ms","median":"1.043528ms"}

arpc-02

$ bin/arpc-cli --transport=tcp --codec=protobuf
{"time":"2020-10-14T22:19:24.070+08:00","level":"info","caller":"main.go:58","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:19:25.215+08:00","level":"info","caller":"main.go:81","goid":1,"tps":89693,"min":"53.244µs","max":"21.649969ms","mean":"1.055977ms","median":"557.315µs"}

arpc-03

$ bin/arpc-cli --transport=tcp --codec=jsoniter
{"time":"2020-10-14T22:19:43.857+08:00","level":"info","caller":"main.go:58","goid":1,"clients":100,"requests":1000,"total":100000}
{"time":"2020-10-14T22:19:45.470+08:00","level":"info","caller":"main.go:81","goid":1,"tps":63259,"min":"93.395µs","max":"28.08575ms","mean":"1.499947ms","median":"790.141µs"}

TODO