到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,"过早优化是万恶之源"),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法。
如果站点起步阶段可能就是一台机器(或是一台虚拟机,比如 JobsDigg.com ),这个时候,去关注什么数据拆分啊,负载均衡啊,都是没影子的事情。很多大站点的经验绝不能照搬,辩证的参考才是硬道理。
拥抱熟知的技术
动手构建站点的时候,不要到处去问别人该用什么,什么熟悉用什么,如果用自己不擅长的技术手段来写网站,等你写完,黄花菜可能都凉了。所以,有现成的软件组件可用,就不要自己重新发明轮子。人家说 Python 牛,但自己只懂 PHP ,那就 PHP 好了,如果熟悉 .net ?,那也不错。用烂技术不是丢人的事情,把好技术用烂才丢人。
架构层次清晰化
起步的阶段应该清楚的确定下来架构的层次。如果都搅和在一起,业务一旦扩增开来,如果原有的一堆东西拆不开就是非常痛苦的事情。
Web Server <--> (AppServer)<-->Cache(eg. Memcached)<-->DB
层次清晰化的一个体现是(以 LAMP 架构为例):即使只有一台机器,也应该起个 Memcached 的实例,效果的确非常好--一般人儿我不告诉他...不要把什么都压到 DB 上,DB 一旦 I/O 压力走到磁盘上,问题要暴露出来是很快的。没错,DB 本身也会利用自己的 Cache,但 DB 的Cache 和 Memcached 设计出发点毕竟不一样。
数据冗余? 有必要
很多人并不是数据库设计专家,如果应用要自己设计表结构什么的,基本都是临时抱佛脚,但三个范式很多人倒是记得牢,这是大多数小型 Web 站点遇到的一个头疼事儿,一个小小的应用搞了几十个表... 忘掉范式这个玩意儿! 记住,尽可能的冗余数据,你在数据层陷入的时间越多,你在产品上投入的就会越少。用户更关心的是产品的设计。
前端优化很重要
因为流量低,访客可能也不多,这时候值得注意的是页面不要太大,多数流量低的站点吃亏就在于一个页面动辄几兆(我前两天看到一个Startup的首页有4M之大,可谓惊人),用户看个页面半分钟都打不开,你说咋发展? 先把基本的条件满足,再去研究前端优化。
功能增加要谨慎
不是有个 80/20 原则么? 把最重要的精力放在最能给你带来商业价值的地方。有些花里胡哨的功能带来很大的开销,反而收效甚微。记住,小站点,最有价值的是业务模式,而不是你的技术有多牛。技术是为业务服务的,不要炫技。
有些网站不停的添加功能,恰恰是把这些新功能变成了压死自己的稻草。
从开始考虑性能
这一点是可选的,但也重要。设计应用的时候在开始就应考虑 Profile 这件事情。一套应用能否在后期进行有效优化和扩展,很大的程度限制在是否有比较合适的 Profile 机制上。需要补充的是,对性能的考虑必然要把有关的历史数据考虑进来。另请参见网站运维之道的容量规划以及其它小帖子。
好架构不是设计出来的
这是最后要补充的一点。好的架构和最初的设计有关系,但最重要的是发展中的演化:
发展-->发现问题-->反馈-->解决问题(执行力)--> 改进->进化到下一阶段--新问题出现(循环)
有些站点到了某个阶段停足不前,可能卡在执行力这个地方,来自用户的反馈意见上来了之后,没有驱动力去做改进。最后也是死猪不怕开水烫了。最怕听到的就是"业务不允许"的托词,试想如果不改进业务都没了,那业务还允许么? 其实就是一层心理障碍。
这篇文章有浓重的山寨风格,所以,你不要太认真。如果在用短、平、快的方式构建某些山寨网站的话,可参考其中对你有益的点,不赞同的地方可以直接忽视掉,就没必要费力留言进行争论了。
--EOF--
好的业务模式(产品) + 很好的技术 = 大赚钱
好的业务模式(产品) + 能用的技术 = 也赚钱
差的业务模式(产品) + 好的技术 = 赚吆喝(现在的SNS就差不多这样了)
差的业务模式(产品) + 差的技术 = 自己浪费资源
网址:[url] http://www.dbanotes.net/arch/small_site_arch.html[/url]
分享到:
相关推荐
在构建大型电子商务网站如eBay时,架构设计是至关重要的,因为它需要应对大规模的数据、流量、用户以及持续增长的需求。eBay的架构设计原则、策略和模式为其他类似规模的平台提供了宝贵的指导。 首先,我们要关注的...
本文由张玛丽发表,探讨了大规模网站分布式架构的研究与应用,旨在为网站信息化建设提供专业指导。 首先,文章强调了大规模网站系统的安全性。在硬件层面,服务器的物理安全至关重要,包括防火防盗、电源备份和硬件...
Windows Server 2008是微软公司推出的服务器操作系统,它为各种规模的企业提供了强大的计算平台。然而,任何操作系统在默认配置下都可能存在性能瓶颈,因此,对Windows Server 2008进行性能优化至关重要,这将有助于...
IntServ适合小规模、需高度保证的服务,但不适用于大规模网络,因为它需要每个节点进行详细的服务预留和调度。 3. **DiffServ(区分服务)**:DiffServ是一种更为实用的模型,它在边界节点对流量进行分类和标记,...
- 这种结构能够有效地支持大规模的数据流量,并确保数据传输的稳定性和安全性。 3. **R99核心网电路域本地网网络结构**: - 涵盖了电路域本地网的基本组网方式,包括省Billing(计费中心)、省OMC(操作维护中心...
设计大规模Web服务时应遵循的原则包括: - **模块化**:将系统划分为多个独立的功能模块,便于维护和扩展。 - **层次化**:按照功能划分不同层次,明确各层之间的职责边界。 - **松耦合**:减少各组件之间的依赖...
5. 民用建筑室外消火栓设计流量的确定:民用建筑室外消火栓设计流量的确定是指根据建筑的用途、规模和其他因素来确定消防给水系统的设计流量。 6. 单座建筑界定原则示意:单座建筑界定原则示意是指根据建筑的规模和...
该书籍详细阐述了构建高效、可扩展、高可用性互联网系统的关键设计原则,帮助读者理解和掌握如何构建大规模、复杂的应用程序。 首先,书中强调了“模块化”的重要性。模块化设计能够将大型系统拆分为小而独立的部分...
### 性能安全测试面试题解析 #### 1.... - **资源限制**:可用的硬件资源可能不足以支撑大规模的性能测试。 - **复杂性**:系统架构越来越复杂,增加了测试难度。 - **需求变更**:业务需求经常...
- **竞争对手情报收集**:可以通过多种途径收集有关竞争对手的信息,包括但不限于每日流量、Alexa排名、网站内容规模、搜索引擎收录情况、关键词排名等。这些数据可以从公开的数据平台获得,也可以借助专门的SEO工具...
题目中的错误选项指出“不同的产品业务之间的耦合度很小”并非服务伸缩性的关键特性,实际上低耦合度恰恰是设计伸缩性架构的重要考虑因素。 #### 大数据分布式事务处理 - **事务处理方式**:分布式事务处理常用的...
4. 尽力而为服务(Best-Effort Service):对未被特殊处理的流量,按照“先到先得”的原则处理。 三、QoS配置实践 1. 设备配置:路由器、交换机等网络设备的QoS配置是实现QoS策略的关键。这通常涉及接口策略、流...
此外,了解WAP网站设计原则和用户体验对于优化站点至关重要。安装过程中,可能需要设置服务器环境(如Apache或Nginx),配置PHP解析器和MySQL数据库,以及导入数据库结构和初始数据。 总之,Wap Portal Server v...
这些原则的遵守有助于设计出效率更高、成本更低、适应性更强的物料搬运系统。 物料搬运路线的选择同样重要。在实际的工业生产中,主要存在直达型、渠道型和中心型三种类型的路线选择。直达型路线适用于物流量大或有...
而Nginx作为七层负载均衡器,虽然性能优于LVS的NAT模式,但在大规模服务器群中可能不如LVS稳定。选择哪种负载均衡器取决于业务需求和维护成本。 负载均衡的选型原则: 对于Web1.0服务,简单的LVS+Squid或DNS轮询就...
本研究论文的主题是“具有位置敏感哈希的快速低秩矩阵逼近,可快速检测异常”,重点是提出了一种新的算法,名为LSH-subspace,用于高效地逼近低秩矩阵,并通过这种方式快速检测网络流量中的异常情况。下面将详细阐述...
本课程主要针对华为HC110110000的企业网络架构进行介绍,帮助学习者理解和掌握企业网络的基本构成和设计原则。 首先,企业网络架构的重要性在于其能够有效地支持企业业务的运行。企业网络的不断发展和演变是与企业...
早期的网络环境多采用集线器加路由器的方式构建小规模网络,这种方式简单经济,但随着网络用户数量的增加和应用需求的提升,网络的传输效率和稳定性将面临巨大挑战,尤其是高流量下产生的延迟和性能瓶颈问题。...
- **日均流量**:期望网站的日均访问量达到500次,独立访客数为300人。 ### 行业和竞争对手分析 #### 竞争对手分析 - **竞争者**:列举了诸如仁泉医疗医美培训、爱诺培训等同行业内的主要竞争者。 - **竞争策略**...