你真的懂Spring Cloud+Nginx秒杀实战,Nginx高性能秒杀和限流吗?

本文介绍了Nginx在秒杀场景中的高性能限流和秒杀实现,包括两种架构:Nginx限流+Zuul认证路由+微服务秒杀,以及Nginx限流+Lua脚本秒杀。重点讲解了如何通过Lua脚本在Nginx中执行分布式限流和获取秒杀令牌,以及如何在Redis中缓存和调用Lua脚本。同时提到了JWT认证在高性能学习案例中的省略。
摘要由CSDN通过智能技术生成

Nginx高性能秒杀和限流

从性能上来说,内部网关Zuul限流理论上比外部网关Nginx限流的性能会差一些。和Zuul一样,外部网关Nginx也可以通过Lua脚本的形式执行缓存在Redis内部的令牌桶限流脚本来实现分布式限流。

Nginx秒杀限流有两种架构,分别说明如下:

1.Nginx限流+Zuul认证和路由+seckill-provider微服务秒杀

这种架构属于非常典型的Nginx+Spring Cloud微服务架构,限流的逻辑处于外部网关Nginx,用户的权限认证处于内部网关Zuul,而获取秒杀令牌的逻辑处于seckill-provider微服务中。

这种典型的Nginx+Spring Cloud微服务架构的秒杀流程如图10-14所示。

 

图10-14 Nginx+Spring Cloud微服务架构的秒杀流程

2.Nginx限流+Lua脚本秒杀

这种架构属于高性能的秒杀架构,不只是限流的逻辑处于外部网关Nginx,就连获取秒杀令牌逻辑也处于外部网关Nginx。和上一种秒杀架构相比,这种纯Nginx+Lua架构绝对能提高性能。为什么呢?因为除了Nginx本身的高性能之外,纯Nginx+Lua架构还能减少两次网络传输,而网络传输都是耗时较高的操作。

Nginx+Lua架构的秒杀流程如图10-15所示。

 

图10-15 Nginx+Lua架构的秒杀流程

由于学会了第二种纯Nginx+Lua架构的实现,第一种架构的实现也就迎刃而解了,因此这里为大家展开介绍第二种架构的具体实现。纯Nginx+Lua架构的实现涉及以下两个Lua脚本:

(1)getToken.lua:此脚本完成秒杀令牌的设置和获取。

(2)getToken_access_limit.lua:此脚本完成分布式限流。

以上两个脚本中,getToken.lua执行在Nginx请求处理的content阶段,getToken_access_limit.lua执行在Nginx请求处理的access阶段,

两个脚本在nginx-seckill.conf文件中的具体配置如下:

 #Nginx+lua秒杀:获取秒杀token
 location = /seckill-provider/api/seckill/redis/token/v2 {
 default_t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值