开源API网关,你选对了么?

api网关的本质

不用扯那么多,也不用画图,一句话说清楚
api网关:流量总入口,得以集中控制!
就这么简单

api网关协议上最基本要支持HTTP 和 WebSocket,功能强大点的更会支持tcp/udp的负载均衡接入
正因为支持的是http协议,所以api网关不仅仅可以作为 RESTful API 接入,接入带页面的web都可以的,完全可以当成一个web负载均衡器使用

api网关的作用

解决:认证、鉴权、安全、流量管控、缓存、服务路由,协议转换、服务编排、熔断、灰度发布、监控报警等问题
本质上,流量从我过,我就可以做想做的控制,上面列的就是我需要的控制
有了api网关才不至于裸奔,才不至于在业务层“重复建设”,才不至于在业务层去用redis+lua实现“亲,你访问过于频繁,请稍后再试”,这个事交给api网关就成

api网关比较

开源api网关大全

之前流水理鱼把市面上开源的api网关整理了个大全 “开源API网关大全20款+” https://www.iamle.com/archives/2591.html ,大部分都加入了CNCF

以下api网关3Scale、Ambassador、APISIX、Express Gateway、Gloo、Kong、KrakenD、Mia-Platform、MuleSoft、Reactive Interaction Gateway、Sentinel、Tyk、WSO2 API Microgateway
加入了CNCF

开源api网关技术栈情况

api网关技术栈,老一派的使用java,新派的使用golang、openresty+lua
小众Node.js、.net、C++ 技术栈虽然不一样,达到的目的却是一样的。
用静态语言编写api网关是有弊端的
使用静态语言编写的api网关都会有插件编写不方便的问题
使用java编写的老牌网关性能差,历史包袱重
openresty+lua也许是最佳的api网关、waf、web防火墙解决方案
依托于openresty平台具备超高性能,又依托于lua获得了动态性
CloudFlare也是春哥当年用openresty+lua技术栈做的引擎

我们从不同的技术栈来做个api网关分类
openresty+lua开源api网关
代表有Kong、APISIX、3scale、、API Umbrella

Kong不用做太多介绍,应该是开源里面最热的一个api网关了,相对庞大复杂
APISIX,轻巧+极致性能+热插件,值得一提到是插件中有个serverless的支持,简单说就是写一段自定义lua脚本,挂载到openresty任意阶段执行!

golang开源api网关
代表有Tky、Manba、GOKU API Gateway、Ambassador(基于Envoy)、Gloo(基于Envoy)、KrakenD、BFE

java开源api网关
代表有Gravitee、Zuul、Sentinel、MuleSoft、WSO2、Soul

Erlang开源api网关
代表有RIG – Reactive Interaction Gateway

.net开源api网关
代表有Ocelot

Node.js开源api网关
代表有express-gateway

闭源商业api网关

从gartner(艾瑞咨询类似)的权威报告可以找到老牌的api网关玩家是谁
行业老大:Apigee、3Scale、Amazon等
各大云都是玩家,比如阿里云api网关、腾讯云api网关、Amazon API Gateway
国内还有几家也在做商业api网关,具体搜索下就能找到

总结下api网关选型建议

  • 前提满足功能需求
  • 不在乎商业闭源绑定,不想麻烦,选你最容易获取的商业api网关例如云平台卖的商业网关
  • 国内用户选 apisix 为代表的openresty+lua技术栈api网关,可以得到中文群组支持
  • 希望国际化的选 kong 为代表的openresty+lua技术栈api网关
  • 有大量的某语言开发人员,可以选基于这个技术栈的api网关,例如java选Gravitee,golang选tyk、Manba

流水理鱼 发布!

开源API网关,你选对了么?的更多相关文章

  1. 五种开源API网关实现组件对比

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

  2. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  3. 微服务架构学习与思考(11):开源 API 网关02-以 Java 为基础的 API 网关详细介绍

    微服务架构学习与思考(11):开源 API 网关02-以 Java 为基础的 API 网关详细介绍 上一篇关于网关的文章: 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Ngi ...

  4. .NET Core开源API网关 – Ocelot中文文档

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...

  5. 微服务架构中API网关的角色

    [上海尚学堂的话]:本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. A ...

  6. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  7. .NET Core微服务之基于Ocelot实现API网关服务

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.啥是API网关? API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端 ...

  8. Ocelot:API网关概要

    一.概要 Ocelot是.Net Core下一个开源API网关:Ocelot主要目标是在.NET在微服务或面向服务架构中提供统一的入口服务, Ocelot拿到HttpRequest对象到管道后,先创建 ...

  9. HTTP API网关选择之一Kong介绍

    为什么需要 API 网关 在微服务架构之下,服务被拆的非常零散,降低了耦合度的同时也给服务的统一管理增加了难度.如上图左所示,在旧的服务治理体系之下,鉴权,限流,日志,监控等通用功能需要在每个服务中单 ...

随机推荐

  1. H3C 广播风暴

  2. [C#] 如何把void*转换为byte[]

    一般来说,C#库的对外接口应该提供byte[]这样比较容易用的接口,而不应该提供裸的void* 但是有些库确实是这么封装的.那么就有一个如何转换的问题.MSDN推荐的转换方式是使用UnmanagedM ...

  3. 极简触感反馈Button组件

    一个简单的React触感反馈的button组件 import React from 'react'; import './index.scss'; class Button extends React ...

  4. C#的选择语句练习(二)

    1.输入a,b,c三个数,计算一元二次方程ax²+bx+c的根:若a=0,则不是一元二次方程:△=b²-4ac,根的计算公式为-b±√b²-4ac/2a:若△=b²-4ac>0,则方程有两个不一 ...

  5. 最短路径Dijkstra算法和Floyd算法整理、

    转载自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最短路径—Dijkstra算法和Floyd算法 Dijks ...

  6. java final域

    public final class ThreeStooges { /* * stooges是Set<String>类型的引用,final限定该引用成员属性stooges被赋初值后,就不能 ...

  7. 深入理解 Embedding层的本质

    继上文https://blog.csdn.net/weixin_42078618/article/details/82999906探讨了embedding层的降维效果,时隔一个月,分享一下嵌入层在NP ...

  8. Tomcat停,图片名字中文显示不出来

    Tomcat停,图片名字中文显示不出来     Tomcat下,图片名字中文显示不出来在tomcat的server.xml中加入URIEncoding="utf-8"<Con ...

  9. jQuery 工具类函数-检测浏览器是否属于W3C盒子模型

    浏览器的盒子模型分为两类,一类为标准的w3c盒子模型,另一类为IE盒子模型,两者区别为在Width和Height这两个属性值中是否包含padding和border的值,w3c盒子模型不包含,IE盒子模 ...

  10. gu集合

    离散型随机变量的一切可能的取值  与对应的概率  乘积之和称为该离散型随机变量的数学期望,本题期望是概率乘得分之和 数列是递增的,可以枚举第二小的数,假设选第i个数为第2小的数,则第1小的数有i-1种 ...