百亿流量微服务网关的设计与实现(2)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 百亿流量微服务网关的设计与实现(2)

2. API网关的职能

API网关的职能如图7-4所示。



微信图片_20220123185330.jpg


图7-4


一般来说,API网关有四大职能。

  • 请求接入:作为所有API接口服务请求的接入点,管理所有的接入请求。
  • 业务聚合:作为所有后端业务服务的聚合点,所有的业务服务都可以在这里被调用。
  • 中介策略:实现安全、验证、路由、过滤、流控、缓存等策略,进行一些必要的中介处理。
  • 统一管理:提供配置管理工具,对所有API服务的调用生命周期和相应的中介策略进行统一管理。


3. API网关的关注点


API网关并不是一个典型的业务系统,而是一个为了让业务系统更专注于业务服务本身,给API服务提供更多附加能力的一个中间层。


在设计和实现API网关时,需要考虑两个目标:


(1)开发维护简单,节约人力成本和维护成本。即应选择成熟的简单可维护的技术体系。


(2)高性能,节约设备成本,提高系统吞吐能力。要求我们需要针对API网关的特点进行一些特定的设计和权衡。


当并发量小的时候,这些都不是问题。一旦系统的API访问量非常大,这些都会成为关键的问题。


海量并发的API网关最重要的三个关注点:


(1)保持大规模的inbound请求接入能力(长短连接),比如基于Netty实现。


(2)最大限度地复用outbound的HTTP连接能力,比如基于HttpClient4的异步HttpClient实现。


(3)方便灵活地实现安全、验证、过滤、聚合、限流、监控等各种策略。



API网关的分类与技术分析


1. API网关的分类


如果对上述的目标和关注点进行更深入的思考,那么所有需要考虑的问题和功能可以分为两类。


  • 一类是全局性的,跟具体的后端业务系统和服务完全无关的部分,比如安全策略、全局性流控策略、流量分发策略等。


  • 一类是针对具体的后端业务系统,或者是服务和业务有一定关联性的部分,并且一般被直接部署在业务服务的前面。


随着互联网的复杂业务系统的发展,这两类功能集合逐渐形成了现在常见的两种网关系统:流量网关和业务网关,如图7-5所示。


微信图片_20220123185345.jpg


图7-5

2. 流量网关与WAF

我们定义全局性的、跟具体的后端业务系统和服务完全无关的策略网关,即为流量网关。这样流量网关关注全局流量的稳定与安全,比如防止各类SQL注入、黑白名单控制、接入请求到业务系统的负载均衡等,通常有如下通用性的具体功能:


  • 全局性流控;
  • 日志统计;
  • 防止SQL注入;
  • 防止Web攻击;
  • 屏蔽工具扫描;
  • 黑白名单控制。


通过这个功能清单,我们可以发现,流量网关的功能跟Web应用防火墙(WAF)非常类似。WAF一般是基于Nginx/OpenResty的ngx_lua模块开发的Web应用防火墙。


一般WAF的代码很简单,专注于使用简单、高性能和轻量级。简单地说就是在Nginx本身的代理能力以外,添加了安全相关功能。用一句话描述其原理,就是解析HTTP请求(协议解析模块),规则检测(规则模块),做不同的防御动作(动作模块),并将防御过程(日志模块)记录下来。


一般的WAF具有如下功能:

  • 防止SQL注入、部分溢出、fuzzing测试、XSS/SSRF等Web攻击;
  • 防止Apache Bench之类压力测试工具的攻击;
  • 屏蔽常见的扫描黑客工具,比如扫描器;
  • 禁止图片附件类目录执行权限、防止webshell上传;
  • 支持IP白名单和黑名单功能,直接拒绝黑名单的IP访问;
  • 支持URL白名单,定义不需要过滤的URL;
  • 支持User-Agent的过滤、支持CC攻击防护、限制单个URL指定时间的访问次数;
  • 支持支持Cookie过滤,URL与URL参数过滤;
  • 支持日志记录,将所有拒绝的操作记录到日志中。


以上WAF的内容主要参考如下两个项目:


流量网关的开源实例还可以参考著名的开源项目Kong(基于OpenResty)。


3. 业务网关

我们定义针对具体的后端业务系统,或者是服务和业务有一定关联性的策略网关,即为业务网关。比如,针对某个系统、某个服务或某个用户分类的流控策略,针对某一类服务的缓存策略,针对某个具体系统的权限验证方式,针对某些用户条件判断的请求过滤,针对具体几个相关API的数据聚合封装,等等。


业务网关一般部署在流量网关之后、业务系统之前,比流量网关更靠近业务系统。我们大部分情况下说的API网关,狭义上指的是业务网关。如果系统的规模不大,我们也会将两者合二为一,使用一个网关来处理所有的工作。



开源网关的分析与调研


常见的开源网关介绍

常见的开源网关如图7-6所示。



微信图片_20220123185416.jpg


图7-6

相关文章
|
24天前
|
Kubernetes Java 测试技术
无忧微服务:如何实现大流量下新版本的发布自由
本文讨论了微服务上云过程中的稳定性挑战,特别是变更引起的生产故障。阿里云MSE(微服务引擎)提供了一种全链路无损发布方案,旨在消除变更风险,实现白天流量高峰时的安全发布。
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
99 0
|
9天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
10天前
|
监控 JavaScript 安全
构建微服务架构下的API网关
【4月更文挑战第15天】在微服务架构中,API网关扮演着至关重要的角色。它作为系统的唯一入口,不仅负责请求的路由、负载均衡和认证授权,还涉及到监控、日志记录和服务熔断等关键功能。本文将探讨如何构建一个高效且可靠的API网关,涵盖其设计原则、核心组件以及实现策略,旨在为后端开发人员提供一套实用的指导方案。
25 4
|
1月前
|
消息中间件 缓存 API
微服务架构下的API网关性能优化实践
在现代的软件开发中,微服务架构因其灵活性和可扩展性被广泛采用。随着服务的细分与增多,API网关作为微服务架构中的关键组件,承担着请求路由、负载均衡、权限校验等重要职责。然而,随着流量的增长和业务复杂度的提升,API网关很容易成为性能瓶颈。本文将深入探讨API网关在微服务环境中的性能优化策略,包括缓存机制、连接池管理、异步处理等方面的具体实现,旨在为开发者提供实用的性能提升指导。
|
1月前
|
缓存 负载均衡 监控
构建高效微服务架构:API网关的作用与实践
【2月更文挑战第31天】 在当今的软件开发领域,微服务架构已成为实现系统高度模块化和易于扩展的首选方法。然而,随着微服务数量的增加,确保通信效率和管理一致性变得尤为重要。本文将探讨API网关在微服务架构中的核心角色,包括其在请求路由、安全性、负载均衡以及聚合功能方面的重要性。我们将通过具体案例分析,展示如何利用API网关优化后端服务,并讨论实施过程中的最佳实践和常见挑战。
|
1月前
|
负载均衡 算法 微服务
常见的微服务流量治理策略
常见的微服务流量治理策略
46 3
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1月前
|
缓存 监控 负载均衡
构建微服务架构下的API网关实践指南
【2月更文挑战第22天】在现代的软件开发实践中,微服务架构因其灵活性和可扩展性而成为众多企业的首选。随着服务数量的增长,有效地管理这些服务的入口——API网关,成为了确保系统稳定性和效率的关键。本文将探讨如何在微服务环境中构建一个高性能、可扩展的API网关,以及它如何帮助实现请求路由、负载均衡、认证授权和监控等功能,同时提供了一系列实施的最佳实践和面临的挑战解决方案。