热门开源网关的性能对比:Goku > Kong > Tyk

不多说,先展示最后的性能测试结果

我们将Goku与市场上的其他同类热门产品进行比较,使用相同的环境和条件,测试以下产品:Goku、Kong、Tyk。简单介绍下,

Goku API Gateway (中文名:悟空 API 网关)是 EOLINKER 旗下自研的微服务网关,基于 Golang 开发,提供 社区版本(CE)企业版本(EE) ,我用来展示的是开源版本,也就是社区版本。

社区版地址:https://github.com/eolinker/goku-api-gateway

注:本次压测对象均为单个网关节点,并且均未启用插件功能。

测试详情

一、硬件环境

1.后端服务所在服务器

  • CPU: Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz * 12
  • Linux version 3.10.0-957.27.2.el7.x86_64
  • Total 48G,47G available memory

2.节点所在服务器

  • CPU: Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz * 12
  • Linux version 3.10.0-957.27.2.el7.x86_64
  • Total 48G,47G available memory

3.压测程序所在服务器

  • CPU:Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz * 4
  • Linux version 3.10.0-957.27.2.el7.x86_64
  • Total 16G,15G available memory

二、压测条件

  • 压测工具:Jmeter
  • 使用插件:concurrency thread group 阶梯式加压工具
  • 压力配置:

基准测试报告

一、直接访问后端服务

Starting the test @ Tue Sep 24 19:02:40 CST 2019 (1569322960758)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 370204 in 00:00:18 = 20504.2/s Avg:    28 Min:     0 Max:  3412 Err:     0 (0.00%) Active: 1200 Started: 1200 Finished: 0
summary + 743800 in 00:00:30 = 24792.5/s Avg:    80 Min:     0 Max: 15227 Err:     0 (0.00%) Active: 3000 Started: 3000 Finished: 0
summary = 1114004 in 00:00:48 = 23180.9/s Avg:    63 Min:     0 Max: 15227 Err:     0 (0.00%)
summary + 733900 in 00:00:30 = 24465.8/s Avg:   152 Min:     0 Max: 31097 Err:     0 (0.00%) Active: 4800 Started: 4800 Finished: 0
summary = 1847904 in 00:01:18 = 23674.7/s Avg:    98 Min:     0 Max: 31097 Err:     0 (0.00%)
summary + 726800 in 00:00:30 = 24227.5/s Avg:   221 Min:     0 Max: 32674 Err:     1 (0.00%) Active: 6000 Started: 6000 Finished: 0
summary = 2574704 in 00:01:48 = 23828.2/s Avg:   133 Min:     0 Max: 32674 Err:     1 (0.00%)
summary + 562492 in 00:00:53 = 10555.1/s Avg:   279 Min:     0 Max: 63191 Err:    23 (0.00%) Active: 0 Started: 6000 Finished: 6000
summary = 3137196 in 00:02:41 = 19444.0/s Avg:   159 Min:     0 Max: 63191 Err:    24 (0.00%)
Tidying up remote @ Tue Sep 24 19:05:23 CST 2019 (1569323123294)
... end of run

二、使用Goku API Gateway

Starting the test @ Tue Sep 24 19:20:20 CST 2019 (1569324020256)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +  97104 in 00:00:09 = 10927.8/s Avg:    36 Min:     1 Max:  1128 Err:     0 (0.00%) Active: 600 Started: 600 Finished: 0
summary + 334400 in 00:00:30 = 11148.2/s Avg:   139 Min:     1 Max:  1382 Err:     0 (0.00%) Active: 2400 Started: 2400 Finished: 0
summary = 431504 in 00:00:39 = 11097.5/s Avg:   116 Min:     1 Max:  1382 Err:     0 (0.00%)
summary + 330100 in 00:00:30 = 11002.2/s Avg:   302 Min:     1 Max:  1599 Err:     0 (0.00%) Active: 4200 Started: 4200 Finished: 0
summary = 761604 in 00:01:09 = 11056.0/s Avg:   197 Min:     1 Max:  1599 Err:     0 (0.00%)
summary + 322600 in 00:00:30 = 10748.3/s Avg:   473 Min:     1 Max:  2114 Err:     0 (0.00%) Active: 6000 Started: 6000 Finished: 0
summary = 1084204 in 00:01:39 = 10962.6/s Avg:   279 Min:     1 Max:  2114 Err:     0 (0.00%)
summary + 316800 in 00:00:30 = 10564.9/s Avg:   568 Min:     1 Max:  2329 Err:     0 (0.00%) Active: 6000 Started: 6000 Finished: 0
summary = 1401004 in 00:02:09 = 10870.1/s Avg:   344 Min:     1 Max:  2329 Err:     0 (0.00%)
summary +  27696 in 00:00:05 = 5278.4/s Avg:   547 Min:     1 Max:  1963 Err:     0 (0.00%) Active: 0 Started: 6000 Finished: 6000
summary = 1428700 in 00:02:14 = 10651.3/s Avg:   348 Min:     1 Max:  2329 Err:     0 (0.00%)
Tidying up remote @ Tue Sep 24 19:22:35 CST 2019 (1569324155252)
... end of run

三、使用Kong Gateway

Starting the test @ Tue Sep 24 19:26:51 CST 2019 (1569324411486)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +  86604 in 00:00:08 = 10814.7/s Avg:    34 Min:     0 Max:  1039 Err:     0 (0.00%) Active: 600 Started: 600 Finished: 0
summary + 358400 in 00:00:30 = 12056.0/s Avg:   123 Min:     1 Max:  3932 Err:     0 (0.00%) Active: 2400 Started: 2400 Finished: 0
summary = 445004 in 00:00:38 = 11792.6/s Avg:   105 Min:     0 Max:  3932 Err:     0 (0.00%)
summary + 343700 in 00:00:30 = 11371.8/s Avg:   271 Min:     4 Max: 15668 Err:     0 (0.00%) Active: 4200 Started: 4200 Finished: 0
summary = 788704 in 00:01:08 = 11605.4/s Avg:   178 Min:     0 Max: 15668 Err:     0 (0.00%)
summary + 345500 in 00:00:30 = 11602.9/s Avg:   398 Min:     4 Max: 31638 Err:     0 (0.00%) Active: 6000 Started: 6000 Finished: 0
summary = 1134204 in 00:01:38 = 11604.7/s Avg:   245 Min:     0 Max: 31638 Err:     0 (0.00%)
summary + 335200 in 00:00:30 = 11115.5/s Avg:   527 Min:     1 Max: 63127 Err:     0 (0.00%) Active: 6000 Started: 6000 Finished: 0
summary = 1469404 in 00:02:08 = 11489.3/s Avg:   309 Min:     0 Max: 63127 Err:     0 (0.00%)
summary +  46501 in 00:00:25 = 1828.7/s Avg:  1123 Min:     1 Max: 63166 Err:     6 (0.01%) Active: 0 Started: 6000 Finished: 6000
summary = 1515905 in 00:02:33 = 9887.0/s Avg:   334 Min:     0 Max: 63166 Err:     6 (0.00%)
Tidying up remote @ Tue Sep 24 19:29:25 CST 2019 (1569324565588)
... end of run
```

四、使用Tyk Gateway

Starting the test @ Thu Sep 26 15:53:16 CST 2019 (1569484396886)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +  10004 in 00:00:13 =  752.9/s Avg:   508 Min:     0 Max:  3021 Err:     0 (0.00%) Active: 900 Started: 900 Finished: 0
summary +   7900 in 00:00:29 =  272.2/s Avg:  4769 Min:  1229 Max: 11116 Err:     0 (0.00%) Active: 2700 Started: 2700 Finished: 0
summary =  17904 in 00:00:42 =  423.2/s Avg:  2388 Min:     0 Max: 11116 Err:     0 (0.00%)
summary +   6000 in 00:00:30 =  197.9/s Avg: 13697 Min:  9694 Max: 16971 Err:     0 (0.00%) Active: 4500 Started: 4500 Finished: 0
summary =  23904 in 00:01:13 =  329.1/s Avg:  5227 Min:     0 Max: 16971 Err:     0 (0.00%)
summary +   8000 in 00:00:30 =  269.3/s Avg: 17018 Min: 15093 Max: 18762 Err:     0 (0.00%) Active: 6000 Started: 6000 Finished: 0
summary =  31904 in 00:01:42 =  311.7/s Avg:  8183 Min:     0 Max: 18762 Err:     0 (0.00%)
summary +   7400 in 00:00:31 =  241.8/s Avg: 22188 Min: 17459 Max: 25974 Err:     0 (0.00%) Active: 5481 Started: 6000 Finished: 519
summary =  39304 in 00:02:13 =  295.6/s Avg: 10820 Min:     0 Max: 25974 Err:     0 (0.00%)
summary +   5686 in 00:00:22 =  257.1/s Avg: 25384 Min: 23820 Max: 27167 Err:     0 (0.00%) Active: 0 Started: 6000 Finished: 6000
summary =  44990 in 00:02:35 =  290.1/s Avg: 12661 Min:     0 Max: 27167 Err:     0 (0.00%)
Tidying up remote @ Thu Sep 26 15:55:52 CST 2019 (1569484552762)
... end of run

相关链接

项目地址:https://github.com/eolinker/goku-api-gateway
控制台Docker:https://hub.docker.com/r/eolinker/goku-api-gateway-ce-console
节点Docker:https://hub.docker.com/r/eolinker/goku-api-gateway-ce-node
官网地址:https://www.eolinker.com

原文地址:https://www.cnblogs.com/dc20181010/p/11764092.html

时间: 2024-11-08 14:06:49

热门开源网关的性能对比:Goku > Kong > Tyk的相关文章

自己写的轻量级PHP框架trig与laravel,yii性能对比

看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比. 看结果对比. laravel 5.1: yii2: trig: 自己写的框架速度是lavavel 5.1的8倍,是yii2的5.3倍.

iOS中保证线程安全的几种方式与性能对比

来源:景铭巴巴 链接:http://www.jianshu.com/p/938d68ed832c 一.前言 前段时间看了几个开源项目,发现他们保持线程同步的方式各不相同,有@synchronized.NSLock.dispatch_semaphore.NSCondition.pthread_mutex.OSSpinLock.后来网上查了一下,发现他们的实现机制各不相同,性能也各不一样.不好意思,我们平常使用最多的@synchronized是性能最差的.下面我们先分别介绍每个加锁方式的使用,在使用

开源IT监控系统对比

应邀对开源IT监控系统进行对比,选取了Nagios.Cacti.Zenoss.Zabbix.Hyperic HQ做为对比样本,帮助读者选择开源的IT监控系统作为底层,开发所需的监控运维工具. 1 背景和目标 1.1 前言 随着SaaS.P2P等各类在线应用的兴起,使得各类在线应用服务公司采购了大量的服务器等IT设施.而如何对庞大的IT设施进行有效的监控和管理,一直是很头疼的问题.以往,网络监控软件都是商业软件的天下,主要是BMC Patrol.CA Unicenter.HP OpenView或I

[1]Nginx_lua的应用及性能对比

对于Web高性能服务器上的选择,这个是很多人头痛的问题.对于Apache.lighttpd.Nginx都用他们优点,在什么情况下我们如何去选择适合自己的Web高性能服务器,如何去搭建一个适合自己的架构环境,这个是一个很麻烦的事情.接下来,在ADC 2012(Alibaba Developer Conference 2012)大会上,51CTO记者有幸采访到了一淘数据平台与产品部技术专家--清无(花名),为我们解读Nginx_lua的一些优势及劣势,以及在高性能服务器上的选择. AD: 对于Web

2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不得不用神奇的斐波那契算法.可能是比较常用或好玩吧. 好了,talk is cheap, show me your code!  打开Mac,点开Clion开始Coding吧! 1.怎么第一是Go呢,因为我个人最近正在用,感觉很不错 package main import "fmt" fun

不同Framework下StringBuilder和String的性能对比,及不同Framework性能比(附Demo)

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 环境搭建 测试用例 MSDN说明 我的理解 Demo下载 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 介绍   自己对String和StringBuilder的处理机制略懂,大胆的设想下两者的性能对比会出现什么样的令人意外的

Java常用消息队列原理介绍及性能对比

消息队列使用场景 为什么会需要消息队列(MQ)? 解耦  在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一接口.这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 冗余  有些情况下,处理数据的过程会失败.除非数据被持久化,否则将造成丢失.消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的"插入-获取-删除"范式中,在把一

MyISAM与InnoDB两者之间区别与选择,总结,性能对比

1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合. 2.InnoDB:支持事务安全的引擎,支持外键.行锁.事务是他的最大特点.如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况. 一.表锁差异 MyISAM:

MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比

原文:MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比 1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合. 2.InnoDB:支持事务安全的引擎,支持外键.行锁.事务是他的最大特点.如果有大量的update和insert,建议使用InnoD