秒杀抢购项目学习笔记(持续更新)

关于两周的秒杀抢购项目学习笔记

QPS&PV的运算

请添加图片描述

SPU&SKU

请添加图片描述

如何快速熟悉一个项目

请添加图片描述

项目内容

系统架构

请添加图片描述

功能架构

请添加图片描述

技术架构

请添加图片描述

环境准备

请添加图片描述

业务流程

请添加图片描述请添加图片描述

数据库内容

数据模型

在这里插入图片描述

表内容

  • tb_sku
    在这里插入图片描述
  • tb_order
    在这里插入图片描述

表字段分析

在这里插入图片描述

使用域名访问服务

在这里插入图片描述

为什么不用 IP 访问

在这里插入图片描述

提高性能策略

将数据从 MySQL 批量保存到 elasticSearch

在这里插入图片描述

在这里插入图片描述

提升导入性能(进一步提升整体性能)

在这里插入图片描述

数据迁移策略

在这里插入图片描述

将数据从 MySQL 迁移至 ES 索引库中,提升查询速度,实际上也是在提升性能

前端页面高QPS优化

在这里插入图片描述

数据直接查询 MySQL 及查询优化
  • 查询优化:

使用索引(主要手段)
使用慢查询定位较慢的sql,在使用EXPLAIN进行分析
优化数据库结构(表拆分,使用中间表)
数据分库(sharding-jdbc操作多数据库)
使用查询缓存(MySQL8已废弃)

  • 适用场景:

用户数量少
交互的数据量小
要求成本低
开发周期短

页面数据使用 Redis 缓存,提高访问速度
  • 适用场景:

查询频率高
性能高、并发用户高
减轻数据库压力

  • 缺点:

成本高
数据双写不一致问题
redis并发竞争问题

页面静态化+Nginx,再次提高访问速度
  • 适用场景:

性能的优先级高(秒杀)
需要减轻后台服务压力
SEO搜索引擎优化

  • 缺点:

可能需要大量硬盘
增加开发复杂度(例如翻页)
静态页过多会增加运维管理成本
数据实时性较差,不适合频繁操作

静态化+Nginx+CDN,流量分流和内容加速

在这里插入图片描述

CDN(内容分发网络)—— 由分布在不同区域的节点服务器群组成的分布式网络
  • 优点:

提高企业站点的访问速度
不同运营商的用户同样快速
请求分流,减轻原站点web服务器的负载
有效防止恶意攻击

  • 缺点:

成本较高
CDN服务商在某些地方可能没有服务器
CDN服务商可能被政府禁用IP
网站文件的安全性(需要交给第三方CDN)

  • 注册并上传资源到CDN

注册七牛云账户
创建空间
上传静态资源到空间中

  • 修改静态页html

在FreeMarker模板中,静态资源url改为CDN
重新生成静态页html

数据同步和访问日志实时收集

Canal数据同步

  • Canal介绍

canal,译意为水道/管道/沟渠
主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
在这里插入图片描述

  • 数据实时同步
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

索引+静态页动态更新

  • Elastic-Job介绍

ElasticJob 是一个分布式调度解决方案,由 2 个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。
ElasticJob-Lite 定位为轻量级无中心化解决方案,使用jar的形式提供分布式任务的协调服务;ElasticJob-Cloud 使用 Mesos 的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。
ElasticJob 的各个产品使用统一的作业 API,开发者仅需要一次开发,即可随意部署。
在这里插入图片描述

  • 索引+静态页动态更新
    在这里插入图片描述
    在这里插入图片描述

访问日志实时收集

  • 开发分析
    在这里插入图片描述
    在这里插入图片描述

  • 开发环境准备
    在这里插入图片描述

  • Lua+Kafka收集日志
    在这里插入图片描述

负载均衡

OSI七层网络

物理层:
  • 物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输;
  • 将数据转化成0和1
数据链路层:
  • 数据链路层通过物理网络链路提供数据传输。不同的数据链路层定义了不同的网络和协议特征,包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控;
  • 规定了0和1的分包形式,确定了网络数据包的形式
网络层:
  • 网络层负责在源和终点之间建立连接;
  • 需要确定计算机的位置,IPv4,IPv6
传输层:
  • 传输层向高层提提供可靠的端到端的网络数据流服务。
  • 每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信(常用的 TCP/IP 协议)
会话层:
  • 会话层建立、管理和终止表示层与实体之间的通信会话;
  • 建立一个连接(自动的网络寻址)
表示层:
  • 表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;
  • 例如Linux下的QQ和Windows下的QQ可以通信(不同系统之间的通信)
应用层:
  • OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等;

负载均衡分类

二层负载均衡(mac)
  • 根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应
三层负载均衡(ip)
  • 一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应
  • 即一个ip对一个ip的转发, 端口全放开
四层负载均衡(tcp)
  • 在三次负载均衡的基础上,即从第四层"传输层"开始, 使用"ip+port"接收请求,再转发到对应的机器。
七层负载均衡(http)
  • 从第七层"应用层"开始, 根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。

负载均衡算法

在这里插入图片描述

extra

修改ip

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值