您的位置:首页 > 运维架构 > 网站架构

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

2017-01-30 11:09 169 查看
引用场景

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

静态页面和数据分离

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

采用nginx进行反向代理

3.1 静态资源缓存

比如缓存html、js、css等,便于减少对业务部门的请求压力。

3.2 限流

当请求超过一定阈值时,返回统一的错误码(或者统一的提示页面),这样当请求峰值超过后端业务部件的承受能力时(尤其是数据库的读写压力),进行降级处理,不致于压垮后面的部件。

3.3 平滑升级

业务升级时,设置不同的upstream策略,把业务请求导入到不同的业务部件中,这样可以轮流升级不同的业务部件,做到升级不中断业务。

缓存

一般,数据库的读写是整个业务的瓶颈,尤其是读取远大于写入的场景下,可以使用缓存,减少数据库的读取压力。可以考虑使用内存数据库或者redis数据库。

全局锁

涉及到多个用户同时操作的一致性问题,如多个用户同时拆去同一个红包时,需要采用全局锁,让用户串行操作,可以采用全局锁的方式进行(redis或者zookeeper),同时要注意所的粒度。

数据库

合理设计数据库表的索引,拜年红包设计了常见操作表的索引后,cpu由200%左右快速到下降到60%左右。

数据库前置添加缓存减少数据库的读取压力。

当数据库添加了索引后,压力依然增大,需要采用分库分表的方式进行(采用阿里云的数据库可以快速的进行数据库扩容)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: