SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
美丽说的架构发展
   与变迁
               演讲者:⺩王曦




     Copyright	
  ©2012	
  Meilishuo.com	
  
                                           1
故事,是这样开始的…
    	
  




             2
2009年11月,我们有了⼀一个想法



⽤用最⽜牛逼的技术,
     	
  

帮助⼥女孩⼦子变漂亮




                     3
在一个居民楼里开始了我们的旅程




         北京海淀区华清嘉园2号楼905

                           4
美丽说:Connect	
  woman	
  and	
  all	
  beau<ful	
  things

•      美丽说是中国最大的女性时尚购物社区	
  
•      我们是帮助女孩子变漂亮的地方	
  
•      我们的目标用户是5000万的白领和准白领女性	
  
•      从第一天起,我们帮她们解决“怎么穿?哪里买”的问题	
  
	
  
•      我们用最好的互联网技术重塑女性时尚行业	
  
•      我们是时尚女	
  +	
  技术男	
  =	
  Zara	
  +	
  Apple	
  

•  我们带给女孩子最美的自己,我们拥抱中国时尚行业成长	
  


                                                                  5
浏览器插件:快速验证了用户需求
•    IE浏览器插件
•    获取⽤用户正在浏览的⺴⽹网址
•    整合⼀一个聊天室的功能
•    可以现实商品的图⽚片、
     描述、价格等信息
•    ⼏几⼗十个试⽤用⼥女孩⼦子
•    让⼥女⽣生上班的时候也有
     逛街的感觉
•    ⼏几周内迅速⽕火爆
•    ⼥女孩⼦子是有需求的

                       6
7
终于决定做网站了
•  当时的产品被定位成⼀一个“垂直的微博”
 –  开源还是⾃自⼰己写代码?
•  ⼀一切决策来源于时间
   点的要求
•  开源的其实还挺好⽤用的
•  最终还是决定⾃自⼰己来写J



                         8
9
开始于LAMP
•  10年1与到10年3月,            PHP
   2个月的开发时间
•  纯LAMP架构                MYSQL	
  
                      商品 图片 用户 关系
•  Insert/select的结构
   维护各种关系
                          APACHE
•  没有使⽤用Memcache
   等技术
                           Linux
•  基于正则表达式的爬
   ⾍虫

                                      10
第一个问题出现了
•  图⽚片太多了,⼀一台服务器放不下
•  考虑硬盘损坏的问题,图⽚片⻓长期放在⼀一
   个机器上⾯面也不保险,需要有冗余

•  解决⽅方法其实有很多种,但是我们选择
   了最悲剧的⼀一种:
 –  ⽐比如NFS
 –  ⽐比如TFS
 –  但是我们选择了moose FS……
                          11
第一次架构演化
                       SQUID


           APACHE              APACHE(静态文件)


            PHP            mooseFS文件系统(mount)


MEMCACHE

      MYSQL                    mooseFS	
  MASTER



                         mooseFS SLAVE      mooseFS SLAVE   mooseFS SLAVE
              SPHINX


                                                                    12
出现问题
•  Moose fs Master 只能有⼀一台
•  Moose FS master使⽤用内存来维护⽂文件
   索引,⼀一个机器的内存只有8G,moose F
   S⾃自⼰己就⽤用了9G,系统变得很慢
•  ⽤用户访问⽂文件的时候会卡死
•  从⽽而导致moose FS master死机
•  死机后恢复内存索引要若干⼩小时
•  然后继续出问题
                                13
第二次架构演化

           APACHE        SQUID           Nginx


            PHP         APACHE     MEMCACHE+FASTCGI


MEMCACHE                静态文件	
  
                         CSS+JS
      MYSQL
                                       mlsDB	
  
                                   把碎片文件存储成若干
                                      个大的文件

              SPHINX



                                                      14
Happy	
  Problem
•  ⽤用户的发⾔言每天越来越多,数据表达到上亿⾏行
•  ⼩小红⼼心是⽤用户表达的⼀一种重要⼿手段,⾼高峰时段会出现写瓶
   颈
•  ⽤用户快速增⻓长,⽤用户的关系数据也越来越多,SELECT/
   INSERT的⽅方法获取⽤用户TIMELINE效率极低,经常卡死
   数据库




                                  15
解决方法
•  MYSQL中间层-数据托管服务的出现(内
   部代号:STORAGE)
•  使⽤用Redis存储⽤用户的Timeline数据
•  使⽤用Redis存储⽤用户的⼩小红⼼心表达
•  使⽤用Redis存储⽤用户和⽤用户直接的关系
•  异步的⽅方式写回数据库,保存数据完整性



                              16
第三次架构演化
                      NGINX


MEMCACHE
                     FASTCGI
 REDIS




           数据库A       STORAGE      SPHINX


                  REDIS


                          数据库B_1
                      数据库B_2
                   数据库B_3
                                            17
稳定性和访问速度变得很重要
•  系统问题	
  
  –  单点故障问题	
  
  –  国内复杂的网络环境	
  
  –  内网带宽竟然不够了!	
  
•  整站依然经常崩溃	
  
  –  慢SQL查询,造成数据库卡死	
  
  –  问题代码上线后会导致整个系统崩溃	
  
•  出现问题后很难快速定位问题并解决	
  

                            18
解决方法
•  买了很多服务器	
  
•  网络设备上面千万不能马虎
   ,一定要用IDC使用的专业设
   备(背板带宽很重要)	
  
•  使用CDN提供图片服务,主ID
   C只做数据源	
  
•  使用脚本野蛮绞杀运行时间超
   过5S的SQL	
  
•  重新思考我们的架构,如何
   更加稳定?	
  
•  希望通过SOA的方法来给服务
   解耦合	
  



                     19
2012年1月设计的一张架构设想图




                    20
第四次架构演化

PHP前端àNode.JS                  无线API
                                                  图片服务	
  
                                                 图片数据源
小红心    用户管理           	
  
                    消息读写      用户关系          私信
                       	
  
                       	
                             	
  
评论                                                Redis代理
                                                      	
  
                      API                             	
  
                                                      	
  
                                                  Cache代理
                      	
                              	
  
数据库    Storage      搜索        队列            爬虫
                       	
                             	
  
                       	
                             	
  
图片处理             九宫格服务        ANTI-­‐SPAM         并发代理
                       	
                             	
  
                    平台服务                          基础服务




                                                             21
前后端彻底分离
•  从前在一起的时候,使用的是传统的MVC结构,前端其实就
   是指:JS+CSS+Smarty模板部分。J
•  后来我们把他们分开了,变成了前端+API的形式
•  新前端使用node.js,一个最大特点就是:支持事件驱动(并
   发)
•  前端分开以后,前端和后端可以分开上线
•  后端更focus在数据逻辑、数据流转和数据处理上面
•  前端更focus在客户端逻辑和性能上面

               数据可以并发获取


   Node.js前端              PHP	
  API




                                       22
请求一




请求二



请求三



请求四




请求五


      23
24
九图合一




九宫格服务




        25
ANTI-­‐SPAM
•    WEB2.0注射很烦⼈人,美丽说⼯工程师很⽣生⽓气	
  
•    刷排名	
  
•    注册用户	
  
•    广告信息	
  
•    黄反信息	
  

      NGINX日志     ANTI-­‐SPAM模块   前端



                                       26
27
多地IDC的实现
   	
                                 	
  
   	
                                 	
  
   	
   Redis代理             Redis写队列  	
  
   	
                                 	
  
   	
                                 	
  
Redis写队列
   	
                     Redis代理 	
  
   	
                                 	
  
   	
                                 	
  
   	
                                 	
  
   	
                                 	
  
   	
                                 	
  
   	
  MYSQL	
  master                	
  
                         MYSQL	
  master
   	
                                 	
  
   	
                                 	
  
   	
                                 	
  
   	
                                 	
  
本地机房                              外地机房
                                             28
其他几点经验分享
•  监控很重要,要尽早做	
  
 –  服务的存活	
  
 –  硬盘空间	
  
 –  内网的带宽	
  
•  最初的方法简单可依赖就行,不要追求
   架构完美	
  



                       29
关于技术团队
•  创业公司技术团队的特点:
    –  ⼈人员年轻,缺乏经验
    –  ⼤大家有热情,干劲⼗十⾜足
•  着重培养有潜⼒力的⼈人,某⼀一⽅方⾯面的技术专家很重要
•  有进步要⿎鼓励、有错误要惩罚,切忌拔苗助⻓长
•  极致细节,培养责任感
•  明确时间点和优先级
•  尽量缩短项⺫⽬目的周期
•  Leader⼀一定要多读⼯工程师的代码,及时发现问题及时指正


                                30
⼀一些数据分享
•    2009年11月,6个⼈人的公司
•    2009年12月,浏览器插件上线
•    2010年3月8⽇日⺴⽹网站正式上线
•    2011年10月,流量和⽤用户爆发式增⻓长
•    2012年11月,美丽说整整三年

•    3亿 Request/天
•    ⾼高峰时段:5000 Request/秒 ,21点-23点
•    300万⼩小红⼼心/天
•    200万⽤用户分享/天

                                     31
Q	
  &	
  A




              32
谢谢⼤大家




        33
美丽说的架构发展与变迁 New

Weitere ähnliche Inhalte

Was ist angesagt?

深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS國昭 張
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 Chao Zhu
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011Yiwei Ma
 
一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈Liang Xie
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率Chao Zhu
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践drewz lin
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维Jinrong Ye
 
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 SaacChao Zhu
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇國昭 張
 
MySQL运维那些事
MySQL运维那些事MySQL运维那些事
MySQL运维那些事Jinrong Ye
 
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)Zhaoyang Wang
 
海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)
海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)
海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)Zhaoyang Wang
 
MySQL数据库设计、优化
MySQL数据库设计、优化MySQL数据库设计、优化
MySQL数据库设计、优化Jinrong Ye
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题XiaoJun Hong
 
我们的MySQL
我们的MySQL我们的MySQL
我们的MySQLJinrong Ye
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平drewz lin
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统美团点评技术团队
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构XiaoJun Hong
 

Was ist angesagt? (20)

深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
 
一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
 
MySQL设计、优化、运维
MySQL设计、优化、运维MySQL设计、优化、运维
MySQL设计、优化、运维
 
中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac中大型规模的网站架构运维 Saac
中大型规模的网站架构运维 Saac
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇
 
MySQL运维那些事
MySQL运维那些事MySQL运维那些事
MySQL运维那些事
 
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
 
海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)
海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)
海通证券数据库备份恢复云平台实践(OTN Tour Shanghai 2017)
 
MySQL数据库设计、优化
MySQL数据库设计、优化MySQL数据库设计、优化
MySQL数据库设计、优化
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
 
我们的MySQL
我们的MySQL我们的MySQL
我们的MySQL
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
美团技术沙龙04 美团下一代分布式存储系统
美团技术沙龙04   美团下一代分布式存储系统美团技术沙龙04   美团下一代分布式存储系统
美团技术沙龙04 美团下一代分布式存储系统
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 

Ähnlich wie 美丽说的架构发展与变迁 New

大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路jeffz
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)Shanda innovation institute
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案 Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案 drewz lin
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享vanadies10
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)锐 张
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pubChao Zhu
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08drewz lin
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
七牛云存储详解
七牛云存储详解七牛云存储详解
七牛云存储详解niuer7
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用iammutex
 
Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructurekyhpudding
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseJack Gao
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年yp_fangdong
 
Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Cheng Feng
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 

Ähnlich wie 美丽说的架构发展与变迁 New (20)

大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案 Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
七牛云存储详解
七牛云存储详解七牛云存储详解
七牛云存储详解
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
 
Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructure
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
App house
App houseApp house
App house
 
Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
 
Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 

美丽说的架构发展与变迁 New

  • 1.
  • 2. 美丽说的架构发展 与变迁 演讲者:⺩王曦 Copyright  ©2012  Meilishuo.com   1
  • 5. 在一个居民楼里开始了我们的旅程 北京海淀区华清嘉园2号楼905 4
  • 6. 美丽说:Connect  woman  and  all  beau<ful  things •  美丽说是中国最大的女性时尚购物社区   •  我们是帮助女孩子变漂亮的地方   •  我们的目标用户是5000万的白领和准白领女性   •  从第一天起,我们帮她们解决“怎么穿?哪里买”的问题     •  我们用最好的互联网技术重塑女性时尚行业   •  我们是时尚女  +  技术男  =  Zara  +  Apple   •  我们带给女孩子最美的自己,我们拥抱中国时尚行业成长   5
  • 7. 浏览器插件:快速验证了用户需求 •  IE浏览器插件 •  获取⽤用户正在浏览的⺴⽹网址 •  整合⼀一个聊天室的功能 •  可以现实商品的图⽚片、 描述、价格等信息 •  ⼏几⼗十个试⽤用⼥女孩⼦子 •  让⼥女⽣生上班的时候也有 逛街的感觉 •  ⼏几周内迅速⽕火爆 •  ⼥女孩⼦子是有需求的 6
  • 8. 7
  • 9. 终于决定做网站了 •  当时的产品被定位成⼀一个“垂直的微博” –  开源还是⾃自⼰己写代码? •  ⼀一切决策来源于时间 点的要求 •  开源的其实还挺好⽤用的 •  最终还是决定⾃自⼰己来写J 8
  • 10. 9
  • 11. 开始于LAMP •  10年1与到10年3月, PHP 2个月的开发时间 •  纯LAMP架构 MYSQL   商品 图片 用户 关系 •  Insert/select的结构 维护各种关系 APACHE •  没有使⽤用Memcache 等技术 Linux •  基于正则表达式的爬 ⾍虫 10
  • 12. 第一个问题出现了 •  图⽚片太多了,⼀一台服务器放不下 •  考虑硬盘损坏的问题,图⽚片⻓长期放在⼀一 个机器上⾯面也不保险,需要有冗余 •  解决⽅方法其实有很多种,但是我们选择 了最悲剧的⼀一种: –  ⽐比如NFS –  ⽐比如TFS –  但是我们选择了moose FS…… 11
  • 13. 第一次架构演化 SQUID APACHE APACHE(静态文件) PHP mooseFS文件系统(mount) MEMCACHE MYSQL mooseFS  MASTER mooseFS SLAVE mooseFS SLAVE mooseFS SLAVE SPHINX 12
  • 14. 出现问题 •  Moose fs Master 只能有⼀一台 •  Moose FS master使⽤用内存来维护⽂文件 索引,⼀一个机器的内存只有8G,moose F S⾃自⼰己就⽤用了9G,系统变得很慢 •  ⽤用户访问⽂文件的时候会卡死 •  从⽽而导致moose FS master死机 •  死机后恢复内存索引要若干⼩小时 •  然后继续出问题 13
  • 15. 第二次架构演化 APACHE SQUID Nginx PHP APACHE MEMCACHE+FASTCGI MEMCACHE 静态文件   CSS+JS MYSQL mlsDB   把碎片文件存储成若干 个大的文件 SPHINX 14
  • 16. Happy  Problem •  ⽤用户的发⾔言每天越来越多,数据表达到上亿⾏行 •  ⼩小红⼼心是⽤用户表达的⼀一种重要⼿手段,⾼高峰时段会出现写瓶 颈 •  ⽤用户快速增⻓长,⽤用户的关系数据也越来越多,SELECT/ INSERT的⽅方法获取⽤用户TIMELINE效率极低,经常卡死 数据库 15
  • 17. 解决方法 •  MYSQL中间层-数据托管服务的出现(内 部代号:STORAGE) •  使⽤用Redis存储⽤用户的Timeline数据 •  使⽤用Redis存储⽤用户的⼩小红⼼心表达 •  使⽤用Redis存储⽤用户和⽤用户直接的关系 •  异步的⽅方式写回数据库,保存数据完整性 16
  • 18. 第三次架构演化 NGINX MEMCACHE FASTCGI REDIS 数据库A STORAGE SPHINX REDIS 数据库B_1 数据库B_2 数据库B_3 17
  • 19. 稳定性和访问速度变得很重要 •  系统问题   –  单点故障问题   –  国内复杂的网络环境   –  内网带宽竟然不够了!   •  整站依然经常崩溃   –  慢SQL查询,造成数据库卡死   –  问题代码上线后会导致整个系统崩溃   •  出现问题后很难快速定位问题并解决   18
  • 20. 解决方法 •  买了很多服务器   •  网络设备上面千万不能马虎 ,一定要用IDC使用的专业设 备(背板带宽很重要)   •  使用CDN提供图片服务,主ID C只做数据源   •  使用脚本野蛮绞杀运行时间超 过5S的SQL   •  重新思考我们的架构,如何 更加稳定?   •  希望通过SOA的方法来给服务 解耦合   19
  • 22. 第四次架构演化 PHP前端àNode.JS 无线API 图片服务   图片数据源 小红心 用户管理   消息读写 用户关系 私信       评论 Redis代理   API     Cache代理     数据库 Storage 搜索 队列 爬虫         图片处理 九宫格服务 ANTI-­‐SPAM 并发代理     平台服务 基础服务 21
  • 23. 前后端彻底分离 •  从前在一起的时候,使用的是传统的MVC结构,前端其实就 是指:JS+CSS+Smarty模板部分。J •  后来我们把他们分开了,变成了前端+API的形式 •  新前端使用node.js,一个最大特点就是:支持事件驱动(并 发) •  前端分开以后,前端和后端可以分开上线 •  后端更focus在数据逻辑、数据流转和数据处理上面 •  前端更focus在客户端逻辑和性能上面 数据可以并发获取 Node.js前端 PHP  API 22
  • 25. 24
  • 27. ANTI-­‐SPAM •  WEB2.0注射很烦⼈人,美丽说⼯工程师很⽣生⽓气   •  刷排名   •  注册用户   •  广告信息   •  黄反信息   NGINX日志 ANTI-­‐SPAM模块 前端 26
  • 28. 27
  • 29. 多地IDC的实现           Redis代理 Redis写队列           Redis写队列   Redis代理                        MYSQL  master   MYSQL  master                 本地机房 外地机房 28
  • 30. 其他几点经验分享 •  监控很重要,要尽早做   –  服务的存活   –  硬盘空间   –  内网的带宽   •  最初的方法简单可依赖就行,不要追求 架构完美   29
  • 31. 关于技术团队 •  创业公司技术团队的特点: –  ⼈人员年轻,缺乏经验 –  ⼤大家有热情,干劲⼗十⾜足 •  着重培养有潜⼒力的⼈人,某⼀一⽅方⾯面的技术专家很重要 •  有进步要⿎鼓励、有错误要惩罚,切忌拔苗助⻓长 •  极致细节,培养责任感 •  明确时间点和优先级 •  尽量缩短项⺫⽬目的周期 •  Leader⼀一定要多读⼯工程师的代码,及时发现问题及时指正 30
  • 32. ⼀一些数据分享 •  2009年11月,6个⼈人的公司 •  2009年12月,浏览器插件上线 •  2010年3月8⽇日⺴⽹网站正式上线 •  2011年10月,流量和⽤用户爆发式增⻓长 •  2012年11月,美丽说整整三年 •  3亿 Request/天 •  ⾼高峰时段:5000 Request/秒 ,21点-23点 •  300万⼩小红⼼心/天 •  200万⽤用户分享/天 31
  • 33. Q  &  A 32