Go电商秒杀 (1)
回答的问题
- 普通秒杀的业务逻辑
- 前端优化: 页面静态化,优化和原理
- 前端优化: CDN原理和阿里云CDN实践过程简述
- 后端优化: 架构调整(从单体架构到分布式架构)
- 后端优化: CDN,分布式权限验证集群,分布式数量控制集群,web服务器,Rabbitmq,mysql)
5.1 权限验证集群: 一致性hash的原理,实现和主要应用场景。
5.2 数量控制集群。Q: 为什么需要该数量控制集群?
5.3 rabbitmq流量控制和确认模式。
两篇文章
- 前端优化(本篇)
- Go秒杀服务端优化
准备
mysql,rabbitmq
Docker 安装 MySQL
Docker 安装部署RabbitMQ
设置账号密码权限
"amqp://imoocuser:imoocuser@192.168.244.1:5672/imooc"
amqp://用户:密码@IP:5672/virtual host
新增virtual host并设置用户,才能连接rabbitmq
2. web框架
-
理论
MVC
GO语言web开发框架,Iris 急速入门 -
实例演示
-
Iris路由: Q: url和controller是怎么联系上的
// 参考: go_seckill/imooc-iris和Cap1573Code/9.前端静态化代码
Party路由分组,是看不到显示的url的,是通过解析函数名来完成url路径和处理函数的对应的。
3. backend开发
后台管理系统(CRUD): 商品模块+订单模块
4. frontend开发
前台用户接口(PC端): 登录接口+商品详情页面接口+下单接口
-
cookie,session
参考下一篇预备知识 // TODO -
项目目录结构
- backend目录: 独立资源。存放后台商品和订单模块的: 静态资源, controller, main.go入口(启动服务器和注册路由)
- frontend目录: 独立资源。存放前台用户和商品模块的: 静态资源, controller, main.go入口(启动服务器和注册路由)
- services目录: 共享资源。存放业务逻辑代码, 被backend和frontend的controller共享
(base) didis-mbp:7.前台用户登陆 didiyu$ tree -L 4 -d
.
├── backend
│ ├── main.go // main.go和web目录同级
│ └── web
│ ├── assets
│ │ ├── css
│ │ ├── img
│ │ ├── js
│ │ └── lib
│ ├── controllers
│ └── views
│ ├── order
│ ├── product
│ └── shared
├── common
├── datamodels
├── encrypt
├── fronted
│ ├── main.go // main.go和web目录同级
│ ├── middleware
│ │ └── auth.go
│ └── web
│ ├── controllers
│ ├── public
│ │ ├── css
│ │ ├── fonts
│ │ ├── img
│ │ └── js
│ └── views
│ ├── shared
│ ├── template
│ └── user
├── repositories
├── services
└── tool
-
Q: 目录结构这样是为啥?
-
高并发情况下去掉session,因为对性能影响大
-
旧架构的缺点
5. 新的秒杀架构
https://coding.imooc.com/lesson/347.html#mid=26343
6. 前端优化
1. 页面静态化
2. CDN
参考附录1
Q: 为什么需要CDN
Q: 搭建一个CDN系统需要考虑的点
Q: 主要流程
Q: 配置过程 // 附录4
A:
- 获取加速域名,把自己的域名提交给CDN服务提供商,由其分配一个加速域名。
- 给自己的域名添加CNAME记录(该记录值就是加速域名),CDN服务提供商会把该CNAME信息提交给权威DNS(根DNS,顶级DNS)
- ping自己的域名,验证CNAME配置是否生效。新增CNAME记录会实时生效,修改CNAME记录72小时之内生效。
2+. DNS的记录类型和CNAME的作用
附录3
Q: CNAME怎么添加的? // 附录4
域名添加成功后,阿里云CDN会分配对应的CNAME地址。如果您想启用CDN加速服务,则需要将加速域名指向CNAME地址,访问加速域名的请求才能转发到CDN节点上,达到加速效果。本文档以您的域名在阿里云解析(原万网)为例。
Q: CNAME怎么起作用的? Q: CDN的域名解析和普通域名解析的不同步骤是哪些? // 附录3
[扩展] 3. CDN生态和成本构成
附录2
Q: 以图片业务为例,说明云生态中CDN和云存储的配合?
Q: CDN的成本构成和成本的?
A:
- CDN 带宽费用。用户访问带来的 CDN 流量费用,由各 CDN 厂商收取
- 回源带宽费用。当 CDN 无法获取到对应图片时,回源到云存储获取,这部分回源带宽费用由云存储厂商收取。
- 存储空间费用。这一项费用由云存储厂商收取.