`
pxchen
  • 浏览: 85176 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

写给WEB2.0团队,做SNS的公司[转]

阅读更多
当抄袭变成习惯,我想说的是,模仿,站长,你准备好了吗?如果你打算做垃圾站,或者赚点广告费的网站,请不要点击这篇文章,我从技术角度方面谈谈WEB2.0网站的模仿问题。当投资和流量都不是问题的时候,我想说的是,您真的一帆风顺吗?拿SNS网站来说,当匆匆上线的2.0,当一笔笔投资砸进去的时候,当流量上去的时候,您的困惑在什么地方?我做过多个2.0公司的技术顾问,简单的谈谈2.0公司遇到的问题(涉及隐私,我用A B C D代替),这里就不再赘述大家众所周知的页面静态化,缓存和代码安全等问题了,有点技术的2.0公司的CTO都知道这些东西,我们谈点发展之后的问题 A公司: A公司做的是SNS网站,程序是两个毛头小伙子做的,目标直指51,程序开发是一帆风顺,功能也比51牛多了,推广也是一帆风顺(A公司有自己独到的推广方式。但是当ALEXA到2W的时候问题出来了,每天下午4点左右,网站速度慢的惊人,基本上打不开,公司三台服务器CPU100%,让人郁闷的是公司的网络配置方式,居然是双WEB的集群,而单独一台DB数据库。整个瓶颈在数据库,于是我建议做DB的集群,分析了一下数据结构,MD,典型的WEB程序员的作品,没有一点数据库设计规范,功能实现是可以,如果要扩展,不可能,集群基本上是不可能的,怎么办?不能办,于是,一个月的时间修改程序,数据结构基本上换了一遍 前期砸进去的几十万打了水飘,用户走光了。结论:WEB2.0前期设计的时候不应该只考虑功能,应该认真考虑一下底层和数据结构了。 B公司: B公司也是做的SNS网站,程序是3个人开发的,CEO是某名牌大学的经济学硕士,有点知己网的味道,又有一些特色出来,说实话,公司的潜力不错,CEO 有很强的运作能力,感觉前景不错。系统架构还行,但是—但是系统崩溃了,why?系统没有考虑到用户有个海量的说法,文件也有个海量的说法,用户的相册,图片全部存贮在WEB服务器的一个分区上,每个用户一个目录,而打开性能监视器,磁盘的IO高的惊人,基本上无暇响应。众所周知,文件系统也是一个数据库,单独大文件无所谓,关键是整个是300多个G的零碎文件,大量的读写操作,系统崩溃,数据丢失,文件系统的一个链断了,用户数据全部丢失!!!这是一个非常沉重的问题,系统整整停了一个月来做数据恢复(单独文件很容易,但是海量文件目前还没有一个软件能组织起来软件架构)。解决方案:修改程序架构,做分布式文件存贮(程序修改用了8天,但是文件转移却又用去了将近一个月),20万用户损失殆尽结论:WEB2.0前期的设计应该有应付海量存贮的考虑,整个涉及了程序架构的修改,前期规划不好的话基本上思路一条。 C公司: C公司是一个值得尊敬的公司,CEO技术出身,和比尔盖茨一样,大学未毕业出来做网络,01到03年做短信狠赚了一笔,后来做的小项目也小有所成,说实话,我很佩服。公司做的是校友方面,但是更偏重myspace风格,注重个人主页,推广方面也下了大手笔。系统崩溃的原因其实很简单,由于采用的是微软的 SqlServer,而微软直接就告诉了我们,SQLSERVER不支持集群,他们的数据库超负载,100%就没有下去过,只能横向增加配置,采用了4路 4核CPU系统,但是系统还是崩溃了… 高互动注定了高负载。解决方案:现从基本入手,解决掉几个程序耗能大户,对数据库采用横向切割,将用户每10万进行分组,同时对数据库系统进行散列,将多个表垂直分割,同时进行文件分组,解决问题. 因为修改了数据结构,程序也基本上大动了一下。好在系统没有出大错,损失不算很大,不过对用户体验造成了很坏的影响。结论:WEB2.0前期设计应该有良好的散列考虑,程序应该能有配合的扩充性,符合数据库的扩充 D公司: D公司是一个各个方面做的比较好的公司,做了CDN加速,图片也独立分出了N个服务器,数据库不错的一个,(CTO是个数据库专家),系统崩溃的原因在于 WEB,按道理说WEB很容易做集群的,但是发现集群并解决不掉问题,他们的集群只允许做4台的WEB集群,但是4台都当掉了。仔细分析,找到原因,我估计整个也是大部分CTO最容易犯的一个错误,或者说他们根本就想不到的问题,就是WEB上传的问题,上传的时候由于时间的原因,线程是保持链接的,300 个线程就可以把一个WEB Server当掉了。解决方案:这个最简单,把上传和其他耗能大户分离出独立出来。程序改动不是很大,但是之前半个月速度满对用户体验的损失也不可小视。结论:没有什么结论了,毕竟有海量访问经验的CTO不多,也就是那几个大站的。总结:不是泼冷水,模仿其实是很容易的,随便找几个WEB程序员就能做到,并且很简单,速度可能还很高效,因为WEB2.0无非就是跟数据库打交道,会操作数据库就会做。但是真正做大并不容易,因为能应付海量访问的程序并不简单,现在的程序员都太自命不凡,其实真正有经验的并不多,不要相信一个月薪5K- -10K的程序员能给你多大的惊喜,能应付海量访问的程序员不是那个价格。如果您想做2.0,想做大,有几个个建议:一、找DBMS的专家设计好数据库,大部分程序员都不知道分区视图,数据散列,数据组的概念二、设计好程序架构(这个其实不难,有个高人指导就行了),保持良好的扩展性,成本考虑可以找兼职的系统架构设计师做好系统架构,确定将来的发展瓶颈。三、考虑好文件存贮的问题。文件存贮的技术含量看起来很低,其实是很高的,可以考虑反向代理的方案。文件存贮出问题了,站点基本上就完蛋了,不仅仅是 RAID的问题和存贮服务器的问题,不过道理倒是一点就破的四、中国国情考虑,这个最致命,需要考虑电信和网通的问题,CDN并不能解决所有问题。互动性的东西并CDN并不是很有效。最关键的是,现有的双线机房遇到DDOS攻击基本上都会当掉,原因很简单,双线机房都是私人机房,本身就不会有太高的带宽,随便攻击一下就可以D掉(顺带提一个笑话,我知道一个双线机房的老总总共1G的带宽却买了4G的金盾墙,很简单800M的攻击就可以搞定)。五、网络延迟的问题,这是分布式系统必须要考虑的,程序要能容忍0到100秒的数据延迟的功能,也就是同步的问题。不要小看这几十秒,问题很大的,如果你的站点有交互式功能,比如即时聊天,你可以想象一下是个什么结果。对于即时聊天的东西,可以用反向代理来解决(成本较高)。但是对于留言和评论的影响不大,但是如果系统为了健壮做了缓存和静态化的时候,这个东西可能就是灾难性的了。六、分散你的程序,如果你没有太多的资金构筑动辄百万的服务器,建议把功能分散开来,比如相册一台服务器,留言一台服务器七、看好你的程序员,如果没有很好的激励措施的话你的程序员很容易写出敷衍性的代码,而这个可能就是将来的大患,程序架构定下来后要修改可能就要费牛劲了。最好你的CTO能对你100%的衷心,100%的负责。八、文件同步的问题,这个问题可能你觉得没有必要,如果你看一下网通和电信的TTL就明白了,同步要支持续传,并且不能是持续的,否则你的成本会高出N 倍,不要期望能通过你的软件实现,交给你的程序员吧,把上面的话告诉他他就知道怎么做了。九、最狠的一个问题了,也是吃亏最大的问题,不管您跟网警的关系多好,看好你的用户,审核好你的东西,一被停机可能就致命,本人就吃过N次亏。十、最后,祝各位站长一番风顺,大展宏图。谢谢站长的分享!

from:http://my.oschina.net/bing8848/blog/3057
分享到:
评论

相关推荐

    WEB2.0技术带来协同办公(OA)软件的变革

    Web2.0技术的出现,为协同办公(OA)软件带来了革命性的变化,使其功能更加丰富、交互性更强,极大地提高了工作效率和团队协作能力。 #### Web2.0与Web1.0的区别 在Web1.0时代,网络主要以静态网页为主,用户只能...

    Web 2.0 相关资料

    Web 2.0是互联网发展的一个重要阶段,它标志着从早期静态网页的Web 1.0时代向互动、用户参与和共享内容的转变。Web 2.0的核心理念包括: 1. **用户参与**:与Web 1.0的单向信息传递不同,Web 2.0鼓励用户参与到内容...

    web2.0环境下的人力资源管理信息化初探.doc

    而Web2.0技术如企业内部论坛、博客、SNS公共页面等,提供了丰富的沟通平台,使得培训过程变得更加动态和互动。员工可以随时随地提交培训需求,分享工作经验,甚至通过在线视频学习,提高了培训的灵活性和效果。 ...

    一款基于asp.net技术业内领先的Web2.0社区平台

    一款基于asp.net技术业内领先的Web2.0社区平台。结合默认提供的博客、相册、文件、网摘、迷你博客、资讯、论坛、活动、圈子等应用模块,您可以快速的搭建SNS互动社区。借助SpaceBuilder平台的服务(用户、朋友、私信...

    Web2_0企业级应用趋势探讨[定义].pdf

    一方面,应积极利用Web 2.0 提升企业的竞争力,比如通过建立企业社交网络提高团队协作,运用知识管理工具促进知识共享,利用客户反馈改善产品和服务。另一方面,必须建立健全的信息安全策略,规范员工的网络行为,...

    基于Web2_0的知识管理系统的设计

    ### 基于Web2.0的知识管理系统设计的关键知识点 #### 一、Web2.0与知识管理的关系 - **Web2.0的核心特征**:Web2.0强调用户生成内容(UGC)、交互性和协作性,它不仅仅是一个技术概念,更是一种互联网文化的体现。...

    开源SNS(社会性网络服务)软件iweb SNS v0.7源码

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

    iweb SNS社交网络平台软件

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

    iweb SNS社交网络平台软件0.6源码

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

    iWebSNS(开源社交源码) v1.0 正式版.rar

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

    jooyea旗下iweb SNS社交网络平台

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

    SNS在企业信息化中的应用研究归纳.pdf

    SNS(Social Network Service),即社会网络服务,是Web2.0时代的一种关键应用,它基于“六度分隔理论”和“150法则”,在企业信息化建设中发挥着重要作用。六度分隔理论指出,任何人之间最多通过六个中间人就能建立...

    sns的盈 利模式

    随着互联网技术的发展,尤其是Web 2.0技术的崛起,SNS网站如Facebook、MySpace等在2003年前后崭露头角,并迅速在全球范围内流行。 在中国,SNS的兴起虽然相对较晚,但发展速度极快。2005年后,出现了51.com、人人网...

    AJAX快速入门 (学习AJAX很好的入门资料)

    它是Web 2.0的核心技术之一,极大地提升了用户体验,使得网页更加动态和交互性强。 在Web 1.0时代,用户与网页的交互主要依赖于页面的完整刷新。每当用户提交表单或者请求新内容时,整个网页会重新加载,这导致了...

    ThinkGrouponV2.0免费团购网代码

    软件版本:V2.0 官方网址:http://www.thinkgroupon.com --------------------------------------------------------------------- 软件介绍: 本软件采用国内流行WEB技术,PHP+MYSQL实现。 thinkgroupon目前是国内唯一...

    心情网络互联网服务公司商业计划书样本.doc

    Web 2.0是指互联网的第二个发展阶段,它强调用户参与、互动性和数据共享,主要特征包括P2P(点对点)通信、博客、RSS(Really Simple Syndication,简易聚合)、Wiki(可编辑百科)以及SNS(Social Networking ...

    iWeb开源三剑客之iWebSNS v0.9.9 繁体中文版.rar

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

    基金公司协同管理系统的开发与实施管理PPT学习教案.pptx

    随着Web 2.0技术,特别是社会网络服务(SNS)的兴起,基金管理领域也在寻求更高效、更人性化的管理手段。SNS作为一种网络群体聚集的新方式,已经积累了庞大的用户基础,其在网络营销中的价值逐渐显现。 基金公司的...

    iWebAx开源项目iWeb SNS(社交网络) 0.9.9 繁体版.rar

    借助iwebSI平台,站点可以轻松获得支持热插拔及快速增加新节点的集群计算与处理能力(分布式计算与存储/高可用性/负载均衡),以方便管理web2.0类站点持续增长的数据量。SI的web层、db层负载均衡,基于内存的分布式...

Global site tag (gtag.js) - Google Analytics