Youp(orn)网站架构
来源:互联网 发布:4g语音与数据 编辑:程序博客网 时间:2024/04/28 22:51
你应该能料到,Youp(orn)是个怪兽,其Alexa世界排名在100左右,目前平均每日PV约4000万,且全球访问分布比较均衡。
一些中国的门户网站或许不屑一顾了,我们这里PV早就上亿。拜托,你那是托了中国人口红利的福,不是技术上有多好。
考虑到全球1/5人口被挡在城墙后面,Youp(orn)能达到这样的访问当量,可见 ‘色即是量,量即是色’乃是和德赛一样的普适价值。
想象一下,Youp(orn)每秒传输3部完整DVD的数据流,每秒处理30万查询,并产生了15gbs日志数据每小时!
Youp(orn)刚开始的技术架构是基于Perl的,后来由于性能问题,转为用PHP重新编写,排名类似的FFN旗下的A(dult)FriendFinder也是这样的技术变迁过程。
Youp(orn)沿袭了传统的LAMP架构,其中MySQL被调整为Redis,Apache调整为Nginx。
下面提供更多的细节:
统计数据
- 2006年创建,2011年被收购
- 2008年达到1亿PV每天
- 每秒300K的查询
- 100Gb每秒-3部完整的DVD
- 每小时8GB-15GB的日志
技术堆栈
- 一开始是Perl(Catalyst)
- 现在用PHP-FPM(FastCGI Process Manager)
- HAProxy
- ActiveMQ
- Varnish
- Redis
- Nginx
- MySQL
- Syslog-ng
- Symfony2 - 高性能PHP框架,注意这里Symfony的版本是2,2被重写,性能得到很大的提高
架构
- 伟大的技术转型. 整个网站在2011年用PHP重写,替代了复杂的Perl架构,使用Redis替换了MySQL,并使用了ActiveMQ.
- 目标达到 2亿+ 每日请求
- 迁移了6年的历史数据而没有停机
- 新网站整体性能提高了10%
- 转型过程比预期的要长:
- 必须决定选用什么样的技术
- 团队学习曲线比预期更长
- 迁移和重新组织MySQL的数据到Redis
- 人员变迁
- 目标达到 2亿+ 每日请求
- HAProxy - 提供负载均衡,智能负载分发,以及健康检查
- 维护了2个服务器池: 主备故障转移。
- Varnish - 作为反向代理提高服务速度并降低服务器负载. 也被用作缓存, 边界包含代理(ESIs), 和健康检查.
- Syslog-ng - 收集PV数据和视频点击数据.
- Nginx - 高性能WEB应用服务器,并被用作静态资源(css/js/images)的外部CDN.
- Symfony - 一个快速的,功能丰富,类库众多的开发框架.
- 考虑使用Symfony2 + Redis = 快速开发 + 可扩展 - 一个很好的平衡.
- 喜欢依赖注入特性.
- 使用框架并不意味着牺牲性能,只要你在它前面构建好强大的架构.
- ActiveMQ - 消息总线, 用来向MySQL和Redis写入数据.
- 他们发现维护一个单独的Java基础组件对于一个总是变化的网站显得太过僵硬而且收益寥寥。
- 会重新评估,也许是技术使用的问题而不是技术本身的问题
- Redis - 一个快速、开源的键值存储。现在已经作为主数据源来使用。
- 实时更新.
- 有序集被用于所有的列表
- Pipelining, 使用一个单一的原子命令来执行多条Redis命令对于性能至关重要。
- 在技术切换后,使用了更多的Redis节点, 不是因为Redis过载了, 而是因为网卡速度不能跟上Redis.
- 所有的读操作都放在Redis上
- MySQL被用来在需求变化时构建新的有序集
- Append-only-file (AOF) 格式被使用来作增量备份, 没有任何的IO问题
- 考虑使用Redis放在一个Redis持久存储前面作为临时缓存,这样可以提高性能和减少负载。
- MySQL - 用于为Redis提供支持数据
- 没有被网站直接使用,高度标准化
- 有些表存有1亿条以上的数据行
- 用来产生Redis列表数据
- 开发管理工具 - GIT/SVN
- CMS - CMS中使用了Doctrine. 节约了几周的开发时间。
iefreer
- Youp(orn)网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 网站架构
- 数据库查询2
- Exercises 4-12
- Floyd 算法深究
- 电子游戏能改变人的大脑
- vs中,在ASPX文件下面有智能提示,但是为什么新建一个类,却没了智能提示
- Youp(orn)网站架构
- Android Service
- 互联网技术网站
- 听到大师兄的事情
- 在Android上使用Http客户端的选择(译文)
- 50个必备的实用jQuery代码段
- Android4.04下载源码图解~解决公网IP不能直接访问问题
- 在repeater中实现radiobutton单选
- V4L2视频采集与H.264编码源码大放送:Linux视频采集与编码(三)