searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Api网关初探

2023-06-05 01:31:04
21
0

什么是API

API(应用程序编程接口,Application Programming Interface)是一组预定义的规则和规范,允许不同软件应用程序之间进行通信和数据交换。API定义了如何通过函数、方法、数据结构和类来访问和操作一个软件组件或服务的功能。
在Web服务领域,API通常指代RESTful API或GraphQL API。这些API允许客户端通过HTTP请求与服务器端进行通信,以获取、创建、更新或删除数据。这种API的设计使得不同的客户端(如Web浏览器、移动应用或其他服务器)可以轻松地与服务器端进行交互,从而实现跨平台的数据共享和操作。总之,API是一种使得软件组件之间可以互相通信和交换数据的规范和接口,它简化了开发过程,提高了软件的可重用性和可扩展性。

什么是API网关

服务治理经过微服务改造,会出现一定数量的服务,他们之间的访问不是单纯的直线链路,横向纵向的服务改造方式使得服务访问呈现了网状结构,为了解决这种复杂的访问逻辑,在访问者和被访问者之间,搭建一层网关进行权限控制,即API网关。

API网关作为一个微服务组件,它在微服务架构中充当客户端和后端服务之间的中介,是微服务架构的流量入口。即在微服务架构中,API网关提供了一个统一的访问点,用于访问多个API,简化了客户端代码并降低了整个系统的复杂性。此外API网关还提供了一些管理和保护API的功能,如身份验证、授权、限速和缓存等。

API网关的功能

早期的API网关主要作为反向代理,即将客户端的请求路由到适当的后端服务,并将响应返回给客户端。而随着微服务框架的发展,API在生命周期内的安全性,可观测,可分析性越来越受重视,API网关陆陆续续开始支持身份验证,鉴权,授权,限速,缓存等这些有助于管理和保护后端服务的功能。发展到云原生时代, 赋予API网关的功能也越来越多:

  • 易于部署和扩展:可以轻松地部署在容器化环境中,并与其他云原生组件(如服务网格)集成,可以自动伸缩以满足不断变化的负载需求。
  • 微服务友好:支持服务发现(例如dns,k8s, consul等)、负载均衡和故障转移等功能。这使得它们能够更好地管理和路由微服务之间的通信。
  • 高性能:通常具有高性能和低延迟,这对于处理大量API请求和提供快速响应至关重要。
  • 安全性:支持各种安全功能,如身份验证、授权、API密钥管理和限速,熔断,黑白名单等,以保护后端服务免受恶意访问和攻击。
  • 可观测性:支持集成监控、日志记录和追踪工具,以提供对API请求和性能的实时洞察。这有助于识别和解决潜在的问题,以确保系统的稳定性和可靠性。
  • 灵活性:支持多种协议和数据格式,如REST、gRPC和GraphQL,以满足不同应用程序的需求。此外,还可以通过插件和扩展来增强功能,以适应特定的业务场景。
  • 开源和生态系统:许多云原生API网关是开源的,这意味着开发人员可以查看和修改其源代码,以满足自己的需求。此外,云原生API网关通常与广泛的开源工具和平台集成,以支持持续集成和持续部署(CI/CD)等工作流程。

API网关产品

以下是一些常见的API网关产品:

网关产品

产品定位

Spring Cloud Gateway

传统微服务网关,完善SpringCloud生态,替代原Zuul 1.0网关,基于Java Filter扩展。

Zuul

传统微服务网关,是 Netflix 开源的微服务网关,Spring Cloud Netflix 全家桶之一;

APISIX

是一个基于 OpenResty 和 etcd 实现的云原生、高性能、可扩展的微服务 API 网关。APISIX 通过插件机制,提供动态负载平衡、身份验证、限流限速、配置和插件热更新等功能,并且支持插件开发(插件可使用 Go/Python/Java 编写)。

Nginx

传统的流量网关,以稳定性与高性能著称,采用Reload机制更新配置。

Traefik

安全、可扩展的微服务API网关,提供Golang扩展机制。

Kong

是一款基于 OpenResty(Nginx + Lua 模块)编写的高可用、易扩展的,由 Mashape 公司开源的 API Gateway 项目。Kong 通过插件(插件使用 Lua 编写)的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。支持扩展功能,模块化,运行在任何基础设施上

gloo

是一个基于 Envoy 的 Kubernetes 原生入口控制器和下一代 API 网关。Gloo 在函数级路由方面表现卓越,支持传统应用程序、微服务与 Serverless(Gloo 被选为 Knative 项目的首选 ingress 项目)。Gloo 设计独特,可支持混合应用,其中的多种技术、架构、协议和云可共存;

tyk

是一款基于 Golang 和 Redis 构建的开源 API 网关,拥有丰富的功能集和漂亮的 Web-UI 仪表板,但是文档和资料较少,对商业用途不是很友好;

AWS API Gateway

AWS API Gateway是亚马逊云服务(AWS)的一种托管式API网关,支持RESTful和WebSocket API。它提供了丰富的功能,如身份验证、授权、限速、监控和日志记录等

0条评论
0 / 1000
w****n
6文章数
0粉丝数
w****n
6 文章 | 0 粉丝
原创

Api网关初探

2023-06-05 01:31:04
21
0

什么是API

API(应用程序编程接口,Application Programming Interface)是一组预定义的规则和规范,允许不同软件应用程序之间进行通信和数据交换。API定义了如何通过函数、方法、数据结构和类来访问和操作一个软件组件或服务的功能。
在Web服务领域,API通常指代RESTful API或GraphQL API。这些API允许客户端通过HTTP请求与服务器端进行通信,以获取、创建、更新或删除数据。这种API的设计使得不同的客户端(如Web浏览器、移动应用或其他服务器)可以轻松地与服务器端进行交互,从而实现跨平台的数据共享和操作。总之,API是一种使得软件组件之间可以互相通信和交换数据的规范和接口,它简化了开发过程,提高了软件的可重用性和可扩展性。

什么是API网关

服务治理经过微服务改造,会出现一定数量的服务,他们之间的访问不是单纯的直线链路,横向纵向的服务改造方式使得服务访问呈现了网状结构,为了解决这种复杂的访问逻辑,在访问者和被访问者之间,搭建一层网关进行权限控制,即API网关。

API网关作为一个微服务组件,它在微服务架构中充当客户端和后端服务之间的中介,是微服务架构的流量入口。即在微服务架构中,API网关提供了一个统一的访问点,用于访问多个API,简化了客户端代码并降低了整个系统的复杂性。此外API网关还提供了一些管理和保护API的功能,如身份验证、授权、限速和缓存等。

API网关的功能

早期的API网关主要作为反向代理,即将客户端的请求路由到适当的后端服务,并将响应返回给客户端。而随着微服务框架的发展,API在生命周期内的安全性,可观测,可分析性越来越受重视,API网关陆陆续续开始支持身份验证,鉴权,授权,限速,缓存等这些有助于管理和保护后端服务的功能。发展到云原生时代, 赋予API网关的功能也越来越多:

  • 易于部署和扩展:可以轻松地部署在容器化环境中,并与其他云原生组件(如服务网格)集成,可以自动伸缩以满足不断变化的负载需求。
  • 微服务友好:支持服务发现(例如dns,k8s, consul等)、负载均衡和故障转移等功能。这使得它们能够更好地管理和路由微服务之间的通信。
  • 高性能:通常具有高性能和低延迟,这对于处理大量API请求和提供快速响应至关重要。
  • 安全性:支持各种安全功能,如身份验证、授权、API密钥管理和限速,熔断,黑白名单等,以保护后端服务免受恶意访问和攻击。
  • 可观测性:支持集成监控、日志记录和追踪工具,以提供对API请求和性能的实时洞察。这有助于识别和解决潜在的问题,以确保系统的稳定性和可靠性。
  • 灵活性:支持多种协议和数据格式,如REST、gRPC和GraphQL,以满足不同应用程序的需求。此外,还可以通过插件和扩展来增强功能,以适应特定的业务场景。
  • 开源和生态系统:许多云原生API网关是开源的,这意味着开发人员可以查看和修改其源代码,以满足自己的需求。此外,云原生API网关通常与广泛的开源工具和平台集成,以支持持续集成和持续部署(CI/CD)等工作流程。

API网关产品

以下是一些常见的API网关产品:

网关产品

产品定位

Spring Cloud Gateway

传统微服务网关,完善SpringCloud生态,替代原Zuul 1.0网关,基于Java Filter扩展。

Zuul

传统微服务网关,是 Netflix 开源的微服务网关,Spring Cloud Netflix 全家桶之一;

APISIX

是一个基于 OpenResty 和 etcd 实现的云原生、高性能、可扩展的微服务 API 网关。APISIX 通过插件机制,提供动态负载平衡、身份验证、限流限速、配置和插件热更新等功能,并且支持插件开发(插件可使用 Go/Python/Java 编写)。

Nginx

传统的流量网关,以稳定性与高性能著称,采用Reload机制更新配置。

Traefik

安全、可扩展的微服务API网关,提供Golang扩展机制。

Kong

是一款基于 OpenResty(Nginx + Lua 模块)编写的高可用、易扩展的,由 Mashape 公司开源的 API Gateway 项目。Kong 通过插件(插件使用 Lua 编写)的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。支持扩展功能,模块化,运行在任何基础设施上

gloo

是一个基于 Envoy 的 Kubernetes 原生入口控制器和下一代 API 网关。Gloo 在函数级路由方面表现卓越,支持传统应用程序、微服务与 Serverless(Gloo 被选为 Knative 项目的首选 ingress 项目)。Gloo 设计独特,可支持混合应用,其中的多种技术、架构、协议和云可共存;

tyk

是一款基于 Golang 和 Redis 构建的开源 API 网关,拥有丰富的功能集和漂亮的 Web-UI 仪表板,但是文档和资料较少,对商业用途不是很友好;

AWS API Gateway

AWS API Gateway是亚马逊云服务(AWS)的一种托管式API网关,支持RESTful和WebSocket API。它提供了丰富的功能,如身份验证、授权、限速、监控和日志记录等

文章来自个人专栏
云原生网关
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0