一线架构师总结:五种开源微服务API网关的终极大PK

栏目: 后端 · 发布时间: 5年前

内容简介:还没关注?快动动手指!

还没关注?

快动动手指!

聊技术、论职场!

为IT人打造一个“有温度”的 狸猫技术窝

微服务架构是当下比较流行的一种架构风格,它是一种以业务功能组织的服务集合,可以持续交付、快速部署、更好的可扩展性和容错能力,而且还使组织更容易去尝试新技术栈。

微服务具有几个关键特征:

  • 高度可维护和可测试性

  • 与其他服务松散耦合

  • 且可独立部署

  • 能够由一个小团队开发

现在很多公司企业想将自己的单体应用架构迁移到微服务架构,在这个问题上,Martin Fowler提出了3个前提,而Phil Calcado对其进行了扩展如下:

  • 快速配置计算资源

  • 基本监控

  • 快速部署

  • 易于配置存储

  • 易于访问网关

  • 认证、授权

  • 标准化的 RPC

今天我们主要讲讲易于访问的网关,也就是 API 网关。

为什么需要 API 网关

假设我们要使用微服务架构构建一个电商平台,以下可能是一些潜在的服务:

  • 购物车服务

  • 订单服务

  • 商品服务

  • 评论服务

  • 库存服务

客户端应该怎么访问这些服务呢?

原来单体应用的情况我们都知道,都在一个服务器上部署,直接访问IP+端口+服务前缀即可,现在微服务架构下,每个服务都可以独立部署,并且是由不同的开发团队开发的,难道我们要这样访问吗?

一线架构师总结:五种开源微服务API网关的终极大PK

理论上每个服务都有端点可以访问,但是客户端就需要记录所有服务的端点。发起5次请求,现在还是5个服务,如果之后扩展多了呢?

随着服务增多,对客户端来说就是一个灾难,随之带来的就是安全性问题、扩展性问题等。

所以这种客户端直接与每个服务交互是不可取的,通常,更好的方式是使用 API 网关

API 网关是客户端访问服务的统一入口,API 网关封装了后端服务,还提供了一些更高级的功能

例如:身份验证、监控、负载均衡、缓存、多协议支持、限流、熔断等等,API 网关还可以针对不同的客户端定制不同粒度的 API

上面例子中修改架构后如下:

一线架构师总结:五种开源微服务API网关的终极大PK

API 网关的优缺点

API 网关的好处是显而易见的,封装了应用程序的内部结构,为不同客户端提供不同粒度的 API

同时网关自身也提供了一些高级功能,也减少了客户端与应用程序之间的往返次数,使客户端代码更优雅。

同时使用网关也存在一些缺点,增加了一个新的组件,增加了整个应用架构的复杂度

一个通俗的道理,你做的越多你犯错的风险也越高,网关不可用很可能导致整个应用架构崩溃

当然现在有各种各样的方案,能防止网关崩溃,它也可能存在瓶颈风险。

使用网关有利有弊,我个人而言,利肯定是大于弊的,我们尽可能的将弊端降到最低。

API 网关一些实现

使用一个组件时,尤其是这种比较流行的架构,组件肯定存在开源的,我们不必自己去从零开始去实现一个网关,自己开发一个网关的工作量是相当可观的。

现在比较流行的开源 API 网关如下所示:

Kong
Kong是一个在 Nginx 中运行的 Lua 应用程序,并且可以通过lua-nginx模块实现

Kong不是用这个模块编译Nginx,而是与 OpenResty 一起发布,OpenResty已经包含了 lua-nginx-module, OpenResty 不是 Nginx 的分支,而是一组扩展其功能的模块。

它的核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。

Traefik
Traefik 是一个现代 HTTP 反向代理和负载均衡器,可以轻松部署微服务

它可以与您现有的组件(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 网关实现对比

一线架构师总结:五种开源微服务API网关的终极大PK

一线架构师总结:五种开源微服务API网关的终极大PK

总结

由上述对比表格中可以看出:

  • 从开源社区活跃度来看,无疑是Kong和Traefik较好

  • 从成熟度来看,较好的是Kong、Tyk、Traefik

  • 从性能角度来看,Kong要比其他几个领先一些

  • 从架构优势的扩展性来看,Kong、Tyk有丰富的插件,Ambassador也有插件但不多,而Zuul是完全需要自研,但Zuul由于与Spring Cloud深度集成,使用度也很高,近年来Istio服务网格的流行,Ambassador因为能够和Istio无缝集成也是相当大的优势。

END

作者: 康学志

来源:

https://segmentfault.com/a/1190000018761893

本文版权归作者所有

长按下图二维码,即刻关注【 狸猫技术窝

阿里、京东、美团、字节跳动

顶尖技术专家 坐镇

为IT人打造一个 “有温度” 的技术窝!

一线架构师总结:五种开源微服务API网关的终极大PK


以上所述就是小编给大家介绍的《一线架构师总结:五种开源微服务API网关的终极大PK》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大数据之路

大数据之路

阿里巴巴数据技术及产品部 / 电子工业出版社 / 2017-7-1 / CNY 79.00

在阿里巴巴集团内,数据人员面临的现实情况是:集团数据存储已经达到EB级别,部分单张表每天的数据记录数高达几千亿条;在2016年“双11购物狂欢节”的24小时中,支付金额达到了1207亿元人民币,支付峰值高达12万笔/秒,下单峰值达17.5万笔/秒,媒体直播大屏处理的总数据量高达百亿级别且所有数据都需要做到实时、准确地对外披露……巨大的信息量给数据采集、存储和计算都带来了极大的挑战。 《大数据......一起来看看 《大数据之路》 这本书的介绍吧!

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具