前端设计要点
静态文件打包
- 压缩图片等静态文件
- 小于1000kb的文件都可以考虑将所有的东西打入到html文件中。小文件直接打入js、小js、css文件直接打入html,传输开启gzip可以实现3-10倍的压缩比率。250kb平均价在时间在2秒以内。
静态资源上传到的CDN
- 在业务开放前提早开展CDN预热
离线化存储
- 很多APP已经具备文件离线化能力,可以提早将文件加载到用户本地的APP
如果有node
- 通过SSR降低首屏加载速度。SSR实际的使用场景并不多。
- 用好缓存。可缓存的数据放在redis上,读取<10ms响应速度很快。
后端设计要点
限流
- nginx层可以做限流
负载均衡
- DNS层:配置多条A记录解析到不同的负载机器
- 每个服务水平扩展机器
用好队列
通过消息队列缓冲并发压力。
数据库
- 提高并发:使用乐观锁;优化表;优化事务等。
相关资料
- 秒杀系统解决方案 - 黑客派
- OpenResty
- OpenResty的
lua-resty-limit-traffic
模块可以用于限流 - OpenResty实现限流的几种方式 | youyu岁月
- WTF is OpenResty? The world's fifth-most-used Web server, that's what! • The Register
- OpenResty® - 中文官方站
- OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
- OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型。
- OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。
- OpenResty 究竟解决了什么痛点? - 知乎
- OpenResty的
- Nginx
- 本身有两种限速方式,超出限制的请求会直接拒绝,可防御简单的cc攻击:
- 按连接数限速(ngx_http_limit_conn_module)
- 按请求速率限速(ngx_http_limit_req_module)
- Tengine/Nginx限速简介及配置 - For XX
- Nginx限速模块初探 - CarpenterLee - 博客园
- Nginx限流控制 | 羊八井花园
- 本身有两种限速方式,超出限制的请求会直接拒绝,可防御简单的cc攻击:
- 网络传输中常用两个的流量控制算法:漏桶算法和令牌桶算法。
- 阿里Tengine