秒杀专题

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

2018-10-06  本文已影响133人  Steven_cao

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

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

与之类似

经验:

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

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

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

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

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

动静分离:

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

1、静态数据缓存:

2、动态内容处理:

优点:服务端性能有影响
缺点:用户体验好
优点:服务端性能更佳
缺点:用户页面可能会延时,体验稍差

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

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

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

处理热点数据几种思路 :

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

6、流量削峰

削峰的目的:

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

操作思路:

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

7、影响性能的因素:

系统服务端的性能:

  • QPS
  • RT-ResponseTime
上一篇 下一篇

猜你喜欢

热点阅读