# 《Seckill秒杀系统》第85章:业务网关概述与核心架构

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:理解网关在业务系统中的应用场景,能够根据自身实际业务场景对网关进行选型,并能够将其灵活应用到自身实际项目中。

大家好,我是冰河~~

网关,从本质上讲,也是一种反向代理的方式,但是网关会在反向代理的基础上增加一些从API创建到下线的全周期管理。总体上可以包含:API创建、流控管理、身份校验、风控管理、负载均衡、限流、熔断、降级、服务路由、认证、授权、和监控等等一系列的功能。

# 一、前言

将秒杀系统拆分成秒杀活动微服务、秒杀商品微服务、秒杀订单微服务、秒杀预约微服务、秒杀库存微服务和用户微服务之后,此时客户端调用接口时,还是直接调用每个微服务的接口。客服端以这种方式调用接口的话,是非常不方便的。需要引入网关来对这些微服务的API进行统一管理。

# 二、本章诉求

对网关进行简单的介绍,重点介绍几款主流的API网关,旨在让大家在自身实际场景下做API网关技术选型时,能够有所参考和依据。学会根据自身实际业务场景对API网关进行选型,并能够灵活应用到自身实际项目中。

# 三、网关概述

网关本质上也是一种反向代理,能够提供基本的服务路由功能。随着网关的不断发展,对于网关的要求已经远远不只反向代理和服务路由了。需要网关具备完整的API生命周期管理,总体上可以包含:API创建、流控管理、身份校验、风控管理、负载均衡、限流、熔断、降级、服务路由、认证、授权、和监控等等一系列的功能。

# 3.1 没有网关的弊端

当一个系统使用分布式、微服务架构后,系统会被拆分为一个个小的微服务,每个微服务专注一个小的业务。那么,客户端如何调用这么多微服务的接口呢?如果不做任何处理,没有服务网关,就只能在客户端记录下每个微服务的每个接口地址,然后根据实际需要去调用相应的接口。


这种直接使用客户端记录并管理每个微服务的每个接口的方式,存在着太多的问题。比如,这里我列举几个常见的问题。

  • 由客户端记录并管理所有的接口缺乏安全性。
  • 由客户端直接请求不同的微服务,会增加客户端程序编写的复杂性。
  • 涉及到服务认证与鉴权规则时,需要在每个微服务中实现这些逻辑,增加了代码的冗余性。
  • 客户端调用多个微服务,由于每个微服务可能部署的服务器和域名不同,存在跨域的风险。
  • 当客户端比较多时,每个客户端上都管理和配置所有的接口,维护起来相对比较复杂。

# 3.2 引入API网关

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码