1、负载均衡
负载平衡就像超市设有多个结账通道。它位于客户端和 API 网关服务器之间,将传入请求分散到多个服务器。这可以防止任何单个服务器不堪重负。
它有用的原因如下:
- 均匀分布请求
- 如果服务器发生故障,仍可保持 API 运行
- 使扩展更容易 - 只需添加更多服务器
- 通过减少每台服务器的负载来提高性能
设置提示:
- 使用健康检查来发现故障服务器
- 考虑基于云的负载均衡器
- 为你的 API 选择正确的算法
2.添加更多服务器
向 API 网关添加更多服务器就像在繁忙的商店中开设额外的结账通道。它有助于同时处理更多请求。
其工作原理如下:
- 更多服务器=同时处理更多请求
- 如果一台服务器发生故障,其他服务器仍可继续工作
- 每个服务器的请求越少,处理速度就越快
AWS API Gateway 每秒可处理 10,000 个请求,峰值时可额外处理 5,000 个请求。但如果您需要更多请求怎么办?
DAZN 是一家体育流媒体服务公司,他们从中吸取了教训。他们需要实时向数百万用户推送更新。AWS API Gateway 每小时 180 万个新 WebSocket 连接的限制根本不够。
那么,如何以正确的方式添加更多服务器?
1.使用负载平衡
将请求均匀地分散到各个服务器。这样可以防止任何单个服务器过载。
2.设置健康检查
密切关注您的服务器。如果某个服务器出现问题,请将其从轮换中移除,直到其恢复正常。
3.规划增长
不要等到容量已满。在需要之前就添加新服务器。
4.考虑云选项
云平台可以更轻松地根据需要添加或删除服务器。
更多并不一定更好。首先至少使用两台服务器以实现高可用性,然后根据需要添加更多服务器。
3.智能缓存
可以将缓存视为 API 网关的存储库。它存储热门数据以便快速访问,无需经过后端服务器。
具体过程如下:
- 第一个请求:网关获取并存储数据。
- 后续请求:提供存储的副本。
- 数据在设定的时间(TTL)后刷新。
- 响应速度更快
- 减少后端工作
- 降低成本
专业提示:
- 缓存 GET 请求
- 针对特定方法进行定制
- 使用 ETag 进行智能客户端缓存
4、限制请求
API 网关需要像专业人士一样处理流量。这就是请求限制的作用所在。它是 API 的保镖,让整个过程都处于控制之中。
事情是这样的:
1.设定上限
2.跟踪请求
通常通过 IP 或 API 密钥来计数。
3.执行限制
当有人撞到天花板时:
- 拒绝额外内容(硬节流)
- 放慢速度(软节流)
- 排队待会儿
- “Weather.com API 在其免费套餐中允许每小时 1,000 个请求。热浪来袭时服务器也不会崩溃!”
- “Stripe 使用令牌桶系统。它可以处理销售高峰,同时保持长期控制。”
这将阻止数据抓取工具和攻击。
明智之举:
- 使用多个层级(秒、分钟、小时)
- 在Redis中存储分布式设置的限制数据
- 在标题中包含限制信息,以便客户端可以顺利运行
5.使用断路器
断路器充当 API 网关的安全开关。当出现问题时,它们会切断请求,从而防止系统过载。
以下是要点:
- 监视 API 调用
- 发现故障或减速
- 切断陷入困境的服务的流量
- 休息后允许有限流量通过
为什么要这么麻烦?断路器:
- 阻止多米诺骨牌效应
- 让失败的服务喘口气
- 保持系统运行
真实示例:
Netflix使用断路器来处理流量高峰和中断。在 2020 年封锁期间,他们看到全球流媒体增长了 16%。断路器有助于保持平稳。
要设置断路器:
- 选择失败限制(例如 10 秒内出现 5 次错误)
- 设置冷却时间(开启状态下30秒)
- 使用Hystrix (Java) 或Polly (.NET)等工具
6. 健康检查和备份系统
健康检查和备份可让您的 API 网关顺利运行。它们可尽早发现问题并提供安全保障。
设置健康检查的方法如下:
- 经常检查(每 5 分钟一次)
- 测试一切(服务器健康、应用程序状态、流程)
- 设定明确的限制(“健康”=响应时间在 200 毫秒以下)
- 使用自动提醒
7.基于云的设置
云 API 网关提供灵活性和可靠性。它们可以轻松扩展、处理流量高峰并提供全球覆盖。
这就是为什么云设置如此出色的原因:
- 根据需求自动扩展
- 通过全球分布减少延迟
- 无需停机即可快速更新
- 按使用量付费定价
总结:
- 负载平衡设置起来非常简单,并且对增长非常有利。但要注意 - 它可能会影响可靠性。
- 添加更多服务器就像锻炼肌肉。虽然需要付出努力,但最终你会变得强壮而灵活。Facebook 和 Google 等大公司都深信这种方法。
- 智能缓存是您友好的邻居帮手。它易于使用,可确保一切顺利运行。只是不要指望它能应对突然的人口激增。
- 限制请求就像是挂出“客满”的牌子。这样做很简单,而且可以保持系统稳定,但并不完全是铺开欢迎增长的垫子。
- 断路器需要花费一些力气才能安装好,但它们却能让您的系统保持正常运转。它们是微服务配方中的秘密武器。
- 健康检查和备份系统就像拥有一个私人教练和一个备用轮胎。它们需要花费一些精力来设置,但它们能让你保持强劲的体能并随时准备应对一切。
- 基于云的设置是扩展的“简单按钮”。它很简单,可以发展壮大,但每年可能会让您浪费 4.5 个小时。(这是 AWS API Gateway 的 99.95% 正常运行时间承诺。)
组合:
- 负载均衡 + 健康检查只有健康的服务器才能获得流量
- 缓存 + 请求限制减少后端压力,避免流量高峰
- 云设置 + 自动扩展资源随时调整
常见问题解答
1、如何扩展 API 网关?
扩展 API 网关并非难事。您需要执行以下操作:
- 测试你的极限
- 设定基准
- 注意速度
- 分散负荷
2、API 网关是否高可用?
没错。API 网关旨在持续运行。原因如下:
- 它们分布在不同的节点上
- 如果一个人失败了,其他人就会接手
- 即使部分系统发生故障,整个系统仍能正常运行
请记住:高可用性并不意味着完美无缺。当事情出现问题时,一定要有 B 计划。