`
freeroy
  • 浏览: 74946 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

转载请注明出自 http://zhiyi.us ,假如您还想从这转到好文章的话。

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

减少成本就是增加利润。很多事情,我们在一开始就可以避免,先打好基础,往后可以省很多精力,少操很多心。

假设你是一个参与创业的技术人员,当前一穷二白,什么都要自己做,自己出钱,初期几十万的资金,做一个应用不是特别复杂的网站,那么就要注意以下几点:

一、开发语言

一般来说,技术人员(程序员)创业都是根据自己技术背景选择自己最熟悉的语言,不过考虑到不可能永远是您一个人写程序,这点还得仔细想想。无论用什么语言,最终代码质量是看管理,所以我们还是从纯语言层面来说实际一点。现在流行的javaphp.netpythonruby都有自己的优劣,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发行版众多,只要没特殊要求,就选个用的人最多的,社区最活跃的,配置最方便的,软件包最全最新的,例如debianubuntu。至于RHEL之类的嘛,你用只能在RHEL上才能运行的软件么?剩下的nginx、php、mysql、activemq、其他的等等,除非你改过这些软件或你的程序真的不兼容新版本,否则尽量版本越新越好,版本新,意味着新特性增多、BUG减少、性能增加。总有些道听途说的人跟你说老的版本稳定。所谓稳定,是相对于特殊业务来说的,而就一个php写的网站,大多数人都没改过任何服务器软件源代码,绝大多数情况是能平稳的升级到新版本的。类似于jdk5到jdk6,python2到python3这类变动比较大的升级还是比较少见的。看看ChangeLog,看看升级说明,结合自己情况评估一下,越早升级越好,别人家都用php6写程序了这边还php4的逛游呢。优秀的开源程序升级还是很负责任的,看好文档,别怕。

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

分享到:
评论

相关推荐

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

    百万级访问网站前期的技术准备,管理与技术

    试谈百万级访问网站前期的技术准备.doc

    【标题】:试谈百万级访问网站前期的技术准备 【描述】:在互联网时代,创建一个网站变得越来越容易,但随着访问量的增加,技术挑战也随之而来。本文将探讨在构建一个可应对百万级访问的网站时需要考虑的关键技术...

    通信技术的4个优点和4个缺点

    统一通信技术是指将不同的通信方式(如语音、视频、即时消息、电子邮件等)集成到一个单一的、便捷的...通过充分的前期准备、技术支持和用户培训,可以最大限度地发挥统一通信技术的优势,同时减少其带来的潜在风险。

    网站转让合同(域名收购合同)模版.doc

    - **前期准备**:确认网站的所有权归属,明确转让的具体内容。 - **签订协议**:双方达成一致意见后签订正式的网站转让协议。 - **资料移交**:甲方需向乙方提供与网站相关的所有证明材料和注册证书等。 - **款项...

    数字化转型:场景化落地应用推进制造企业数字化转型.pptx

    评估流程还包括前期准备、现场调研、数据分析与报告撰写、反馈与改进等多个环节,确保评估结果的客观性和准确性。 #### 三、信息化管理平台建设与优化 为了更好地推进数字化转型,制造企业需要建立和完善信息化...

    2022年计算机考试三级网络技术笔试试题及答案.doc

    【计算机考试三级网络技术知识点详解】 1. 计算机历史:1959年10月,我国成功研制出的首台通用大型电子管计算机是104计算机。 2. 计算机应用:模拟操作是研究方法之一,大气预报使用巨型计算机处理数据,经济运行...

    中文对话数据集百万集

    这个数据集的规模达到了百万级,覆盖了日常生活的各种话题,具有广泛的适用性和实用性。 【描述】中提到的"https://gitee.com/chenyang918/chinese_chatbot_corpus"是一个公开的代码仓库,用户可以通过这个链接获取...

    等级保护2.0-测评指导书(二级,三级).zip

    根据《信息安全技术 网络安全等级保护基本要求》,等级保护分为五级:第一级为用户自主保护,第二级为系统审计保护,第三级为安全标记保护,第四级为结构化保护,第五级为访问验证保护。其中,第二级和第三级是多数...

    大学毕业论文-—个人成长历程网站的设计与实现.doc

    网站前期的准备是指在网站设计和开发之前的准备工作,包括后台环境的搭配、网站设计主题与思路的准备、网站图片、视频和文字素材的准备等。后台环境的搭配是指选择适合的服务器环境和数据库管理系统,例如XAMPP是一...

    等保测评级-技术测评要求.pdf

    4. 技术测评的步骤:技术测评一般包括前期准备、现场测评、结果分析、测评报告撰写等步骤。 5. 技术测评的目的:通过技术测评,可以发现信息系统中存在的安全漏洞和弱点,帮助信息系统的运营者和管理者改进和提升...

    项目的访问控制与管理培训课程.ppt

    【访问控制与管理】在IT项目管理中...总的来说,这个培训课程全面涵盖了街头访问的各个环节,从前期准备、人员培训、现场控制到后期总结,为IT行业中的市场研究提供了详实的操作指南,以提升数据采集的科学性和可靠性。

    信息化教学大赛前期准备.doc

    ### 信息化教学大赛前期准备关键知识点 #### 一、有特色选题 1. **选题的重要性**:选题作为比赛的起点,直接关系到作品的整体吸引力与竞争力。 - **核心课程选题的局限性**:尽管某些课程在专业人才培养体系中...

    利用MOOC进行翻转课堂教学探讨——以JAVA程序设计课程为例.pdf

    这样教师能将更多的时间和精力投入到课堂教学设计和学生指导中,而不是前期的视频准备工作中。 2. MOOC的课程往往是由知名院校的教授团队设计和讲授,质量相对较高。学生通过观看这些课程视频,能够接触到更权威、...

    ASIC可测试性设计技术

    边界扫描技术是一种专门用于解决ASIC引脚数量限制问题的技术,它允许通过有限的引脚访问整个电路。 ##### 6.1 边界扫描简介 边界扫描技术通过在电路的输入和输出端口之间插入边界扫描单元(BSC,Boundary Scan ...

    入户访问运作指导.doc

    二、前期准备阶段 1. 组织抽样员进行抽样:这一阶段包括对抽样员的培训、考核、签订协议、实地抽样、复核和整理抽样结果,最后填写入户访问情况登记表。 2. 预约访问员及其他项目参与人员:根据项目难度和时间安排...

    Uibot (RPA设计软件)培训前期准备指南-课前材料

    在进入Uibot(RPA设计软件)的培训之前,了解一些基础知识和前期准备是至关重要的。本指南将为你提供一个全面的视角,帮助你更好地理解RPA(Robotic Process Automation)及其在UiBot中的应用。 RPA是一种技术,它...

    网络教学平台的数据转换研究

    6. **教案导入**:完成所有前期准备工作后,将教案导入新平台。 7. **链接地址处理**:修正教案中指向旧平台资源的链接地址,确保其在新平台上也能正常使用。 通过以上步骤,可以有效地将旧平台上的教师教案数据...

Global site tag (gtag.js) - Google Analytics