秒杀系统笔记——持续更新....

1、秒杀要解决的两个问题:

  • 并发读

并发读核心优化理念:减少用户到服务器端读数据,或让他们读更少的数据。

  • 并发写

与之类似

经验:

架构师要打造并维护一个超大流量并发读写、高性能、高可用得系统,请求到服务端要遵循几个原则:请求数据少,请求数少,路径尽量短,依赖尽量少,不要有单点

2、秒杀的整体架构可以概括为“稳、准、快”几个关键字

  • 稳(高可用):

    整个系统架构满足高可用,流量符合预期时肯定要稳定,超出预期时也不能掉链子,
  • 准(一致性):

    保证数据一致性
  • 快(高性能):

    性能要足够高,服务器要做到极致的性能优化,请求链路上都要协同的优化

3、秒杀注意的5个架构原则(4要1不要):

  • 数据要尽量少
    请求的数据能少则少(原因:服务器在写网络时要做压缩和字符编码,这些会消耗CPU);系统依赖的数据能少则少(原因:调用其他服务会涉及序列化反序列化,消耗CPU)
  • 请求数要尽量少
    CSS/JavaScript、图片、以及Ajax请求,每多一个请求会有一些消耗,建立连接需要三次握手等
  • 路径要尽量短
    经过中间的节点数要少
  • 依赖要尽量少
    完成一次用户请求必须依赖系统或服务,强依赖
  • 不要有单点
    避免将服务的状态和机器绑定,把服务无状态化。

4、如何才能做好动静分离?方案有哪些?

动静分离:

  即把用户请求的数据(HTML页面)划分为动态数据和静态数据。

1、静态数据缓存:

  • 把静态数据缓存到离用户最近的地方(用户浏览器、CDN、服务端的Cache中)
  • 缓存HTTP连接

2、动态内容处理:

  • ESI方案(SSI) 在Web代理服务器上做动态内容请求,并将请求插入到静态页面中
优点:服务端性能有影响
缺点:用户体验好
  • CSI方案 单独发起一个异步JavaScript请求
优点:服务端性能更佳
缺点:用户页面可能会延时,体验稍差

3、动静分离的几种架构方案

  • 实体单机部署
  • 统一Cache层
  • 上CDN

5、二八原则:有针对性地处理好系统的“热点数据”

热点分:热点操作 和 热点数据

处理热点数据几种思路 :

  • 优化 缓存热点数据,可采用LRU淘汰算法替换
  • 限制 保护机制,ID做一致性Hash
  • 隔离 将热点数据隔离出来,不要让1%的请求影响到另外99%业务
  • 业务隔离 提前报名,可以提交预热数据
  • 系统隔离 与另外的业务分开部署,申请单独域名
  • 数据隔离 启用单独的Cache集群或者MySQL数据库来存放热点数据

6、流量削峰

削峰的目的:

可以让服务端处理变得更加平稳
可以节省服务器资源成本

操作思路:

  • 排队、 消息队列 、线程池加锁、先进先出、请求序列化到文件中,再顺序文件
  • 答题、防止作弊、延缓请求
  • 分层过滤(漏斗)

7、影响性能的因素:

系统服务端的性能:

  • QPS
  • RT-ResponseTime
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容