zoukankan      html  css  js  c++  java
  • Go电商秒杀 (1)

    回答的问题

    1. 普通秒杀的业务逻辑
    2. 前端优化: 页面静态化,优化和原理
    3. 前端优化: CDN原理和阿里云CDN实践过程简述
    4. 后端优化: 架构调整(从单体架构到分布式架构)
    5. 后端优化: CDN,分布式权限验证集群,分布式数量控制集群,web服务器,Rabbitmq,mysql)
      5.1 权限验证集群: 一致性hash的原理,实现和主要应用场景。
      5.2 数量控制集群。Q: 为什么需要该数量控制集群?
      5.3 rabbitmq流量控制和确认模式。

    两篇文章

    1. 前端优化(本篇)
    2. 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

    • 项目目录结构

    1. backend目录: 独立资源。存放后台商品和订单模块的: 静态资源, controller, main.go入口(启动服务器和注册路由)
    2. frontend目录: 独立资源。存放前台用户和商品模块的: 静态资源, controller, main.go入口(启动服务器和注册路由)
    3. 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:

    1. 获取加速域名,把自己的域名提交给CDN服务提供商,由其分配一个加速域名。
    2. 给自己的域名添加CNAME记录(该记录值就是加速域名),CDN服务提供商会把该CNAME信息提交给权威DNS(根DNS,顶级DNS)
    3. 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:

    1. CDN 带宽费用。用户访问带来的 CDN 流量费用,由各 CDN 厂商收取
    2. 回源带宽费用。当 CDN 无法获取到对应图片时,回源到云存储获取,这部分回源带宽费用由云存储厂商收取。
    3. 存储空间费用。这一项费用由云存储厂商收取.

    参考

    1. CDN如何产生的,了解一下搭建一个 CDN 系统需要考虑哪两点
    2. 35 | 以绝对优势立足:从CDN和云存储来聊聊云生态的崛起
    3. DNS的记录类型和CNAME的作用
    4. 添加加速域名和配置CNAME
      RabbitMQ入门与使用篇
  • 相关阅读:
    jquery学习笔记
    javascript中的面向对象—— 学习1
    Sql Sever语句 (续2)
    Sql sever 常用语句(续)
    SqlSever 查询基本
    Microsoft SqlSever 数据库--软谋1
    如何编写高质量的Javascript代码
    要当好JavaScript程序员:5个debug技巧
    深入理解js构造函数
    命名空间$.fn
  • 原文地址:https://www.cnblogs.com/yudidi/p/12504374.html
Copyright © 2011-2022 走看看