浪潮王春生 听云应用性能管理大讲堂首期新浪微博亿级架构的秘密(新浪 王春生)
--------------------------Page1------------------------------新浪微博亿级架构的秘密关注于高性能、可扩展、可监控的架构设计Sina.王春生@平凡的香草--------------------------Page2------------------------------新浪微博2014年3月MAU达到1.
43亿2014年春节第一分钟发送微博达808298条2015年2月18日零点至春晚结束,微博日活跃用户超过1.
02亿如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大系统进行支撑--------------------------Page3------------------------------手机微博现状移动业务重要性不断提升来自移动的请求已经占到了80%以上每天80亿的Hits前端机有近1000台爆炸式增长凸现MAPI的问题•服务器压⼒⼤•移动机房4月最低到5%--------------------------Page4------------------------------手机微博架构变迁IDC架构移动联通数据海外中心平台Wifi-接口电信SSL--------------------------Page5------------------------------手机微博架构变迁IDC内部MonitorHaProxyFastloganalizerNginx php-fpmLogfastLogLogsearchcollecterforwarderfastcgYafYariZendO JsondHadoop&SLAMRreport--------------------------Page6------------------------------架构细节(7层)HaproxyNginxHAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理快速并且可靠的一种解决方案。
HAProxy特别适用于那些负载特大的web站点HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接Nginx作为7层可提供更灵活的配置Nginx可以提供更加灵活的二次开发接口(cmodule、luamodule)两者皆可以将日志进行自动分级并通过syslog协议传输--------------------------Page7------------------------------架构细节-web服务层Nginx php-fpm异步–单机承载更多连接,弥补并行化的吞吐下降,有利于长连接配置编程–更高的配置灵活性二次开发–唯一请求ID,替代部分7层功能php-fpm提供灵活、高效的phpfastcgi机制进程池动态进程池(更节省内存)静态进程池(更加高效和稳定)php-fpm提供slowlog提供php运行的backstrace堆栈日志可进行分析并监控性能--------------------------Page8------------------------------架构细节—web服务层php-fpmslowlog--------------------------Page9------------------------------架构细节—web服务层--------------------------Page10------------------------------架构细节—web服务层--------------------------Page11------------------------------架构细节—代码框架层Yaf--YetAnotherFramework第一个C语⾔言扩展框架,解决经典的是否使用框架争论兼容PSR0的自动加载基于命名空间的⽂文件目录组织高性能的PHP模板引擎--------------------------Page12------------------------------架构细节-业务逻辑层Weibo扩展WeiboConf1.
在PHP进程启动的时候Parse2.Fork的时候利用COW,⽽而避免使用共享内存3.
Lookup只需要⼀一个zval的复制(时间复杂度,空间复杂度O(1))WeiboUtils1.运算密集型/PHP脚本⽆无法实现的功能2.业务⽆无关性3.IDencode,At,Link,Topic…--------------------------Page13------------------------------架构细节-引擎加速ZendO 替换APC