秒杀系统
文章目录
前言
秒杀是电商项目中的常见场景,如XX手机12点限量半价抢购等。该场景在极短的时间内涌入大量的请求,来同时访问有限的服务资源,从而造成系统负载压力大,甚至导致系统服务瘫痪以及宕机的可能。本文会介绍秒杀系统中存在的痛点以及针对这些点的优化思路。
一、秒杀系统架构探讨
秒杀系统的难点之一是短时间内高并发下,会产生商品超卖问题。比如A商品200个库存,同一时间3个用户对数据库发起请求,发现有200个库存,然后大家都对库存减1,为199,实际库存应该为200-3=197.解决这个问题的方案之一是给mysql加锁,但是给mysql加锁会产生锁竞争问题,一个线程只有等另一个线程执行完操作后才能访问数据库,从而导致
用户等待时间延长,在高并发场景下该问题尤为严重。为解决该问题,提前将库存信息存入redis中,并加上redisson分布式锁,利用semaphore信号量来表示库存的数量。秒杀系统的难点之二是高并发下,系统负载压力大。那么首先要让用户从redis中抢商品库存,只有抢到库存的用户才有资格下订单,另外使用RabbitMQ来实现队列泄洪,确保数据库来的及处理消息。
二、使用步骤
1.引入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。