概念
API Gateway(API 网关)是一个在现代应用程序和服务架构中起关键作用的组件,它具有多种功能和作用,主要包括以下方面:
- 路由和请求分发:API 网关充当前端入口,根据请求的URL、HTTP方法、域名等条件,将请求路由到相应的后端服务或微服务。这种路由和请求分发的能力有助于将客户端请求分散到不同的服务,实现微服务架构。
- 协议转换:API 网关可以将不同的通信协议进行转换,使得前端客户端可以使用不同的通信协议(如HTTP、WebSocket、gRPC等)与后端服务进行通信,而无需直接处理协议转换的复杂性。
- 安全性:API 网关可以提供身份验证、授权和访问控制,确保只有经过授权的用户可以访问特定的API端点。它还可以协助防止常见的Web安全漏洞,如跨站脚本(XSS)和跨站请求伪造(CSRF)。
- 负载均衡:API 网关可以分配流量到多个后端服务实例,以确保高可用性和性能。这有助于防止某个服务实例过载,同时提高系统的可扩展性。
- 请求和响应转换:API 网关可以对请求和响应进行转换,例如,将数据从一个格式转换为另一个格式(如JSON到XML),或者对请求进行参数验证和修改,以适应后端服务的需求。
- 缓存:API 网关可以缓存请求的响应,以降低对后端服务的负载并提高响应速度。这对于频繁访问不经常变化的数据非常有用。
- 监控和分析:API 网关通常会记录请求和响应的信息,以便监控系统性能、错误和异常。这些日志可以用于分析和故障排除。
- 版本控制:API 网关可以支持多个API版本,并帮助管理不同版本之间的兼容性和迁移。
- 限流和配额管理:API 网关可以限制每个客户端或应用程序对API的访问速率,以确保公平的资源分配,并防止滥用。
- 灰度发布:API 网关可以支持灰度发布策略,逐渐引入新版本的API,以减小潜在风险并监测新版本的稳定性。
图解
步骤 1 - 客户端向 API 网关发送 HTTP 请求。
步骤 2 - API 网关解析并验证 HTTP 请求中的属性。
步骤 3 - API 网关执行允许列表/拒绝列表检查。
步骤 4 - API 网关与身份提供商对话以进行身份验证和授权。
步骤 5 - 将速率限制规则应用于请求。如果超过限制,请求将被拒绝。
步骤 6 和 7 - 现在请求已通过基本检查,API 网关通过路径匹配找到要路由到的相关服务。
步骤 8 - API 网关将请求转换为适当的协议并将其发送到后端微服务。
步骤9-12:API网关可以正确处理错误,如果错误需要较长时间才能恢复(断路),则处理故障。
它还可以利用 ELK(Elastic-Logstash-Kibana)堆栈进行日志记录和监控。我们有时会在 API 网关中缓存数据
小结
总之,API 网关在微服务架构中起到了关键的作用,它提供了一种统一的入口点,用于管理、保护、监控和优化API的访问,有助于构建可扩展、高可用性和安全性的分布式应用程序。