百万级访问网站前期的技术准备(上)

  开了自己域名的博客,第一篇就得来个重磅一点的才对得起这4美金的域名。作为一个技术从业者十年,逛了十年发现有些知识东一榔头西一棒槌的得满世界 看个遍才整理出个头绪,那咱就系统点的从头一步一步的说,一个从日几千访问的小小网站,到日访问一两百万的小网站,怎么才能让它平滑的度过这个阶段,别在 技术上出现先天不足,写给一些技术人员,也写给不懂技术的创业者。

  对互联网有了解的人都有自己的想法,有人就把想法付诸实现,做个网站然后开始运营。其实从纯网站技术上来说,因为开源模式的发展,现在建一个小网站 已经很简单也很便宜。当访问量到达一定数量级的时候成本就开始飙升了,问题也开始显现了。因为带宽的增加、硬件的扩展、人员的扩张所带来的成本提高是显而 易见的,而还有相当大的一部分成本是因为代码重构、架构重构,甚至底层开发语言更换引起的,最惨的就是数据丢失,辛辛苦苦好几年,一夜回到创业前。

  减少成本就是增加利润。很多事情,我们在一开始就可以避免,先打好基础,往后可以省很多精力,少操很多心。假设你是一个参与创业的技术人员,当前一穷二白,什么都要自己做,自己出钱,初期几十万的资金,做一个应用不是特别复杂的网站,那么就要注意以下几点:

  一、开发语言

  一般来说,技术人员(程序员)创业都是根据自己技术背景选择自己最熟悉的语言,不过考虑到不可能永远是您一个人写程序,这点还得仔细想想。无论用什么语言,最终代码质量是看管理,所以我们还是从纯语言层面来说实际一点。现在流行的java、php、.net、python、ruby都有自己的优劣,python和ruby,现在人员还是相对难招一些,性能优化也会费些力气,.net平台买不起windows server。java、php用的还是最多。对于初期,应用几乎都是靠前端支撑的网站来说,php的优势稍大一些,入门简单、设计模式简单、写起来快、 性能足够等,不过不注重设计模式也是它的劣势,容易变得松散,隐藏bug稍多、难以维护。java的优势在于整套管理流程已经有很多成熟工具来辅助,强类 型也能避免一些弱智BUG,大多数JAVA程序员比较注重设计模式,别管实不实际,代码格式看起来还是不错的。这也是个劣势,初学者可能太注重模式而很难 解决实际需求。

  前端不只是html、css这类。整个负责跟用户交互的部分都是前端,包括处理程序。这类程序还是建议用php,主要原因就是开发迅速、从业人员广泛。至于后端例如行为分析、银行接口、异步消息处理等,随便用什么程序,那个只能是根据不同业务需求来选择不同语言了。

  二、代码版本管理

  如果开发人员之间的网络速度差不多,就SVN;比较分散例如跨国,就hg。大多数人还是svn的。

  假设选了svn,那么有几点考虑。一是采用什么树结构。初期可能只有一条主干,往后就需要建立分支,例如一条开发分支,一条上线分支,再往后,可能 要每个小组一个分支。建议一开始人少时选择两条分支,开发和线上,每个功能本地测试无误后提交到开发分支,最后统一测试,可以上线时合并到上线分支。如果 喜欢把svn当做移动硬盘用,写一点就commit一次也无所谓,就是合并的时候头大一些,这些人可以自己建个分支甚至建立个本地代码仓库,随便往自己的 分支提交,测试完毕后再提交到开发分支上。

  部署,可以手工部署也可以自动部署。手工部署相对简单,一般是直接在服务器上svn update,或者找个新目录svn checkout,再把web root给ln -s过去。应用越复杂,部署越复杂,没有什么统一标准,只要别再用ftp上传那种形式就好,一是上传时文件引用不一致错误率增加,二是很容易出现开发人员 的版本跟线上版本不一致,导致本来想改个错字结果变成回滚的杯具。如果有多台服务器还是建议自动部署,更换代码的机器从当前服务池中临时撤出,更新完毕后 再重新加入。

  不管项目多小,养成使用版本管理的好习惯,最起码还可以当做你的备份,我的 http://zhiyi.us 虽然就是一个wordpress,可还是svn了,只改动一两句css那也是劳动成果。

  三、服务器硬件

  别羡慕大客户和有钱人,看看机房散户区,一台服务器孤独的支撑的网站数不清。如果资金稍微充足,建议至少三台的标准配置,分别用作web处理、数据 库、备份。web服务器至少要8G内存,双sata raid1,如果经济稍微宽松,或静态文件或图片多,则15k sas raid1+0。数据库至少16G内存,15k sas raid 1+0。备份服务器最好跟数据库服务器同等配置。硬件可以自己买品牌的底板,也就是机箱配主板和硬盘盒,CPU内存硬盘都自己配,也可以上整套品牌,也可 以兼容机。三台机器,市场行情6、7万也就配齐了。

  web服务器可以既跑程序又当内存缓存,数据库服务器则只跑主数据库(假如是MySQL的话),备份服务器干的活就相对多一些,web配置、缓存配置、数据库配置都要跟前两台一致,这样WEB和数据库任意一台出问题,把备份服务器换个ip就切换上去了。备份策略,可以drbd,可以rsync,或者其他的很多很多的开源备份方案可选择。rsync最简单,放cron里自己跑就行。备份和切换,建议多做测试,选最安全最适合业务的,并且尽可能异地备份。

  四、机房

  三种机房尽量不要选:联通访问特别慢的电信机房、电信访问特别慢的联通机房、电信联通访问特别慢的移动或铁通机房。那网通机房呢?亲,网通联通N久以前合并改叫联通了。多多寻找,实地参观,多多测试,多方打探,北京、上海、广州等各个主节点城市,还是有很多优质机房的,找个网络质量好,管理严格的机房,特别是管理要严格,千万别网站无法访问了,打个电话过去才知道别人维护时把你网线碰掉了,这比DOS都头疼。自己扯了几根光纤就称为机房的,看您抗风险程度和心理素质了。机房可以说是非常重要,直接关系到网站访问速度,网站访问速度直接关系到用户体验,我可以翻墙看风景,但买个网游vpn才能打开你这 个还不怎么知名的网站就有难度了。或许您网站的ajax很出色,可是document怎么也不ready,一些代码永远绝缘于用户。

  五、架构

  初期架构一般比较简单,web负载均衡+数据库主从+缓存+分布式存储+队列。大方向上也确实就这几样东西,细节上也无数文章都重复过了,按照将来 会有N多WEB,N多主从关系,N多缓存,N多xxx设计就行,基本方案都是现成的,只是您比其他人厉害之处就在于设计上考虑到缓存失效时的雪崩效应、主 从同步的数据一致性和时间差、队列的稳定性和失败后的重试策略、文件存储的效率和备份方式等等意外情况。缓存总有一天会失效,数据库复制总有一天会断掉, 队列总有一天会写不进去,电源总有一天会烧坏。根据墨菲定律,如果不考虑这些,网站早晚会成为茶几。

  六、服务器软件

  Linux、nginx、php、mysql,几乎是标配,我们除了看名字,还得选版本。Linux发行版众多,只要没特殊要求,就选个用的人最多的,社区最活跃的,配置最方便的,软件包最全最新的,例如debian、ubuntu。 至于RHEL之类的嘛,你用只能在RHEL上才能运行的软件么?剩下的nginx、php、mysql、activemq、其他的等等,除非你改过这些软 件或你的程序真的不兼容新版本,否则尽量版本越新越好,版本新,意味着新特性增多、BUG减少、性能增加。总有些道听途说的人跟你说老的版本稳定。所谓稳 定,是相对于特殊业务来说的,而就一个php写的网站,大多数人都没改过任何服务器软件源代码,绝大多数情况是能平稳的升级到新版本的。类似于jdk5到 jdk6,python2到python3这类变动比较大的升级还是比较少见的。看看ChangeLog,看看升级说明,结合自己情况评估一下,越早升级 越好,别人家都用php6写程序了这边还php4的逛游呢。优秀的开源程序升级还是很负责任的,看好文档,别怕。

  以上这六点准备完毕,现在我们有了运行环境,有了基本架构骨架,有了备份和切换方案,应该开始着手设计开发方面的事情了。开发方面的事情无数,下一篇会先说一些重点。

  原文地址:http://zhiyi.us/internet/thinking-twice-before-building-your-site-one.html

  转载请注明出自zhiyi.us。

时间: 2024-07-31 12:16:35

百万级访问网站前期的技术准备(上)的相关文章

C#或者delphi如何怎么模拟几百万IP访问网站

问题描述 最近在想一个东西,就是写一个模拟百万IP访问网站,并且每个IP可以持续点击产生后续行为,请问应该怎么入手?还有百万IP怎么实现,从哪儿找这个资源,或者谁知道,谢谢. 解决方案 解决方案二:顶一下,顶一下解决方案三:9点半都过了,睡吧.等明天天上会下硬币雨,好人坏人都有份,直接捡钱就行了.解决方案四:压力测试不是你这么做的--解决方案五:这个模拟不了不过你可以部署到服务器可以实际操作下..几百万用户很简单只要你有钱我保证你网站瞬间就有几亿人点击....解决方案六:哼,"几百万用户点击&q

百万级PHP网站架构工具箱

在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nigix.MySql.CouchDB.Erlang.Memcached.RabbitMQ.PHP.Graphite.Red5以及Tsung. Poppen.de目前有200万注册用户数.2万并发用户数.每天20万条私有消息.每天25万

百万级访问量网站的技术准备工作

当今从纯网站技术上来说,因为开源模式的发展,现在建一个小网站已经很简单也很便宜,所以很多人都把创业方向定位在互联网应用.这些人里大多数不是很懂技术,或者不是那么精通,而网站开发维护方面的知识又很分散,学习成本太高,所以这篇文章将这些知识点结合起来,系统的来说,一个从日几千访问的小小网站,到日访问一两百万的小网站,中间可能会产生什么问题,以及怎么才能在一开始做足工作尽量避免这些问题. 相关厂商内容 大众点评主架构师吴其敏,将会在QCon分享大众点评网监控平台经验 Tumblr平台工程总监 Blak

海蜘蛛外网访问网站出现 Check flash 错误

问题描述 海蜘蛛版本:海蜘蛛路由V8final免费版Build1231在内网的一台机器上安装了IIS,跑的ASP程序在海蜘蛛上做了端口映射80这几天发现在外网(不同外网环境下)访问这个网站会提示HTTP/1.1404NOTFOUND!Checkflash:/wnm2.2.2-0005.zip然后我至少刷新页面3次,才能正常访问网站.然后过上好久,继续出这个问题然后如此循环请教高人如何解决这个问题. 解决方案 本帖最后由 mrgky 于 2011-05-10 11:26:17 编辑解决方案二:该回

在线计算教育网站泡面吧获百万级天使投资

在线计算教育网站泡面吧获百万级天使投资3月31日消息,面向中文用户的在线计算教育平台"泡面吧"(www.paomianba.com)已于近期获得百万级人民币的天使投资,领投方为英诺天使基金,北软天使基金跟投.据了解,泡面吧2013年创立于美国纽约,创始团队包括俞昊然.王冲.严霁玥三人.其中,俞昊然中途 退学后赴美留学深造,发现中美两国计算机教育之间存在巨大的差异,并且国内同学 提出的一些问题,可以不通过问或者老师讲解的方式来解决.泡面吧独创的"跟随式"编程教学可以让

百万级高并发网站MYSQL应用攻略

在长时间的网站开发过程中,能作一个百万IP的网站对我来说真是一个新的挑战,由于本人的水平有限,所以一直就职于一个小公司,在这里也只是抱着重在参与的想法.在以后我所讲述到的内容知识点上如有不适之处请大家多多批评指教. 在一开始接触PHP接触MYSQL的时候就听不少人说:"Mysql就跑跑一天几十万IP的小站还可以,要是几百万IP就不行了",原话不记得了,大体就是这个意思.一直也没有好的机会去验证这个说法,一是从没有接手过这么大流量的网站,二是平时工作也比较忙,懒得去管这些,反正现在用不着

百万级应用养成记

在当下的互联网市场,最火爆的无疑就是移动互联网,可以这么说,APP Store出现的那年是移动互联网的元年.自从乔帮主推出APP Store 构建起一个可循环的生态系统后,移动互联网行业开始火热起来,继而蔓延到中国,甚至影响到整个互联网的发展趋势.这两年,移动互联网成为互联网行业最热的词语,不管你是个人开发者.初创企业还是互联网巨头,都以各种方式开发出移动互联网产品,寻找新的蓝海.结合业内前辈的经验与自己的经历写下此文,希望能给大家带来启发和收获. 到底百万级应用是怎样炼成的?就目前移动互联网产

用 Python 实现每秒百万级请求

本文讲的是用 Python 实现每秒百万级请求, 用 Python 可以每秒发出百万个请求吗?这个问题终于有了肯定的回答. 许多公司抛弃 Python 拥抱其他语言就为了提高性能节约服务器成本.但是没必要啊.Python 也可以胜任. Python 社区近来针对性能做了很多优化.CPython 3.6 新的字典实现方式提升了解释器的总体性能.得益于更快的调用约定和字典查询缓存,CPython 3.7 会更快. 对于计算密集型工作,可以利用 PyPy 的即时编译.Numpy 的测试组件亦可一试,其

IPRdaily周鹏确认获百万级人民币的天使轮融资

知识产权知多少?知识产权科技媒体IPRdaily获百万级天使轮融资,想打破知识产权代理行业信息不透明的现状一家关注知识产权的科技媒体IPRdaily昨日正式上线,关注 TMT.文化创意.教育培训.生命健康.环保等领域的知识产权事宜,想通过"媒体平台 + 产业平台 + 社区"的形式,将创业者.知识产权从业者.权利人三方进行对接,打破知识产权代理行业信息不透明的现状."保守估计,目前国内具备专利代理资质的机构大概有 1000 多家,具备商标代理资质的机构有将近 2 万家,这其中含