行业新闻

用Ruby写的Starling.html

作者:admin    来源:百度    发布时间:2012-09-27    阅读:1031次

  百度在最早就推出了百度竞价收费服务,李彦宏对百度竞价服务曾经明白指出:“竞价服务时企业自负的一种变现,谁对市场有信息,谁就有信念花钱排在百度第一页首位!”从百度这多少年疾速发展中可以看出,这种敢于向用户休会叫板的服务,成绩了很多中小企业,随着大型企业涉足百度竞价,竞价服务也凸显其弱势,一种付费方式,人人都在用的时候,价位虚高,盈利空间逐步减少,就失去了本来的意思,和这个相反,那些始终领有大批用户群的网站,利润逐年攀升,所以说用户体验做的好,比竞价后果更长久,那么如何做好用户体验呢?

  腾讯目前Alexa排名第9。最初QQ IM采用的是单台接入服务器来处置用户的登录和状态保持,但在发展到一百万用户同时在线时,这台服务器已经无法支撑。于是QQ IM将所有单台服务器改造为了集群,并增加了状态同步服务器,由其完成集群内状态的同步,用户的信息存储在MySQL中,做了分库分表,挚友关系存储在自行实现的文件存储中。为了提升过程间通信的效力,腾讯自行实现了用户态IPC。之后腾讯将状况同步服务器也改造为同步集群,以支撑越来越多的在线用户。在阅历了前面几回改造后,已基本能支撑千万级别的用户同时在线,但可用性比较差,于是腾讯对QQ IM再次进行改造,实现了同城跨IDC的容灾,加强了监控和运维系统的建设。尔后腾讯决定对QQ IM架构完整重写(或许是2009年连续到现在),主要是为了加强机动性、支持跨城市的IDC、支撑千万级的挚友。在这次大的技术改造过程中,腾讯的数据都不再存储于MySQL中,而是全体存储在了自己设计的系统里。

  发展之初的Facebook采用了高真个存储装备(例如NetApp、Akamai)来存图片,随着图片不断增添,成本也大幅进步,于是2009年Facebook开发了Haystack来存储图片。Haystack可采用便宜的PC Server进行存储,大幅度降低了成本。

  Facebook除了使用MySQL存储数据外,近几年也开始探索采用新的方式。在2008年Facebook开发了Cassandra,在Message Inbox Search中作为新的存储方式。不外在2010年,Facebook又放弃了Cassandra,转为采用HBase作为其Messages的存储,并在2011年将HBase应用在了Facebook更多的名目上(例如Puma、ODS)。据说,现在Facebook更是在尝试将其用户以及关系数据从MySQL迁移到HBase。

  在一些场景中,Google也采用MySQL来存储数据。同样,Google对MySQL也做了许多修正,它应用的MySQL信息可以从https://code.google.com/p/google-mysql/懂得。

  对用户有苏醒的位置,成都网页设计。任何企业的产品目的客户群都是必定的,所以,不要将精神和时间消费在那些非目标客户群的身上,同时,不同用户的购买才能也是不同的,而且用户对产品的专业度也有很大的差异,所以,企业对网站用户应当树立一份档案,然后制订一系列尺度,而后对用户分门别类,也到达最大限度的发明价值的目标。

  从QQ IM的技术演变来看,其技术改造主要是围绕在可伸缩性和可用性上。

  在之后,Google又研发了Colossus(下一代类GFS文件系统)、Spanner(下一代类BigTable海量存储和盘算架构)、实时搜索(基于Colossus实现),主要都是为了提升搜索的实时性以及存储更多数据。除了在海量数据相关技术上的革新外,Google也不断对业界的传统技术进行翻新,例如提高TCP的初始拥塞窗口值、改进HTTP的SPDY协议、新的图片格局WebP等。

  1999年,Google增加了一个Cache Cluster,用来Cache查问的索引结果和文档片段信息,同时将Index Server和Doc Server通过Replicate的方式变成了Cluster。这两个改造带来的好处是网站的响应速度、可支撑的访问量以及可用性(Availability)得到了提升。这个变更造成了成本的增加,Google在硬件方面的风格始终是不用昂贵的高端硬件,而是在软件层面来保证系统的牢靠性及高性能,于是同年,Google开始采用自行设计的服务器来降低成本。2000年,Google开始自行设计DataCenter,采用了各种方法(例如采用其他的制冷方法来替代空调)来优化PUE(能源利用率),同时对自行设计的服务器也做了很多化。2001年,Google对Index的格式进行了修改,将所有的Index放入内存, 这次改造带来的利益是网站的响应速度以及可支撑的访问量得到了极大的提升。2003年,Google发表了文章Google Cluster Architecture,其Cluster结构组成为硬件LB+Index Cluster+Doc Cluster+大量廉价服务器(例如IDE硬盘、性价比高的CPU等),通过并行处理+sharding来保障在降低对硬件要求的同时,响应速度仍旧很快。同年Google发表了关于Google文件系统的论文(GFS在2000年就已经上线),这篇论文很大水平也体现了Google不必昂贵硬件的风格,通过GFS+大量廉价的服务器即可存储大量的数据。2004年,Google再次对Index的格式进行了修改,使得网站的响应速度继承提升。同年Google发表关于MapReduce的论文,通过MapReduce+大量廉价的服务器即可倏地完成以前要使用昂贵小型机、中型机甚至是大型机才能完成的计算义务,而这显然对于Google快速地构建索引提供了很大的辅助。2006年,Google发表了对于BigTable的论文(2003年开始上线),使得海量数据的分析可能达到在线系统的请求了,这对于Google提升网站的响应速度起到了很大的赞助。

  从上面这些Alexa排名靠前网站的技术发展过程来看,每家网站因为其所承当的业务不同、团队人员组成不同、做事风格相异,在技术的不同发展阶段中会采用不同的方法来支撑业务的发展,但基本都会围绕在可伸缩性、可用性、性能以及成本这4点上,在发展到比较大规模后,各网站在技术结构上有了很多的类似点,并且这些构造还将持续进行演变。

  作为改造的第一步,Facebook首先在LAMP结构中增加了Memcached,用来缓存各种数据,从而大幅度提升系统的响应时间以及可支撑的访问量,之后又增加了Services层,将News Feed、Search等较通用的功能作为Service提供给前端的PHP系统使用,前端的系统通过Thrift访问这些Service。Facebook采用了多种语言来编写各种不同的Service,主要是针对不同的场景取舍适合的语言,例如C++、Java、Erlang。

  2009年,Facebook研发了BigPipe,借助此体系,Facebook胜利让网站的速度晋升了两倍。跟着Facebook拜访量的上涨,收集众多服务器上的履行日志也开端面临挑衅,于是Facebook研发了Scribe来解决此问题。对存储在MySQL中的数据,成都有哪些网络公司设计制作网站的,Facebook采取垂直拆分库跟程度拆分表的方法来支持一直增加的数据量。作为Facebook技巧系统中主要的一环,Facebook也对MySQL进行了良多优化和改良,例如Online Schema Change等,更多信息可见

  2010年,Twitter在盐湖城占有了第一个自建的DataCenter,主要是为了增加可控性。从Twitter的发展过程看,6年来它的技术改造主要围绕可伸缩以及可用性。

  首先,网站要有准确的经营思维,越简单越好。去年年底,暴发了大规模的网站账号泄漏事件,甚至波及到一些电子商务网站,于是,很多网站在用户注册上开始增强防备办法,一个用户注册某个网站账号,通常像在银行开户一样繁琐,站在用户的保险斟酌值得倡导,但是,有没有考虑到用户的耐烦!比方在A5注册会员,很简单,只要要增加用户名、邮箱地址、还有密码就可以,企业网站前期工作主要是吸引更多的网络用户注册,所以,越是简单的会员注册功能越能获得很好的用户积淀率!

  从2009年开始,Facebook尝试自行设计DataCenter以及服务器,以下降其运行成本,并对外开放了其构建的PUE仅1.07的DataCenter的相干技术。Facebook在技术方面的根本原则是:“在能用开源产品的情形下就用开源,依据情况对其进行优化并反馈给社区”。从Facebook的技术发展过程上能够看到这个准则坚持到底,Facebook的技术改造也主要是环绕在可伸缩、性能、成本和可用性4个方面。

  Google目前Alexa排名第1。它诞生于1997年,当时是一个研讨性项目,每个月build一次索引,build出来的索引通过sharding(shard by doc)的方式疏散到多台服务器(Index Server)上,详细的网页数据同样通过sharding的方式分散到多台服务器(Doc Server)上,当用户提交请求时,通过前端的一台服务器将要求提交给Index Server获得打了分的倒排索引,然后从Doc Server提取具体的网页信息(例如网页题目、搜索症结词匹配的片断信息等),最终展示给用户。

  随着索引的网页增加,这个结构可通过增加Index Server以及Doc Server来存储索引以及网页的数据,但仍旧会见临其他很多方面的问题,于是在这之后的十多年的时间里,Google做了很多事情来改进上面的结构。

  以上3篇论文彻底转变了业界对于海量数据的存储、剖析和检索的办法(小道消息:Google内部已实现了GFS、MapReduce、BigTable的调换),也奠定了Google在业界的技术引导地位。

  1995年,eBay诞生,当时采用CGI编写,数据库采用的是GDBM,最多只能支撑5万件在线商品。1997年,eBay将操作系统从FreeBSD迁移到Windows NT,另外将数据库从GDBM迁移为Oracle。1999年,eBay将前端系统改造为Cluster(之前只有一台主机),采用Resonate作为负载平衡,后端的Oracle机器进级为Sun E1000小型机,同年给数据库增加了一台机器作为备库,提升可用性。前端机器随着访问量不断增长还可以敷衍,但数据库机器在1999年11月时已经达到了瓶颈(已经不能再加CPU和内存了),于是在11月开始将数据库按业务拆分为多个库。2001-2002年,eBay将数据表进行了水平拆分,例如按类目存储商品,同时部署Oracle的小型机换为Sun A3500。2002年,将整个网站迁移为用Java构建,在这个阶段,做了DAL框架来屏蔽数据库分库分表带来的影响,同时还设计了一个开发框架以供开发职员更好地上手进行功能开发。从eBay的整个发展过程来看,技术改造主要围绕在可伸缩性和可用性两点。

  访问企业网站的用户大多都是潜在客户,只有擅长引诱,很轻易发生购买行动。企业网站和用户之间存在一定的好处关联,这是黏合用户的最有效的手腕,如何让用户付费,或者吸引其打电话资讯,这都是企业网站的重心,用户可以给我们带来财产,那么,咱们应该给用户提供什么呢?服务也能产生效益,“让用户感到这钱花的值”,企业网站久长发展,一定要紧紧记住这一点。很多有一定著名品牌的企业,走低端廉价路线,开始能取得一定的市场,然而,随着用户对产品反馈,很快这种产品进入畅销,牌子和用户体验划上等号,更合乎中国消费群体的消费理念!

  PHP作为脚本语言,上风是开发简略、易上手,劣势是需要消费较多的CPU和内存。当Facebook的访问量增长到了一定范围后,这个劣势就比拟凸起了,于是从2007年起,Facebook就尝试多种方式来解决这个问题,最后诞生于Facebook Hackathon的HipHop产品成功地脱颖而出。HipHop可以主动将PHP转化为C++代码,Facebook在使用HipHop后,等同配置的机器,可支撑的恳求量是之前的6倍,CPU的使用率均匀降落了50%,从而为Facebook节俭了大量主机。未来Facebook还会对HipHop进行再次改进,通过HipHop将PHP编译为bytecode,放入HipHop VM中执行,再由HipHop VM来编译为机器代码,方式与JIT相似。

  互联网已经发展多年,其中不乏怀才不遇者,这些网站多数都已存在了濒临10年或10年以上,在如斯长时光的发展过程中,除了业务上面临的挑战,在技术上也面临了很多的挑战。我筛选了一些Alexa排名较前的网站(排名截止到2012年4月21日),看看它们在技术上是如何应答业务发展过程中的挑战的。

   Twitter目前Alexa排名第8。在2006年诞生之时是采用Ruby On Rails+ MySQL构建的,2007年增加了Memcached作为Cache层,以提升响应速度。基于Ruby on Rails让Twitter享受到了快捷的开发能力,但随着访问量的增长,其对CPU和内存的消耗也让Twitter苦楚不堪,于是Twitter做了不少改造和努力,例如编写了一个优化版的Ruby GC。

  从淘宝的全部发展过程来看,技术改造主要围绕在可伸缩性和可用性两点,当初也开始逐渐将精力投入在了性能和成本上。目前淘宝的Alexa排名为第14。

  Facebook目前Alexa排名第2。它采用LAMP构建,随着业务的发展,它也在技术上做了很多改造。

  作者林昊,目前辞职于淘宝,2007-2010年负责设计和实现淘宝的服务框架,此服务框架在淘宝大面积使用,天天承担了150亿+的请求;2011年开始负责HBase在淘宝的落地,目前淘宝已有20个以上的在线项目在使用HBase。

   尊敬用户体验,是中小企业网站电子商务获得发展的要害所在,只有认可,才干有交易,只有需要,能力失掉大量的用户,互联网看不到人,可最终发生交易行为都是人,这就是互联网的巧妙之处!用户体验,永远是电子商务重中之重,核心的核心!去黑头压缩毛孔:

  运气也是企业网站必不可少的因素之一。hao123开启了导航网站,终极被百度化重金购置,凡客诚品破费了重金进行推广,在互联网电子商务市场始终不找到很好的盈利点,而背地运作的都是统一个人,真应了一句古话:“无心插柳柳成荫,刻意强求求不得!”互联网产生这样的事件太多,企业做电子商务,也须要那么一点点福气,就像360和QQ的3Q大战一样,是QQ封杀了360,仍是QQ玉成了360,众口不一。对中小企业来说,假如也来句甚至有这样的机遇,就像宋丹丹小品那句台词:“我请央视封杀我!”,成果岂但不是沉静,反而更水涨船高了!

  大量使用Memcached以及访问量的不断上涨,导致访问Memcached的网络流量太大,交流机无奈支撑,Facebook通过改造采用UDP的方式来访问Memcached,以降低单衔接上的网络流量。除此之外,还有其他一些改造,详细信息可以查看

  2008年Twitter决定逐渐往Java迁移,抉择了Scala作为主力的开发语言(理由是“难以向一房子的Ruby程序员倾销Java”),采用Thrift作为其主要的通信框架,开发了Finagle作为其Service Framework,可将后端各种功能裸露为Service提供应前端系统使用,使得前端系统无需关怀各种不同的通讯协定(例如对于使用者可以用同样的调用服务的方式去访问Memcache、Redis、Thrift服务端),开发了Kestrel作为其新闻旁边件(替代之前用Ruby写的Starling)。

  在Google的发展进程中,其技术的改革重要缭绕在可伸缩性、机能、本钱和可用性4个方面,Google不采用昂贵硬件的作风以及当先其余网站的数据量决议了其技术改造基础都是对传统的软硬件技术的改革。

  让用户亲身感想自己的价值。每个人都有很强的价值观,每个行业都有翘楚,同样用户通过企业网站和企业进行沟通接洽,在谈业务的同时,让对方感触到自己的真挚,一次成功的销售,是这次销售完成之后,彼此都有深入的印象,而且是双方共赢的局势,用户有同样需要的时候,还会再一次发生购买行为,同时,任何行业都是相关的,无论是提供商品服务还是有求于用户,时刻让用户觉得他的价值,不断加深印象,从而建破长期的配合关系,实现双方的共赢。

  Twitter的数据存储始终采用MySQL,发展过程中涌现的小插曲是,当Facebook开源了Cassandra时,Twitter本打算使用,但最终还是废弃,依然坚持了使用MySQL,Twitter的MySQL版本已开源(https://github.com/twitter/mysql)。Twitter也是采用分库分表的方式来支撑大数据量,使用Memcached来Cache tweet,timeline的信息则迁移为用Redis来Cache。

  国度工信部在最新宣布的《电子商务“十二五”发展计划》明确指出,到2015年,电子商务交易额将冲破18万亿元,在2010年底,电子商务交易额亲近9万亿元,同时,目前常常使用电子商务的中小企业已经打破50%以上,随着中国互联网消费群体的激增,目前我国网络花费人群是靠近1.5亿,而在将来五年内,有望接近4亿,到那个时候中国将成为世界上最大的电子商务市场,对中小企业来说,这无疑将是最大的商机,据悉,5年后将有90%从事互联网电子商务营销,中小企业如何找到电子商务突破口,用户体验是中心。

  在进行了数据的垂直和水平拆分后,Oracle产生的成本越来越高,于是在之后的几年,淘宝又开始将数据逐渐从Oracle迁移到MySQL,同时开始尝试新型的数据存储计划,例如采用HBase来支撑历史交易订单的存储和检索等。近几年淘宝开始进行Linux内核、JVM、Nginx等软件的修改定制工作,同时也自行设计了低能耗服务器,同时在软硬件长进行优化,以更好地降低成本。

  2007年,Google将build索引的时间缩短到分钟级,当新网页呈现后,几分钟后即可在Google搜寻到,同时将Index Cluster通过Protocol Buffers对外提供Service,以供Google各种搜索(例如网页、图片、消息、书籍等)使用,除了Index Cluster提供的Service外,还有很多其他的Service,例如广告、词法检讨等。Google的一次搜索大略需要调用内部50个以上的Service,Service主要用C++或Java来编写。2009年,Google的一篇《How Google uses Linux》文章,揭示了Google在提升机器应用率方面也做了很多的尽力,例如将不同资源耗费类型的应用安排在同一台机器上。

  2003年,淘宝出生,直接购买了一个贸易的phpAuction的软件,在此基本上改造发生了淘宝。2004年,将系统由PHP迁徙到Java,MySQL迁移为Oracle(小型机、高端存储设备),运用服务器采用了WebLogic。2005-2007年的发展过程中,用JBoss替换了WebLogic,对数据库进行了分库,基于BDB做了分布式缓存,自行开发了散布式文件系统TFS以支撑小文件的存储,并建设了本人的CDN。2007-2009年对利用系统进行垂直拆分,拆分后的系统都以Service的方式对外供给功效,对数据采用了垂直和水平拆分。

回到顶部