从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
TRANSCRIPT
![Page 1: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/1.jpg)
从林书豪到全明星虎扑网技术架构如何化解流量高峰
虎扑网研发经理 洪涛ArchSummit 2012 深圳
![Page 2: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/2.jpg)
自我介绍
洪涛
8 年互联网开发多个大型网站架构经验2011 年初加入虎扑网主管研发和架构设计
![Page 3: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/3.jpg)
3
公司介绍
hupu.comAlexa 中国排名 90 左右流量:每天 1 亿 pv
![Page 4: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/4.jpg)
4
议程
•流量高峰从何而来?•处理流量高峰时的困扰•6 个能够化解流量高峰的技术•虎扑网在处理流量高峰时的一些经验
![Page 5: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/5.jpg)
5
![Page 6: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/6.jpg)
7
![Page 7: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/7.jpg)
8
从两次事件看虎扑网流量高峰的特点
•时间发生突然,流量增长迅猛–流量高峰对系统负载提出了严峻的考验
•比赛场次多、悬念大–技术角度无法预测何时出现流量高峰
•大部分比赛在中国时间的早晨–出现问题时无法人工干预并及时修复
![Page 8: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/8.jpg)
9
流量高峰从何而来?
•社会热点事件•体育赛事,明星•电商促销活动
–淘宝“双 11”、“抢红包”,京东“618”
•恶意攻击–黑客攻击–民间团体互掐
![Page 9: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/9.jpg)
10
大多数网站应对流量高峰的困扰
•缺少冗余服务器资源–流量高峰时没有额外资源用来提升系统性能
•无法预估流量高峰的发生时间–系统必须足够“智能”,在尽可能少干预的情况下发现流量高峰并且作出应对
•必须提供稳定服务–每次流量高峰都是机遇–网站的存活决定公司的生命
![Page 10: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/10.jpg)
11
虎扑网化解流量高峰的策略
•流量高峰发生前:–预先处理并缓存页面和数据–监控系统负载,判断流量高峰是否有发生的趋势
•流量高峰发生时:–尽可能多的利用所有服务器向用户提供服务–削减或调整不必要的服务
•流量高峰发生后:–及时恢复正常服务
![Page 11: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/11.jpg)
12
技术上如何化解流量高峰?
1.Shared-nothing 架构2.消息队列3.微缓存4.Edge Side Include5.NoSQL6.功能调节控制系统
![Page 12: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/12.jpg)
13
技术一: Shared-nothing 架构
![Page 13: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/13.jpg)
14
Shared-nothing 架构
•什么是 Shared-nothing ( SN )架构?–一个系统(网站)中的每一个节点(应用服务器)都是互相独立的,彼此之间没有竞争或冲突。
•SN 在现实生活中的例子–电驴, P2P–蚂蚁
![Page 14: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/14.jpg)
15
SN 架构如何化解流量高峰?
应用独立型架构 SN 架构
![Page 15: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/15.jpg)
16
SN 架构如何化解流量高峰?
•在传统的应用独立型架构中–系统的性能取决于“短板”节点
•在 SN 架构中–系统的性能是其所有节点性能的总和
![Page 16: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/16.jpg)
17
升级 SN 架构的三个关键问题
•如何管理 Session ?•如何统一网站应用?•如何部署应用?
![Page 17: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/17.jpg)
18
问题一:如何管理 Session ?
•SN 架构下管理 Session 的三种方案–通过区分 IP将用户分配到固定的服务器上
•分布不均匀,易用性差,无法应对复杂的网络环境•软件实现逻辑复杂,硬件实现价格昂贵
–使用外部数据库存储 Session•严格意义上并没有实现 SN
–将 Session 加密后存在 Cookie里•对 Session 数据的大小有限制•如何验证 Cookie 有效性?
![Page 18: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/18.jpg)
19
问题二:如何统一网站应用?
•使用统一的开发框架进行应用开发–虎扑网使用 Symfony 作为基础开发框架–虎扑网整个网站就是一个应用
•复杂的异构系统怎么办?–单机多实例–虚拟化
![Page 19: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/19.jpg)
20
问题三:如何部署 SN 架构下的网站应用?
•应用服务器数量多–如何快速升级应用到新版本?
•应用复杂度变高–如何验证代码的正确性?–发现问题后如何回滚?
•部署的新版本需要改变数据库结构怎么办?
![Page 20: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/20.jpg)
21
虎扑网的部署策略
1.部署过程可测试2.灰度部署3.发布前热机4.数据库结构调整策略
1.在 SQL语句中写全字段名2.字段调整尽量保证向前兼容
![Page 21: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/21.jpg)
22
虎扑网的部署工具
![Page 22: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/22.jpg)
24
技术二:消息队列
![Page 23: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/23.jpg)
25
使用消息队列后业务逻辑处理顺序的变化
使用消息队列前 使用消息队列后
![Page 24: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/24.jpg)
26
虎扑网对消息队列的要求
•提供多种消息分发方式•高性能•多语言支持•持久化支持•支持集群和扩展
![Page 25: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/25.jpg)
27
虎扑网的选择
![Page 26: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/26.jpg)
28
虎扑网已经部署 RabbitMQ至生产环境
![Page 27: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/27.jpg)
29
消息队列在虎扑网的应用
•发送邮件和站内短消息•图片处理•发送手机短信•用户访问数据的统计和分析•缓冲对数据库的大数据量写和更新操作•……
![Page 28: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/28.jpg)
30
某应用在部署消息队列后的负载曲线
部署消息队列前:平均压力 0.5峰值达到 2.7
部署消息队列后:平均压力 0.5无明显峰值
![Page 29: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/29.jpg)
31
消息队列如何化解流量高峰?
•减少“峰值效应”–性能需求从满足峰值降低到满足平均值
•系统运维难度降低–系统负载变得平缓,热数据不会突然大量出现
•更加合理利用资源–将一部分业务放在空闲时段处理–闲置的计算资源可以被充分利用起来
![Page 30: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/30.jpg)
32
技术三:微缓存
![Page 31: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/31.jpg)
33
经典的缓存方式
App(PHP-FPM)
Memcache
1.接受浏览器请求2.透传所有请求去访问 App3.App 判断 Cache 是否可用,如果不可用则生成 Cache 4. 如果 Cache 可用则获取 Cache 5.Web Server获取到 App返回的结果6.Web Server将结果返回给用户
Nginx
![Page 32: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/32.jpg)
34
什么是微缓存?
1.接受到大量请求 2a.透传其中的一个请求去访问 App 3a.将 App返回的结果写入 Cache 2b.直接从 Cache读取页面缓存 3b.将 Cache 的结果直接返回给用户
App(PHP-FPM)
Nginx
NginxCache
![Page 33: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/33.jpg)
35
微缓存的优势
•优势–部署简单
•使用时仅需配置前端反向代理(如 Nginx )–应用偶和度低
•不侵占应用 、不修改程序代码–页面更新速度快
•透传频率可调,最快每秒一次(以 Nginx为例)–即使访问量再大,程序运行次数依然是固定的
![Page 34: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/34.jpg)
36
微缓存的适用场景
•在同一时间点,用户访问某页面的结果相同–门户网站首页–新闻 /视频 /图片的评论、回复–论坛列表页、回复页–碎碎念(微博)–……
![Page 35: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/35.jpg)
37
技术四: ESI ( Edge Server Include )
![Page 36: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/36.jpg)
38
包含页面片段的三种解决方案
•Client Side Include–实现原理:通过 javascript 、 iframe 载入其他页面
•Edge Side Include–实现原理:通过 ESI标签中的 url地址获取页面嵌套内容
•Server Side Include–实现原理:通过 SSI标签中的文件地址获取页面嵌套内容
![Page 37: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/37.jpg)
39
ESI 和 SSI 的两点最重要的区别
•载入方式不同:–SSI只能加载静态文件和本地 HTTP地址–ESI 可以加载远程 HTTP地址,且可以设置 TTL 时间
•各类Web 服务软件的支持度不同–SSI 主要被用在各种Web 服务器上,例如 Nginx 、Apache
–ESI 主要被用在各种前端缓存服务器上,例如Varnish 、 Squid
![Page 38: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/38.jpg)
40
ESI 如何解决性能问题?
•为了显示页面中的动态元素–使用 ESI 前:
•通过 CSI 载入动态元素•频繁的重新生成静态页面或页面缓存
–使用 ESI 后:•通过 ESI请求一个接口,缓存并将页面进行组装•可以为不同的页面片段分别设定过期时间( TTL )
![Page 39: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/39.jpg)
41
页面头部TTL :永久
视频及播放数TTL : 5分钟
相关视频TTL : 60 分钟
留言TTL :新内容产生时
今日头条推荐TTL : 24小时
![Page 40: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/40.jpg)
42
ESI 应用的场景
•复杂页面(包含多个复杂组件)•分布式网站应用
–从远端服务器中获取页面数据–在本地服务器进行页面组装
•模拟多线程处理网页
![Page 41: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/41.jpg)
43
技术五: NoSQL
![Page 42: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/42.jpg)
44
虎扑网使用的 NoSQL 服务
•Memcache–30%
•Tokyo Tyrant–40%
•Redis–30%
•Mongodb–开发中的游戏项目正在内部试用
![Page 43: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/43.jpg)
45
虎扑网使用 NoSQL 的一些经验
•勤用 Redis 的数据结构解决各种问题。–List 可以当做简单的消息队列来使用–Sorted Set 用来存放各种排序数据
•使用 SSD 作为持久化的容器–虎扑网大量使用英某某公司的 520 系列
•Redisco–用 Redis模拟类 SQL操作的 Python类库
![Page 44: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/44.jpg)
46
Redisco
MySQL Redis(With Redisco)
select * from person.. Person.objects.all()
..where name = ‘a ’ Person.objects.filter(name='a')
..where name != ‘a ’ Person.objects.exclude(name='a')
..where age > 5 Person.objects.zfilter(age__gt=5)
..where name = ‘a ’ and age > 5 Person.objects.zfilter(name=‘a ’,age__gt=5)
..where name = ‘a ’ limit 0 1 Person.objects.all().limit(1)
..order by name Person.objects.all().order('name')
![Page 45: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/45.jpg)
47
技术六:功能调节控制系统
![Page 46: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/46.jpg)
48
作用
•调节应用与服务的复杂度•开启或关闭某个功能
![Page 47: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/47.jpg)
49
实际例子 1
•赛事文字直播–通过降低页面自动刷新的频率,增加系统相应能力
通过增加一倍的间隔时间,可服务用户数也会增加一倍假设:单台服务器可以提供 500 的 RPS
自动刷新间隔 可服务用户
12秒 12*500=6000
24秒 24*500=12000
![Page 48: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/48.jpg)
50
实际例子 2
•新闻留言–关闭复杂功能,增加系统性能
![Page 49: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/49.jpg)
52
功能调节控制系统的意义
•通过监测系统负载,调节各项影响性能的参数和配置,提高响应能力,使系统尽可能地服务更多的用户。
![Page 50: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/50.jpg)
53
虎扑网在处理流量高峰时的一些经验
•停止新版本的部署,保持线上环境稳定。•除非是紧急修复问题或提高性能的补丁
•禁止搜索引擎抓取页面。•禁止第三方网站的页面请求。•禁止访问次数过于频繁的 IP
•暂时封禁“过于活跃”的网站用户
![Page 51: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/51.jpg)
54
参考资料
• 虎扑网架构– 《 2011 架构师大会:虎扑网架构升级之路》 http://wenku.it168.com/d_000055728.shtml
– 《 2011 架构师大会:基于 Symfony框架下的快速企业级应用开发》 http://wenku.it168.com/d_000055742.shtml
• 林书豪– 《林书豪 - 百度百科》 http://baike.baidu.com/view/3143415.htm
– 《林书豪 -维基百科》 http://zh.wikipedia.org/zh/%E6%9E%97%E6%9B%B8%E8%B1%AA
• 季后赛– 《 NBA季后赛 -维基百科》 http://zh.wikipedia.org/wiki/NBA%E5%AD%A3%E5%90%8E%E8%B5%9B
• 网站流量高峰从何而来?恶意攻击– 《爆吧》 http://baike.baidu.com/view/423530.htm
• Shared-nothing– 《 Shared nothing architecture》 http://en.wikipedia.org/wiki/Shared-nothing
– 《 The Share-Nothing Architecture》 http://zef.me/883/the-share-nothing-architecture
– 《What is the best PHP MVC framework for scalability》 http://stackoverflow.com/questions/132056/what-is-the-best-php-mvc-framework-for-scalability
– 《 将 Session 加密在 Cookie里的 PHP实现: sfCookieSessionStoragePlugin》 http://plugins.symfony-project.org/get/sfCookieSessionStoragePlugin/sfCookieSessionStoragePlugin-0.9.2.tgz
• Webistrano– 《Webistrano - Capistrano deployment the easy way》 http://www.peritor.com/en/products/webistrano/
– 《 Capistrano》 https://github.com/capistrano/capistrano
![Page 52: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/52.jpg)
55
参考资料
• RabbitMQ– 《 rabbitmq.com》 http://www.rabbitmq.com/
– 《 Rabbitmq Client & Developer Tools》 http://www.rabbitmq.com/devtools.html
– 《 Rabbitmq in Action》 http://www.manning.com/videla/
• 微缓存– 《MICROCACHING: SPEED YOUR APP UP 250X WITH NO NEW CODE》 http://fennb.com/microcaching-speed-your-app-up-250x-with-
no-n
– 《Microcaching - Hacker News》 http://news.ycombinator.com/item?id=3109283
– 《 Nginx - HttpProxyModule》 http://wiki.nginx.org/HttpProxyModule
– 《 nginx microcaching config example》 https://gist.github.com/1283573
– 《Why You Should Always Use Nginx With Microcaching》 http://www.howtoforge.com/why-you-should-always-use-nginx-with-microcaching
• ESI– 《 ESI - 维基百科》 http://en.wikipedia.org/wiki/Edge_Side_Includes
– 《 Varnish-cache : ESI Features》 https://www.varnish-cache.org/trac/wiki/ESIfeatures
– 《 Varnish-cache: Tutorial ESI》 https://www.varnish-cache.org/docs/3.0/tutorial/esi.html
– 《 Apache Tutorial: Introduction to Server Side Includes》 http://httpd.apache.org/docs/2.2/howto/ssi.html
– 《 Symfony 2 - HTTP Cache》 http://symfony.com/doc/current/book/http_cache.html#edge-side-includes
– 《 How to use Varnish to speed up my Website》 http://symfony.com/doc/current/cookbook/cache/varnish.html
• NoSQL– 《 Redisco》 https://github.com/kiddouk/redisco
– 《 Introducing redisco - Python Containers and Simple Models for Redis》 http://www.timmedina.net/introducing-redisco-python-containers-and-sim
– 《 python使用 redis 神器 ---redisco》 http://pako.iteye.com/blog/1581139
![Page 53: 从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰](https://reader036.vdocuments.site/reader036/viewer/2022062312/5565ca69d8b42a8a7b8b49bb/html5/thumbnails/53.jpg)
谢谢 !Thanks!