# 《Seckill秒杀系统》第91章:流量网关环境初步搭建

作者:冰河
星球: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)

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

  • 本章难度:★★☆☆☆
  • 本章重点:掌握流量网关的技术选型,按照文章步骤一步步搭建流量网关,掌握流量网关与业务网关的区别,并能够将流量网关应用到自身实际项目中。

大家好,我是冰河~~

业务网关基本能够保护秒杀系统的各个微服务项目不受突然的瞬时高并发流量的影响,但是对秒杀系统的整个交易链路来说,只是提供业务网关是远远不够的。要知道秒杀的场景中,瞬时流量是非常巨大的,其中,对于秒杀系统的攻击流量和刷单流量也是非常巨大的,最好将这些刷单流量和攻击流量进行前置处理。也就是说,将无效请求流量前置到秒杀系统交易链路的入口处进行处理。

# 一、前言

秒杀系统整合业务网关后,起到了一定的流控作用,对秒杀系统起到了一定的防护作用。但是着眼整个秒杀交易链路来说,只是有业务网关是远远不够的,我们还需要引入流量网关。

对于秒杀交易链路来说,流量网关比业务网关更加前置化,也就是说,流量网关是秒杀交易链路的入口,在秒杀交易链路的入口处前置化处理刷单流量和攻击流量,将大部分刷单流量和攻击流量挡在整个秒杀交易链路之外。进一步保障整个秒杀交易链路的稳定性和可靠性。

# 二、本章诉求

为秒杀系统引入流量网关,首先对流量网关进行选型,随后搭建流量网关基础环境,对搭建的流量网关基础环境进行测试,通过对流量网关的了解,最终能够在自身实际项目中灵活使用流量网关。

这里,可以再回顾下我们秒杀系统的架构图,如下所示。


具体可以参见:《第6章:秒杀系统总体方案目标与架构设计 (opens new window)》的内容,这里不再赘述。

# 三、流量网关选型

流量网关选型的一个重要前提就是网关要能够承载超大流量,并且性能要高,占用的资源要少。众所众知,Nginx作为大部分互联网项目的负载均衡和反向代理服务器,其承载高并发、大流量的能力,以及高性能和资源占用少是有目共睹的。所以,我们在对流量网关进行选型时,主要是基于Nginx实现的网关进行选型。

基于Nginx实现的网关,常见的就是OpenResty和Kong网关,接下来我们就对二者进行简单的对比。

# 3.1 Nginx

无论是OpenResty还是Kong网关,其底层都是基于Nginx实现,在正式介绍OpenResty和Kong网关之前,我们先来简单介绍下Nginx。

Nginx是一个高性能的HTTP反向代理Web服务器,Nginx可以作为一个独立的Web服务器使用,也可以作为反向代理服务器与其他Web服务器配合使用。Nginx可以支持路由转发、负载均衡、SSL加密、TLS加密、能够预防网络攻击。同时,也支持URL重写,HTTP授权、HTTP/2 Server Push等等高级功能。

注意:更多Nginx实战相关的内容,大家可以参考冰河整理的《Nginx核心技术 (opens new window)》。

对于Nginx来说,最重要的就是nginx.conf配置文件,nginx中所有的重要特性都可以在nginx.conf中进行配置,总体上会包含如下核心模块。

  • 全局配置模块配置:Nginx的全局配置模块,可以配置Nginx的进程数,输出日志的目录和日志级别,工作进程数量,以及CPU绑核等。
  • events模块配置:主要配置Nginx的进程连接数等信息。
  • HTTP模块:主要配置Nginx请求相关的配置,例如监听的域名、端口号、反向代理等等。

# 3.2 OpenResty

# 查看完整文章

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