• 博文
  • 归档
  • 生活
  • 读书
  • 关于
  • Promise知识汇总以及面试情况

    2021-06-25

    次访问

    写在前面

    Javascript异步编程先后经历了四个阶段,分别是Callback阶段,Promise阶段,Generator阶段和Async/Await阶段。Callback很快就被发现存在回调地狱和控制权问题,Promise就是在这个时间出现,用以解决这些问题,Promise并非一个新事务,而是按照一个规范实现的类,这个规范有很多,如 Promise/A,Promise/B,Promise/D 以及 Promise/A 的升级版 Promise/A+,最终 ES6 中采用了 Promise/A+ 规范。后来出现的Generator函数以及Async函数也是以Promise为基础的进一步封装,可见Promise在异步编程中的重要性。

    关于Promise的资料已经很多,但每个人理解都不一样,不同的思路也会有不一样的收获。这篇文章会着重写一下Promise的实现以及笔者在日常使用过程中的一些心得体会。

    ...more
  • Redis应用实战 - 秒杀场景(Node.js版本)

    2021-06-25

    次访问

    写在前面

    公司随着业务量的增加,最近用时几个月时间在项目中全面接入Redis,开发过程中发现市面上缺少具体的实战资料,尤其是在Node.js环境下,能找到的资料要么过于简单入门,要么名不副实,大部分都是属于初级。因此决定把公司这段时间的成果进行分享,会用几篇文章详细介绍Redis的几个使用场景,期望大家一起学习、进步。
    下面就开始第一篇,秒杀场景。

    业务分析

    实际业务中,秒杀包含了许多场景,具体可以分为秒杀前、秒杀中和秒杀后三个阶段,从开发角度具体分析如下:

    1. 秒杀前:主要是做好缓存工作,以应对用户频繁的访问,因为数据是固定的,可以把商品详情页的元素静态化,然后用CDN或者是浏览器进行缓存。
    2. 秒杀中:主要是库存查验,库存扣减和订单处理,这一步的特点是
      • 短时间内大量用户同时进行抢购,系统的流量突然激增,服务器压力瞬间增大(瞬时并发访问高)
      • 请求数量大于商品库存,比如10000个用户抢购,但是库存只有100
      • 限定用户只能在一定时间段内购买
      • 限制单个用户购买数量,避免刷单
      • 抢购是跟数据库打交道,核心功能是下单,库存不能扣成负数
      • 对数据库的操作读多写少,而且读操作相对简单
    3. 秒杀后:主要是一些用户查看已购订单、处理退款和处理物流等等操作,这时候用户请求量已经下降,操作也相对简单,服务器压力不大。

    根据上述分析,本文把重点放在秒杀中的开发讲解,其他部分感兴趣的小伙伴可以自己搜索资料,进行尝试。

    开发环境

    数据库:Redis 3.2.9 + Mysql 5.7.18
    服务器:Node.js v10.15.0
    测试工具:Jmeter-5.4.1

    ...more

分类归档

标签云

ES6 Javascript Mysql Node.js Promise Redis 异步 秒杀

最近文章

  • Promise知识汇总以及面试情况
  • Redis应用实战 - 秒杀场景(Node.js版本)

© 2016 - 2021 刘小磊, powered by Hexo
and hexo-theme-bubuzou

闽ICP备16007301号-2