最近在项目中开发一个数据访问层dal,为了支持线性扩容,需要在网关层做流量路由,调研一下现有的主流网关架构的设计,原文地址: http://dockone.io/article/8729
最终结论:
为了实现单元化绑定需求,无论使用那种网关都需要额外的开发量,从技术亲和和后续可运维性考虑,淘汰非JAVA框架.
zuul曾经非常流行,但是有和Spring分道扬镳的趋势,和Spring Cloud Gateway相比无明显性能优势,故选定Spring Cloud Gateway作为我么的网关实现.
———————————————
微服务架构是当下比较流行的一种架构风格,它是一种以业务功能组织的服务集合,可以持续交付、快速部署、更好的可扩展性和容错能力,而且还使组织更容易去尝试新技术栈。微服务具有几个关键特征:
- 高度可维护和可测试性
- 与其他服务松散耦合
- 且可独立部署
- 能够由一个小团队开发
现在很多公司企业想将自己的单体应用架构迁移到微服务架构,在这个问题上,Martin Fowler提出了3个前提,而Phil Calcado对其进行了扩展如下:
- 快速配置计算资源
- 基本监控
- 快速部署
- 易于配置存储
- 易于访问网关
- 认证、授权
- 标准化的 RPC
今天我们主要讲讲易于访问的网关,也就是 API 网关。
为什么需要 API 网关
假设我们要使用微服务架构构建一个电商平台,以下可能是一些潜在的服务:
- 购物车服务
- 订单服务
- 商品服务
- 评论服务
- 库存服务
等等,客户端应该怎么访问这些服务呢?原来单体应用的情况我们都知道,都在一个服务器上部署,直接访问IP+端口+服务前缀即可,现在微服务架构下,每个服务都可以独立部署,并且是由不同的开发团队开发的,难道我们要这样访问吗?

理论上每个服务都有端点可以访问,但是客户端就需要记录所有服务的端点,发起5次请求,现在还是5个服务,如果之后扩展多了呢?对客户端来说就是一个灾难,随之带来的就是安全性问题、扩展性问题等,所以这种客户端直接与每个服务交互是不可取的,通常,更好的方式是使用 API 网关。
API 网关是客户端访问服务的统一入口,API 网关封装了后端服务,还提供了一些更高级的功能,例如:身份验证、监控、负载均衡、缓存、多协议支持、限流、熔断等等,API 网关还可以针对不同的客户端定制不同粒度的 API,上面例子中修改架构后如下:

API 网关的优缺点
API 网关的好处是显而易见的,封装了应用程序的内部结构,为不同客户端提供不同粒度的 API,同时网关自身也提供了一些高级功能,也减少了客户端与应用程序之间的往返次数,使客户端代码更优雅。
同时使用网关也存在一些缺点,增加了一个新的组件,增加了整个应用架构的复杂度,一个通俗的道理,你做的越多你犯错的风险也越高,网关不可用很可能导致整个应用架构崩溃,当然现在有各种各样的方案,能防止网关崩溃,它也可能存在瓶颈风险。
使用网关有利有弊,我个人而言,利肯定是大于弊的,我们尽可能的将弊端降到最低。
API 网关一些实现
使用一个组件时,尤其是这种比较流行的架构,组件肯定存在开源的,我们不必自己去从零开始去实现一个网关,自己开发一个网关的工作量是相当可观的,现在比较流行的开源 API 网关如下所示:
Kong
Kong是一个在 Nginx 中运行的Lua应用程序,并且可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与 OpenResty 一起发布,OpenResty已经包含了 lua-nginx-module, OpenResty 不是 Nginx 的分支,而是一组扩展其功能的模块。
它的核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。
Traefik
Traefik 是一个现代 HTTP 反向代理和负载均衡器,可以轻松部署微服务,Traeffik 可以与您现有的组件(Docker、Swarm,Kubernetes,Marathon,Consul,Etcd,…)集成,并自动动态配置。
Ambassador
Ambassador 是一个开源的微服务 API 网关,建立在 Envoy 代理之上,为用户的多个团队快速发布,监控和更新提供支持,支持处理 Kubernetes ingress controller 和负载均衡等功能,可以与 Istio 无缝集成。
Tyk
Tyk是一个开源的、轻量级的、快速可伸缩的 API 网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全 RESTful API。基于 go 编写。
Zuul
Zuul 是一种提供动态路由、监视、弹性、安全性等功能的边缘服务。Zuul 是 Netflix 出品的一个基于 JVM 路由和服务端的负载均衡器。
API 网关实现对比



总结
由上述对比表格中可以看出:从开源社区活跃度来看,无疑是Kong和Traefik较好;从成熟度来看,较好的是Kong、Tyk、Traefik;从性能角度来看,Kong要比其他几个领先一些;从架构优势的扩展性来看,Kong、Tyk有丰富的插件,Ambassador也有插件但不多,而Zuul是完全需要自研,但Zuul由于与Spring Cloud深度集成,使用度也很高,近年来Istio服务网格的流行,Ambassador因为能够和Istio无缝集成也是相当大的优势。
具体使用选择还是需要依据具体的业务场景,我们在参考链接中收集了一些性能对比,大家可以做下参考。
参考链接
- https://www.bbva.com/en/api-gateways-kong-vs-tyk/ kong vs tyk
- https://stackshare.io/stackups/kong-vs-traefik kong vs traefik
- https://blog.getambassador.io/ … d79ef
envoy vs nginx - https://engineering.opsgenie.c … 65369
nginx vs zuul
Some really excellent info Sword lily I detected this. https://farmasiucretsizuyelik.com/
Thank you for great article. I look forward to the continuation. https://no19butik.com/
Thank you for great content. I look forward to the continuation. stream sky sports 2
XEvil6.0自动解决大多数类型的captchas,
包括这类验证码: ReCaptcha-2, ReCaptcha v.3, Hotmail, Google captcha, Solve Media, BitcoinFaucet, Steam, +12000
+ hCaptcha, ReCaptcha Enterprise 支持新的Xevil6.0!
1.) 快速,轻松
XEvil是世界上最快的验证码杀手。 它没有解决限制,没有线程数限制
你甚至可以每天解决1.000.000.000captchas,它将花费0(零)美元! 只需购买许可证59美元和所有!
2.) 几个Api支持
XEvil支持超过6种不同的全球知名API: 2Captcha, anti-captcha (antigate), rucaptcha.com, DeathByCaptcha, etc.
只要通过HTTP请求发送您的验证码,因为您可以发送到任何一个服务-和XEvil将解决您的验证码!
因此,XEvil与数百个SEO/SMM/密码恢复/解析/发布/点击/加密货币/等应用程序兼容。
3.) 有用的支持和手册
购买后,您可以访问私人技术。支持论坛,维基,Skype/电报在线支持
开发人员将免费且非常快速地训练XEvil到您的验证码类型-只需向他们发送示例
4.) 如何免费试用XEvil完整版?
– 尝试在Google中搜索 “Home of XEvil”
– 您将找到Xevil用户打开端口80的Ip(点击任何IP以确保)
– 尝试通过2captcha API ino其中一个Ip发送您的captcha
– 如果你有坏的密钥错误,只需tru另一个IP
– 享受吧! 🙂
– (它不适用于hCaptcha!)
警告:免费XEvil演示不支持ReCaptcha,hCaptcha和大多数其他类型的captcha!
http://xrumersale.site/
Xevil5.0自动解决大多数类型的captchas,
包括这类验证码: ReCaptcha-2, ReCaptcha-3, Hotmail (Microsoft), Google, SolveMedia, BitcoinFaucet, Steam, +12k
+ hCaptcha, ReCaptcha Enterprise 支持新的Xevil6.0!
1.) 快速,轻松
XEvil是世界上最快的验证码杀手。 它没有解决限制,没有线程数限制
你甚至可以每天解决1.000.000.000captchas,它将花费0(零)美元! 只需购买许可证59美元和所有!
2.) 几个Api支持
XEvil支持超过6种不同的全球知名API: 2captcha.com, anti-captcha (antigate), rucaptcha.com, DeathByCaptcha, etc.
只要通过HTTP请求发送您的验证码,因为您可以发送到任何一个服务-和XEvil将解决您的验证码!
因此,XEvil与数百个SEO/SMM/密码恢复/解析/发布/点击/加密货币/等应用程序兼容。
3.) 有用的支持和手册
购买后,您可以访问私人技术。支持论坛,维基,Skype/电报在线支持
开发人员将免费且非常快速地训练XEvil到您的验证码类型-只需向他们发送示例
4.) 如何免费试用XEvil完整版?
– 尝试在Google中搜索 “Home of XEvil”
– 您将找到Xevil用户打开端口80的Ip(点击任何IP以确保)
– 尝试通过2captcha API ino其中一个Ip发送您的captcha
– 如果你有坏的密钥错误,只需tru另一个IP
– 享受吧! 🙂
– (它不适用于hCaptcha!)
警告:免费XEvil演示不支持ReCaptcha,hCaptcha和大多数其他类型的captcha!
http://XEvil.Net/
heybilet ile sikişmenin doruklarını yaşayın osmanı sikin
great content thanks
very nice post ty admin
Football betting 24 hours a day. Football betting inquiries 24 hours a day. Kermit Ferullo
I really like reading a post that can make men and women think. Pete Everhart
You made some fine points there. I did a search on the subject matter and found mainly people will consent with your blog. Erasmo Hotten
Way cool! Some very valid points! I appreciate you penning this write-up plus the rest of the website is also very good. Leonardo Schamburek
Hey! I realize this is sort of off-topic but I needed to ask. Jay Annichiarico
Wow! At last I got a weblog from where I be able to really obtain helpful facts concerning my study and knowledge. Henry Hisrich
You made some respectable points there. I searched the net for the problem and also discovered most people will support with your website. Julian Mckearin
Thankfulness to my father who informed me regarding this webpage, this weblog is genuinely amazing. Ken Alarcon
Appreciate it for helping out, good info. “If at first you don’t succeed, find out if the loser gets anything.” by Bill Lyon. Catharine Kimble Morita
Right away I am going away to do my breakfast, when having my breakfast coming again to read more news. Reynaldo Goodlow
I reckon something truly interesting about your web blog so I saved to bookmarks . Ivory Gantvoort
我用spring cloud gateway