由拜年红包引起的程序架构思考

  1. 引用场景
    春节期间朋友间相互发送红包表示问候,高峰期位于除夕和初一。

  2. 静态页面和数据分离
    前台展示采用纯静态页面,采用ajax异步处理数据。以便,ui变化时,快速地更新前台页面,并且方便地进行页面缓存。

  3. 采用nginx进行反向代理
    3.1 静态资源缓存
    比如缓存html、js、css等,便于减少对业务部门的请求压力。
    3.2 限流
    当请求超过一定阈值时,返回统一的错误码(或者统一的提示页面),这样当请求峰值超过后端业务部件的承受能力时(尤其是数据库的读写压力),进行降级处理,不致于压垮后面的部件。
    3.3 平滑升级
    业务升级时,设置不同的upstream策略,把业务请求导入到不同的业务部件中,这样可以轮流升级不同的业务部件,做到升级不中断业务。

  4. 缓存
    一般,数据库的读写是整个业务的瓶颈,尤其是读取远大于写入的场景下,可以使用缓存,减少数据库的读取压力。可以考虑使用内存数据库或者redis数据库。
  5. 全局锁
    涉及到多个用户同时操作的一致性问题,如多个用户同时拆去同一个红包时,需要采用全局锁,让用户串行操作,可以采用全局锁的方式进行(redis或者zookeeper),同时要注意所的粒度。
  6. 数据库
    合理设计数据库表的索引,拜年红包设计了常见操作表的索引后,cpu由200%左右快速到下降到60%左右。
    数据库前置添加缓存减少数据库的读取压力。
    当数据库添加了索引后,压力依然增大,需要采用分库分表的方式进行(采用阿里云的数据库可以快速的进行数据库扩容)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值