API网关
比如说:Spring Cloud Gateway,Zuul
API网关主要专注于路由客户端请求到合适的微服务应用。通常处理对API的请求,比如日常使用的网页请求通常都会有一个特定的URL,对于API网关来说,可以通过不同的规则将请求路由到不同的微应用。
常见用途
路由:简化系统设计,使得客户端可以单入口访问各种微应用(简化系统设计、提升性能;复杂性增加)
// 根据路径配置相应的规则,/order 路由至订单微应用,/goods 则路由至商品微应用
https://gateway.com/order/qwe
https://gateway.com/goods/qwe
身份验证和授权(统一鉴权):用于对客户端进行身份验证并实施访问控制策略,确保只有已授权才能访问的特定的数据和服务(增强安全性)
速率限制:限制客户端在特定时间范围可以对微服务的请求次数,帮助拒绝服务攻击和其它恶意行为
负载均衡:一个微服务可能有多个实例,网关根据负载均衡算法策略合理分配收到的客户端请求到不同的微服务实例,提高系统整体性能和可拓展性
日志记录:通过API网关过滤器可以增加日志服务,记录请求和返回的信息,针对记录的日志可以进行分析、检索和监控等。
负载均衡
比如说:Nginx,LVS
负载均衡则专注于平衡、分摊请求到不同的服务器或资源。通常位于两个或多个Web服务器前,合理分配流量,确保服务器资源的最佳利用,是解决高性能、高可用、水平伸缩的有效方式。
常见用途
分发流量:跨多服务器有效分配客户端请求或网络负载(服务器集群)
健康检查/故障转移:监控确保服务器正常运行,提高服务器组运行的可靠性,如果单个服务器出现故障,负载均衡会将流量重定向到其余正常运行的服务器(高可用)
水平伸缩:新服务器添加至服务器组时,负载均衡会自动向它发送请求
总结
两者都管理系统入站流量,但具有不同的角色,API网关提供对后端服务的路由和安全访问,而负载均衡在多个服务器之间合理分配流量。
- 如果仅仅需要在多个服务器之间分配流量,负载均衡
- 如果需要身份验证或速度限制等功能,API网关
在微服务架构系统中,API网关与负载均衡通常会在一起使用,负载均衡到API网关集群再到对应微服务,负载均衡分发请求到API网关,API网关进行身份验证等操作并提供对数据源或微应用的访问,两者共同管理系统入站流量,提高系统整体性能和可拓展性。