互联网创业的准备——架构
《互联网创业的准备》系列文章——http://cnblogs.com/sink_cup/
鸣谢:
小米的哥们:幸福小小明 http://blog.exephp.com/
1、技术练手网站
练手学习技术时一般只购买1台vps,架构简单如下图。
这个简单的图里面隐含了太多的未知不可控:
用vps还是云主机?
请看:《互联网创业的准备——依赖服务》 http://www.cnblogs.com/sink_cup/archive/2012/09/14/vps_cloud_host.html
用apache还是nginx,并发多少?
用数据说话,请看:《互联网创业的准备——web server》 http://www.cnblogs.com/sink_cup/archive/2012/09/14/web_server.html
mysql并发多少?
用数据说话,请看:《互联网创业的准备——数据库》 http://www.cnblogs.com/sink_cup/archive/2012/09/17/ssd_iops_sql_nosql.html
在技术练手时多折腾才能积累技术:IPv6、免费DNS(比如dnspod.cn)、免费试用CDN(比如七牛qiniutek.com)。
由于存在这么多隐患,作为练手网站可以,作为创业网站太危险。
2、创业
如果有个很小很好的创意,盈利不足以全职投入,或者有建站程序可以实现无需开发,一个人或几个人利用空闲时间就能完成,这种个人网站的架构很简单,只要注意数据备份即可,免得一夜回到过去……
知名个人网站参考:
内容 | 盈利模式 | 盈利规模 | 程序 | |
cnbeta.com | it新闻 | 自动广告 | 自行开发 | |
qiushibaike.com糗事百科 | 24小时内最最尴尬的糗事 | 自动广告 | 2011年6月 10w/月 | 自行开发 |
bookfor.us摆摆书架 | 分享闲书,免费借阅他人分享的书籍 | 未知 | 自行开发 | |
jandan.net煎蛋 | 以译介方式传播网络新鲜资讯 | 自动广告 | wordpress | |
HDChina.org高清 | PT | 影音器材人工广告 | Discuz、Nexus Project | |
chinahdtv.org中国高清网 | PT | 自有淘宝店高清硬盘拷贝及器材销售 | Nexus Project | |
chdtv.com chdbits.org | BT、PT | 同上 | Discuz、Nexus Project |
PV 1k级:
创业刚起步时,或者业余微创意网站,流量低,PV几百几K。
数据库备份:crontab mysqldump scp,请看《互联网创业的准备——数据备份》 http://www.cnblogs.com/sink_cup/archive/2012/09/14/web_backup.html
文件备份:crontab scp
架构:
PV 1w:
PV 1w时,网站脱离了试验田,活下来了。如果是PT这种细分网站,可以通过销售器材盈利了。
这时候可以考虑使用云数据库服务,不用担心备份了。
数据库备份:云数据库自动备份
文件备份:crontab scp
架构:
PV 10w - 50w:
PV 10w时,需要考虑带宽了,请看:《互联网创业的准备——带宽与CDN》 http://www.cnblogs.com/sink_cup/archive/2012/09/14/web_bandwidth.html 。
这时可以考虑使用CDN了,10w/天 * 100K * 31天 = 31G,按流量结算CDN价格低,为¥20/月。根据流量情况,可以考虑开启防盗链。
根据sar的CPU、内存、iowait日志,购买更好的vps。
PV 100w:
静态服务器使用独立域名,而不是主站的二级域名,这样请求静态资源时不会带着cookie,节省用户上传带宽,提升速度。
PV 100w时,热门并发为15个/s。对数据库压力很小。web server的压力也小,但是用户量这么大了,要考虑单点故障,所以web server使用负载均衡,提高服务可用性。
数据库备份:云服务自动备份
静态文件备份:云服务自动备份
架构:
以PV来做架构,都是传统web服务,即使达到数千万PV,使用云服务也没问题。
因为传统web服务并发量低,对数据库的压力小。请看《互联网创业的准备——数据库》 http://www.cnblogs.com/sink_cup/archive/2012/09/17/ssd_iops_sql_nosql.html。
比如Instagram使用Amazon云服务,达到820w UV,假设是5000w PV,并发量才 5000w / (15小时 * 3600) = 900,并发很低。
参考《Instagram 架构分析笔记》:http://www.dbanotes.net/arch/instagram.html
如果要做电商,要做“秒杀”服务,就是另外一种架构了。
淘宝的架构已经演进多年了,可以用来参考:http://www.alidata.org/archives/1789。
第一次做秒杀如何预估并发?
做预约,像小米1S在2012年8月23进行抢购,提前几天进行开放预约,预约人数大概为160w。
预约可以知道多少人很感兴趣,其中又只有一部分人会按时抢购。
如果不做预约,有论坛互动,根据论坛PV UV也可以预估。根据微博转发奖励也可获得一定的数据。
并发10w:
按小米1S在2012年9月6号的抢购来看,假设有50w人开着浏览器倒计时。
小米是分批抢购,20w台9分40秒抢购结束,如果是正常的抢购,流程如下:
第1步:倒计时结束,ajax取回购买链接,1秒内返回。
ajax是准时的,并发请求50w——web server并发50w,检查session 并发50w(如果使用memcache session或者mongo session,要测试nosql并发。如果使用无需存储的加密仿session,需要测试cpu能承受多少并发计算加密对比)。
无cookie时,http request header约250Byte,带cookie时更大,这里按300Byte计算,需要带宽:0.3K * 50w = 150 MB/s = 1200 Mbps
http response header约260Byte,服务器返回购买uri约100Byte,需要带宽:0.36Byte * 50w = 180 MB/s = 1440 Mbps
第2步:根据各人反应时间不同,2秒内全部点击抢购。
并发请求25w/s——web server并发25w,检查session并发25w,
mysql方案1:count < 20w ——》 insert,返回id即排名。查询25w/s,写入20w/s。
mysql方案2:提前写入20w数据,user_id为空,update ——》 select查排名。写入20w/s,查询20w/s。
2种方案的数据库并发写入都要达到20w/s。折合硬盘iops为10w,如果像淘宝一样采用15K转速的SAS盘,需要15块做Raid10,成本为¥2.2k * 15 = ¥33K。如果使用Intel 710 SSD,需要5块做Raid10,成本为¥2.5 * 5 = ¥12.5K。
架构:
团队人多了,就需要考虑后勤,请看《互联网创业的准备——后勤》 http://www.cnblogs.com/sink_cup/archive/2012/09/14/pc_mac_linux.html。
其他todo:沟通工具、bug系统、审核系统、代码书写规范
参考资料:
http://www.dbanotes.net/arch/instagram.html
http://www.oschina.net/news/17509/opensource-used-in-facebook
http://zhiyi.us/internet/thinking-twice-before-building-your-site-one.html