Randy Shoup:eBay在因特网上所面临的挑战

来源:百度文库 编辑:神马文学网 时间:2024/03/28 21:05:37
 网易首页-新闻-体育-亚运-娱乐-财经-汽车-科技-数码-手机-女人-博客-论坛-房产-家居-健康-旅游-视频 rss
网易科技 网易 > 科技频道 > Qcon全球企业开发大会 > 正文

Randy Shoup:eBay在因特网上所面临的挑战

2009-04-08 15:00:37 来源: 网易科技报道 跟贴 0 条 手机看新闻

 

网易科技讯 4月8日消息,eBay市场架构组的杰出架构师Randy Shoup今天在Qcon全球企业开发大会上介绍了他在eBay处理来自互联网的很大流量的经验与教训。

Randy Shoup谈到eBay在系统支撑面临的挑战时表示,eBay大概有8600万的用户,活跃的客户大概也有几千万,现在的有五万种的目录,销售的东西大概有一亿两千万,每天的访问量会达到20亿,每一秒钟的交易大概是2000美元,而一年大概是600亿美元的交易量。

同时eBay还要处理大概每天50TB新增加的数据,这些数据来自用户,也来自监测系统。eBay每季度都会增加300个特征,每两周更新大概10万条代码,eBay现在在39个国家有8种语言,eBay的网站大概每天会有480亿的CQ的执行。

“这并不是数字越大越好,我们其实希望这个数据小一点,但是它可以让大家感觉一下到底我们所面对的挑战是多大的。”Randy Shoup表示。

以下为Randy Shoup的演讲全文。

主持人:掌声感谢Rod Johnson先生。好,下面让我们有请Randy先生介绍来自eBay的经验和成功的分享,大家掌声有请。

Randy Shoup:你好。我的名字是Randy Shoup,我是在伦敦工作,今天跟大家介绍的主要是跟大家介绍一下在以北学到的一些经验和教训,我们可以很快的去处理很大的流量,首先我要说我今天感觉非常的荣幸能够参加QCon,这是在亚洲的第一次的旅行,这也是我第一次来到北京,我非常感受到你们的热情款待,非常感谢。

我们下面首先来看一下我们主要的一些我们eBay在因特网上所面临的挑战,这些挑战在其它的大型公司的都在了解它,在中国也是如此。对eBay来说我们现在大概有8600万的客户,我们活跃的客户大概也有几千万,所以现在的有五万种的目录,销售的东西大概有一亿两千万,每天会有大概访问率会达到20亿,我们每一秒钟的交易大概是2000美元,而一年大概是600亿美元的这样一个交易想。我们的eBay网站它本身存储着两PB的数据,大家可以思考一下,这其实是一个非常活跃的窗口,这些都是一些活跃使用的数据,大概都是网上的一些数据。同时我们还拥有大概50TB新的增加的数据,每天不断增加的数据,它来自我们的用户,来自我们的监测系统,还有很多,但是这50TB是每天的增加量。另外我们的分析或者是我们的数据仓库每天要分析50TB的数据,所以这是非常大的。

eBay我们也是生存在一个非常活跃的这样一个空间之内,每季度我们都会加300个特征,每两周我们都会更新我们大概10万代码,eBay现在在39个国家有8种语言,我们是提供全天候的服务。这加起来对于我们的网站来说,大概每天会有480亿的CQ的执行,这并不是数字越大越好,我们其实希望这个数据小一点,但是它可以让大家感觉一下到底我们所面对的挑战是多大的。

所以当我们在因特网上的时候,我们在处理这么大的数有哪些力量是需要架构的时候考虑的,第一个力量我们叫可扩展性,可扩展性它其实意味着你这个应用必须是可扩展性的,也就是说这是资源的使用,不管这个资源是网络,或者是储存,或者是计算能力,这些资源都应该能够线性的随着工作的的量负荷来增加,你的工作负荷增加两倍,你的资源也应该增加两倍,所以一旦我们在eBay的时候,我们一旦考虑到新的设计的时候,或者新的架构的时候,我们总是会做一个头脑的风暴,我们总会想如果一个特定的数据是十倍了,突然变成了十倍了,我们应该怎么做?我们是不是有足够的这样十倍的资源呢?比如说我们的流量,我们的数据,或者是用户突然增加了十倍怎么办,这样的一个头脑风暴就可以帮助我们决定我们是否有可扩展的架构。答案是,如果我们的用户的数量突然增加了十倍,就意味着我们需要另外一个架构,就意味着我们的架构不好。所以我们会使用这样一种头脑风暴来决定我们能不能够有这样一个好的可扩展性的架构,在后面我会谈到一些例子或者一些模式,我们是怎么样来一种可扩展性。

第二个是可行性,我的意思主要是说我们的eBay,比如说是一个非常大的公司,我们是全天候的这样一个升级,就是我们的升级能力。可行性同时还意味着一点,首先第一点必须要有对于失败的这样一种弹性,因为我们会有几十万种eBay组成的部分,所以在任何一个特定的时刻,它们当中都有一些元素会不能够运行,所以这就是生活的实际,所以我们就需要来开发这样一种架构和一种元素组成,他们对这种失败能够修改弹性,尽管失败了还有其它的可以使用。有一个TBF,就是失败故障间的平均时间,同时我们还会考虑我们的这种从失败当中快速地恢复,一旦一个应用出现问题,我们希望它们尽快能够恢复,这里的一个技术语就是叫MTT2,就是恢复的平均时间。

那么其它当然还有一个非常重要的组成部分,就是我们要保证我们的网站能够优雅地降级,也就是说它的这些功能,它有些功能尽不能够使用了,但是我们应该保证其它的部分它能够使用,而且可以获得用户的满意度,这个后面我会详细地谈一下。

下一个力量Latnecy,我们认为是,我们是由两种考虑的方式,第一个是在用户的应验各个方面,也就是说如果这个用户他做了个后,多快你的这个网络网页就可以向他展开,所以是一个等待时间,另外是数据的Latnecy,也就是说它在网站上浏览的时候,什么时候这个数据能够向他呈现,我们会在后面详细地谈一下这个Latnecy的问题。下一个非常重要的问题,就是很多人在做一个大型的网站的时候,都必须要考虑它的可管理性,对于我们来说,也就是说我们做出来的一些组成的要素应该是非常简单的,应该是可以获得的,而且是可以维护的,同时它应该有一个非常好的检测措施,这样就可以发现、解决那些故障问题。

最后一点就是我们经常会考虑的,尤其是以在经济危机环境下,我们应该考虑的另外一个问题,就是成本,我们在考虑成本的时候,一个是要考虑它的开发和发展的方面,以及它的复杂性方面。同时,我们还考虑它的运营成本,这个就包括它的资本成本,同时像电、水、冷冻、风扇、通风都需要考虑的成本,所以这些是我们考虑的力量,这些我后面会谈一下我们eBay在这一块所取得一些最佳的经历和最佳的实践。这里我有5个关于可扩展的这样一个最佳实践。

第一个就是分割Partition,把对每一件事情进行分割。

第二个就是非同步,也就是做事情不是同步,而是稍微等一会儿再做。

第三点就是自动化。

第四点失败的问题,我们永远都得记得每一个元素都可能失败。

第五点我就想跟大家说,这里我非常想说的依据拥抱非常连续性,这个我后面会详细地强调。你在设计一个架构的时候,当整个的架构它并不需要对于在某一个特定的时刻,并不需要具有连续性,对每一件事情进行分割,实际上就是把每一个问题都把它分为小一块的问题段,所以你有很多的办法去解决问题,但是你可以通过数据来分割这个问题,比如这儿是一块数据,那儿是一块数据,或者你可以把这个问题通过工作负荷来进行分割,比如说,高流量的你放在一块,而低工作负荷,或者低流量的操作放在另外一块。另外你还可以通过别的方式,比如说是阅读的,还是写作的或者是应用,还是交易等等。

这里我们经常对自己说的一句话,就是说我们在评估一个新的架构的时候,我们会说“如果你不把它进行分割,你就不能把它进行升级。”所以我们发现在过去eBay系统的过程当中这是一条真理,另外究竟是为什么,什么是我们进行分割的原因,我们必须要能够扩展,所以如果你能够把这个功能变成一小块之后,你就可以把它进行一个垂直的扩展,而不是说把这个机器变得越来越大,比如说变成两个CPU,然后四个CPU,然后八个CPU,然后16个CPU的机器,因为我们如果能够把它进行一个分割之后,我们就可以把它进行垂直或者是水平的这样一种分割。因此,这个分割可以使得我们可以扩展、垂直,并且可以独立地对它进扩展。

另外还有一个可及型的问题,如果这个架构被分割了成一小块一小块,如果有一块出现了故障,它不会影响这个架构其它的部分,所以这也是架构中的分割的非常好的部分,另外就是管理,管理也是,大家知道这个架构变成一小块之后,把不同的部分和功能区域进行脱钩,可以对它们进行单独的管理。

最后一点,也是非常重要,在现在的经济环境当中,就是成本的问题,所以我前面所他到的这样一种方式,比如购买越来越大的机器,就意味着你对这个机器付出的钱也越来越多,如果说四个CPU的价格并不是两个CPU的两倍,而且越来越多的CPU就更贵了,所以这里的成本曲线不是一个线性的,而是变得越来越高,因为你这个机器变得越来越大,这个就意味着很多的问题,所以这个不仅仅是硬件的问题,所以购买两个CPU肯定是比你买20个CPU的要差得多,它可以对于这个工作负荷来说,他们会非常有效率,而且可以降低你对于架构的投资,所以这个就是为什么要进行分割。

下面我们来介绍一下如何进行分割以及分割的模式。这里有两个模式:

第一个模式我想把它叫做功能性的分割。功能性的分割就是指把一个独特的功能作为一个专门的架构来服务它,另外一个架构就服务另外一个功能,所以在这个应用层面,就像刚才他说我们用的Tomcat,在这一层我们把整个处理的过程,分成不同的功能,这样的话我们专门有一个机器来负责,比如说一个查询的功能,另外一是拍卖的功能,或者是反馈的功能,或者是付款的功能,所以我们有220个不同的功能,有的功能很小,有的功能很大,但是的理念就是我们把整个的这样一个大的eBay的应用,把它变成一小块、一笑块,然后把不同的架构来服务于不同的这些小块,这个对于服务来说也是同样的一个道理。甚至在处理过程不同的阶段也是如此。

另外一种分析的模式就是我们的数据库,我们的数据库不是只有一个,而是有成千上万个,而且它们有不同的功能区域,所以我们有一系列的数据,这些数据有些是用户的数据,有一些是那些我们购买的东西的数据,另外一块数据其实就是交易的数据库,另外一组数据就是产品或者是账户,或者是反馈意见,所以我们大概有100个不同的数据库,有些小,有些大。每一个它都是可以服务一个不同的数据库,我们之所以这么做,是因为像我前面提到的,这样就可以对于不同的架构可以独立的升级,如果一下子用户增多了,就对用户数据库进行增加,而不需要对其他的数据库进行增加。

另外一个模式我们把它称为叫做水平的分割,所以就是在应用层面上,在我们图表的右上角,这些应用层面它都是,所以如果来了一个请求的话,通常来说我们有一个软件去对它进行分流,分流到不同的服务器,在我们刚才所提到的这个功能,我们就有一个查询的功能,在这个里面它们都是相互匹配和相互对应的,所以一个请求过来之后,系统会自动的把它导向一个相应的功能,数据这一块,数据它本身来说所以这样的话,我们不是一个用户数据库,而是有20个用户数据,所以1/20的据库存在数据库一,这样的话我们对用户的数故也进行了分割,另外对于商品我们也进行分割,1/27上是在某一个数据库,所以这样的话就有很多其它的一些策略,就是你怎么样对它进行一种分割,或者说你怎么把你的请求导向特定的一个数据库,或者怎么样去分割这个数据库。这里就是一个很好的功能,当然我们是有更加复杂的一些策略,这些策略主要是通过范围,比附说像用户,比如说有1到100把它放在一个数据库里面。你就可以想这是一个地图,这个地图会告诉我们一个特定的这样一个用户,它是在什么位置,我们主要的一个观念,我们应用了这些基本的组成部分,把这些基础设施都结合在一起,把他们的做成一个基于网络的。这里面含义就是自从我们分割了我们的这些应用,把它们分割成了很多的服务器,也就是说我们不用在某一个地方来存储这些所有的应用,所以eBay上面应用的并不是一个应用的服务器,所以这些用户你可以使用,用户可以在不同的时间跳动,比如说他到了我们的网站,它可以到一个用户池里面去,然后再走到另一个去访问,然后看一下其中的东西。他们可以出价,然后再跳到不同的铺里面,需要不同地点的这些应用,我们需要去转到用户那儿去,或者作出更好的改变修订,所以在服务器方面,它会维护用户的部分,这样的话它是比较可靠,而且易于升级,这样的话我们可以在任何时候把流量加以调整,这样用户也不会去丧失它的功能。

在这个地方,第二点我要提到就是这种异步化,就是说在你的程序里面所采用的是异步化的过程,我想说我们都希望尽可能地采用这种异步化,我们并不是同步所进行的,并不是让客户同时等待,我们是尽量地采用这种异步化,也就是把这个程序让它做一个异步化的流动,而不是同步化的流动,避免他们等待。尤其是在可能的时候, 我们有两种不同基础设施的组成部分,这样五能够让它们整合起来,能够让他们之间以一种异步化的方式进行交流,为什么要这样做呢?首先我们第一个想法就是可升级性、可扩展性,这样它们各个部分就能够独立地拓展。这样两个系统他们可再进行更好地同步的这种扩展,另外一就是它的可用性,有时候如果是同步化可能会A向B发布信息的话,如果是同步性的话B可能会获得这种服务,有时候B它并不可用,所以A可以同时去进行它的申请。这样的话,就是可以会改善它的这种可用性这方面的情况,这样就使得我们会有一个更加可用的这种基础设施,另一个动机就是它的这种等待时间问题,能够使得它能够更快地使用我们的服务。

另外第三个就是成本的问题,这个处理的数据等待时间会更短,比如说客户他电击了这个键,然后他会稍微等待几秒钟就可以获得我们的这种服务。

另外一种异步化的好处,就是如果我们做一个很好的应用,它就意味着如果这个用户他并不在等待,我们可以节省这个时间,比如说客户他给我们一分钟的时间,让这个页面能够展现起来,然后一分钟的运营就是一种异步化的方式去进行,这就是说使得我们有更多的灵活性。

最后一个还是成本。我们的想法就是,网络有一个用户的顶端,顶峰时间,对于我们来讲,每天的最大用量的时间可能是,最峰端的应用要比平时的应用多上两到三倍,我们有时候需要更多的,比如两到三倍的基础设施,实际上需要两到三倍的硬件,所以我们用这种异步的方式进行的话,我们就能够减少硬件的使用,就可以减少在网络顶峰时期的,对服务器的这种负荷。

另外再给大家一个例子,来看一下我们eBay是怎么做的,首先第一个就是Event Queue这么一个方式,我们的方法就是在一些主要的使用,用户使用的情况里面,比如说,当我们在可以去发送一个事件,其它的这些基础设施的话就可以对这个事件进行交互,去倾听这个事件,以后再去进行处理,我们的想法就是当用户去销售一个东西的时候,它就会进入我们的数据库,我们同时还可以使得有很多的用户可以同时去听,因为这个东西被放到了我们的网站上,很多的用户可以同时去倾听,然后他可以去做随后的一个处理。我们发现这个基础设施可以被升级,我们能够把这个事件交付不止一次,而且不是针对一个特定的定单,这样对于用户来讲可能变得比较难,但是对于整个的设施方面进行一个很好的延展。我们这样做的方式就是要确保任何一个客户来处理一个事件的时候,我们总能够用一种同样的方式进行处理,能够去无论他是一次还是多次的进行这个事件的请求。

从数学方面来讲的话,它会有一个同样的函数,如果你多次使用这个事件的时候,它会有一个同样的函数,针对这个定单来讲,我们发出的信息就是,并不是说去传输这些数据,客户他可能会回到主要的数据库来获得那个事件,这就意味着这些用户总能够去加工那些最新的数据,特别是针对某一个事件,这是事件排序。

第二个形式就是Message Multicast这个方面,首先就是我们的搜寻系统,系统实际上是我们把很多的主要信息,主要的交易信息存储到我们的网站上,如果有些人想做一个搜索,我们就把那些数据能够把主要服务器上的数据给它搬到搜索引擎上去,这样的话大家就能够找到一些最新的,比如每分钟内最更新的这些数据,这样的话能够做一些信息的转移,有时候很多人在同时点击的话,就能够把这些信息转移到搜索引擎上去,这些搜索引擎都会同时获得这些最新的数据更新。这样的话,我们会有一些可靠性,就能够使得我们来确保我们发出的这些信息,都会以一种最新的信息方式到达搜索引擎。这也是一种异步的传输的信息,这是刚才所说的异步的问题。

第三点就是把一切的请求都加以自动化,为什么加以自动化呢?这样对于我们来讲很容易去管理系统,而不用去加以配制,在eBay或者在Google,或者是在亚马逊等等,他们都采用了同样的想法,把这个系统建立起来的话,尽量让它反应很快,能够加以自动化,我们并不具有很多的操作器,我们只是说针对变化的环境自己加以自动化。这里我们的想法就是它一个可拓展性,折算的话我们就不用加太多的人员和机器,另外就是可获得性,就是说我们能够让这个系统能够从错误的信息里面,能够吸取教训,能够自己知道哪些地方出了问题。另外还有一个成本的问题地,要是用人工管理好几千个服务器的话,就会非常昂贵,使得eBay能够在进行一个非常简约的管理,这样的话每个系统管理员都可以管理几千个机器,这样能够减少我们机器的数量,而且能够减少我们人员的数量。大家看两个自动化的例子,第一个就是这种适应性的配置,在这里可以看一下这个例子,刚才我也提到了那个例子,对于客户来讲的话,他可能有很多这种事件的请求,有很多信息的处理,比如说客户找到一个新的事件需要多长时间,如果你要发现一个新的事件的时候,在相当短的时间内有多少事件能够得到处理,我们建造这个系统的时候,我们要考虑其中的一些配制,基础设施有时候要加以变化,一旦这些基础设施加以变化的话,我们这些参数也加以改动,无论是增加或者减少,比如说池等等,我们获得有一个更好的办法设计这个系统,让这个系统知道我们希望它们做什么,然后它就可以自己自动化的执行了,我们设定一些个别的参数,我们想告诉系统,比如说我们想让系统在15秒钟内去处理99%的这些事件,我们就深度开发这种系统,这样的话这个系统就能够自动地去针对这些请求进行处理,以便能够满足服务器的需求。也就是说在15秒钟内达到了99%的事件的处理,而用最小的资源,所以说系统本身就可以调整它的配置,来满足这一要求。然后我们所做的事情,就是说把新的这些客户的请求加到池里面去,系统能够自动地加以自动化的处理,比如说我们加十个客户,很快所有的客户都能够获得相应的信息,能够去减缓了他们的处理时间。这些信息都能得到平均的分布。

下面一个例子,就是关于机器学习的问题,我们可以说在eBay有很多的例子,我们利用机器学习的这种系统,在这里我想提一下就是关于搜寻方面的。我们的一个要求就是在eBay,如果有人要去搜寻一些东西,我们会告诉他们,我们拥有的最好的一些商品,可以说我们有上万种商品,但是我想给大家显示最好的15种,如何才是最好的显示呢?我们实际上采用了机器学习的这种系统,我们看一下用户在过去他需要了什么?比如说他过去搜寻了东西,比如他买这些产品,他搜寻了产品,然后的话就向客户未来点击的时候,我们就根据他的特点显示最好的产品,这是一个可以学习的一个,就像人大脑一样,它会有一些反馈的作用。我们给大家显示一下网站上的某一页,我们搜寻客户过去所要求的那些信息,我们给它组织起来,比如每周或者每个月,我们加以处理,我们就去决定我们应该怎么样去做,我们有一个数据的模型,我们就部署这些模型,根据客户的这些要求,然后机器就能够自己作出决定,然后就给出一些反馈,如何来改进这个系统,有时候是自动化的。

另外一方面就是在eBay我们希望有一个社区来告诉我们,对于i-phone这方面它有哪些最好产品,而不是我们自己去想当然的认为。第四个方面,在分布式系统里面有些东西会出错,我们要使得我们的系统能够容忍这些失误,也就是说这些系统就是每一个操作可能会失败,有时候有些资源可能无法获得,当我们的操作人员进行写这些程序的时候,他要去考虑这些情况,我们希望能够让这些基础设施人员尽快去识别那些错误,尽量从错误中尽快地恢复过来,尽可能短的时间内恢复过来,然后我们让机器尽可能多的去做更多的事情,在这里我们主要的驱动力就是说要获得信息的可用性。我们采用什么样的方式呢?首先就是一种识别故障,每一个服务器都是不断地去登陆所有的请求,然后去看一下随后的这些所有的处理,看一下针对服务器的请求,比如说我们登陆UL,这些所有的数据库或者所有的服务的请求,然后根据这个模型可以说每天大约有2TB的登陆信息加以处理,然后看一下它请求的方式,去看这些失误故障的类型,有时候可以户进行这种的故障的识别,如果这个请求无法到达数据库的某一个事件,那么这个服务器的可以去自动的进行识别,然后去进行连接。我们用这种自动的系统能够去识别出这些故障。这就是识别出这些硬件的失误。然后我们还有一个如何去处理人的错误,主要是BACKS,我们也有一些聪明的开发商,程序开发员当然没有人是完美的,或者人力都可能会出问题,为了更好的处理这个问题,我们的规则之一,就是我们要把所有的这些事件的做法都被收回,或者都能够被改正,对于所有的数据库来讲都是这样的,我们无论做一个网站的改变,我们希望这些改变都能够得到反馈。无论是系统新的体系,还是说旧都能够防止这些问题的产生。

对我们来说帮助最大的一件东西,就是我们把它称为叫YON或者是YOFF,也就是在eBay网站上每一个特点都有ON OFF的这样一个开关的状态,也就是说我们可以用新的代码更新,也就是说我们在更新我们的网站的时候,我们用户体验不会发生任何变化,当我们觉得在合适的时候,我们就可以打开这些新的特点,只要我们需要,这样就会有几个好的特点,第一点我们不需要,我们可以把这些特点开和关非常快速,也就是说在eBay当中,大概是几分钟的时间就可以把这些状态或者开关进行改变,但是如果我们需要进行一个代码的变化,在我们改变网站的时候,它可能需要几个小时甚至几天的时间,所以这就可以使得我们可以非常快速地进行变化,把这个开和关的特点。并且可以使得我们快速处理问题的能力。

最后一点就是所谓的优雅降级,我们这里所谓的优雅降级就是指这个应用它在试图和一个已经不存在的数据库进行对话,我们该怎么做。第一件事情就是说我们的应用应该记住资源是不再可及了,所以它就会记录Markdown这个词语,资源已经不再存在了,也有可能是不可及的,或者是速度特别慢,如果这个资源是被用来做一些不是很关键的这样一些动能,我们就不要这个功能了,但是比较麻烦的就在于是说,这个资源是必需的,如果我们需要做一些比较关键的功能的时候,在这种情况下,我们通常是要重新来尝试这样一个运营,或者是我们延迟这样一个操作,比如说我们可以用一种“非同步”的方式实现。主要的理念就是说,我们所有的应用开发人员,还有我们的架构,它其实是都应该知道,任何的组成部分,或者任何的资源都有可能不及。对我们来说非常重要的一点就是,开发人员和商务的逻辑人员,都会知道在这个资源不再可及的时候我应该怎么做。

所以最后一点,我们的最佳实践实际上我想把它称为“拥抱不连续性”。我非常希望能够使得系统变得更加可持续、可连续,但是实际的情况是你不可能什么都有。因为有这样一个理论模型,这个最早是由一个叫Brewer的教授在十年之前,它也是做了一个网络公司,他就提出这样一个理论的假设,他的理论假设就是任何分散式的、任何分享式的数据系统最多只能有以下的两种特点。第一种就是连续性,也就是说所有的架构都在同时看到同样的数据。第二个特点就是可及性,前面就谈到了,它的本质性含义就是我对一个系统作出需求,我肯定可以得到一个回答,尽管在这个系统当中可能会有一些故障。最后一个特点就是叫做可以容忍分割,就是我们能不能够把这个架构分成小块,就是容忍分割,这里比较好的一点,就是这三种特点,我们希望它们能够,我们尽管把这个架构分成了小块之后,这三个特点仍然适用,但是Brewer的理论设定是表明这三个特点当中只能选择两个,因此如果一个网站像eBay如果有很高的可及性,如果我们想有可扩展的话,我们就要有可分割的选择,我放弃了连续性,这对于所有可分散式的系统都是很关键。我们怎么样,主要的工作是选择一个比较适当的连续性,对特定的应用或者特定的用户体验选择适当的连续性,我们是希望能够拥有可及性和分割性,所以这样的话我们就消除了这样一个及时的连续新。

大家知道在世界上大部分的系统当中,雅虎、Google、eBay或者是IBM其它大公司,他们都不要求这些及时性或者是连续性,或者是一致性,因为通常来说,尽管在一个架构它认为是一部分的他认为是这的数据,我发现在很多金融系统当中,他们也不需要这样的一种连续的一致性,在金融系统当中进行交易的时候,比如说货币的交易,在中国的建设银行和美国银行之间进行交易的时候,它并没有一个及时地的一致性新,就是在双方的系统当中,一个一方可能认为发生这样一件事情,而另外一方可能认为发生另外一件事情,最后他们会进行清算,这个是我们认为出现的交易,而美国银行会认为说也是我们的认为的,通常他们来说是一样的,有的时候是不一样的,如果不一样会有一个自动的系统帮助他们解决这个问题,主要的观念就在于在交易刚刚结束之后,很有可能中国建设银行和美国银行它的观点是不一样的。所以我们在eBay就利用了这一点,我们怎么样来解决这个问题呢?我们把一致性看成是一个光谱式的,也就是在有一些框架当中,可能并不是非常重视这种一致性,比如说这里举个例子,就是当我们比如说在销售一个新的商品的时候,他们也有可能把他们的偏好表示出来,在大多数情况下,这种我们所进行的变化,这个新商品的变化,还有他的偏好变化都会出现,同时出现,但是如果这两个变化没有同时出现,那也没关系,因为我们也不会失去对这个偏好的最终,因为他们更关注的是他们要销售的新的产品。

还可以举一个例子,就是一个搜索引擎的例子。这个搜索引擎所看到的网站内容可能和我们主数据库的更新有一血落后,这个是很正常的,因为它大概需要一分钟或者几分钟的时间来更新五这个新的产品和新的信息,这是没关系的。另外,在框架当中,我们需要及时地升级,及时地匹配,那么也就是我们的供应问题,在eBay就是通过拍卖的方式,在典型的拍卖过程中,我们通常是去拍一个产品,比如说一个人说19、20、21、22,对我们来说就非常重要的,必须要有一个一致性这样一个观点,当这个拍卖结束的时候,我们不希望出现任何的不确定性,就是谁赢得了这个拍卖。所以在这种情况下,我们要保证所有的标,拍卖,都是进入到同一个部分,架构的同一个部分,这样的话我们就可以保证说及时的一致性,所有的这些拍卖都可以保持及时的一致性,在这一块如果说它没有的话,那我们就没有办法去接受这些标价。所以根据凯普特理论,在特殊的案例当中,选择的是一致性和分割性,而放弃了可行性。

我们确实有一种方式可以保证在一个分散系统当中的及时匹配,一致性,这个就是叫做一致性的保护原则,因为在很多的商务的软件当中都可以允许你去做这种分散式的交易,但是我们不做。而我们的理论就是确实有一个更大的前期的投入,如果是在可行性、在性能,还有在其它的方面,因为如果我们总是做这种分散式的交易的话,前期的投入非常地大,所以我们对于一致性的态度就是开始我们可能会在后期来解决这个一致性的问题,就像我前面所提到中国建设银行和美国银行之间的交易,所以并不是立刻就出现这样一种一致性,而是在一天结束的时候得到这种一致性,所以我们通常在写一个一应用的时候,我们通常是用非常认真的态度来写,一致性的窗口可能是非常小的,也就是说不同的架构之间所看到的不一致性是非常小的,但是我们仍然不能够保证及时的一致性,所以我们只能够说保证最终能有一致性,保证的方式就是通过一些非同步的一些事件,比如说我们会来进行一些测算,或者协调方式,清算这样的一个方式,就像银行之间做的那样,这个就可以保证我们的一致性,同时我们还有一个拓展和可及性这样的一个架构。

因此我下面来总结一下我们所五有学到的一些经验,第一点就是做分割,对任何东西都应进行分割,如果不能够分割就不能扩展。

第二个最佳实践就是,尽量使用非同步性。

第三就是要把每件事情都自动化。

第四点就是要记住每件事情都有可能出现故障。

最后一点就是说我们要拥抱不一致性,因为我们希望给我们自己一个自由,就是可以我们最终实现一致性,但是在过程当中不一定实现及时的一致性。谢谢! (本文来源:网易科技报道 )

【已有0位网友发表了看法,点击查看。】 复制网址 | 邮件转发

关于 Qcon

  • 吕建伟:不要把自己的公司定位为软件公司 2009/04/07
  • Henrik Kniberg:多团队的Sprint计划 2009/04/07
  • Martin Fowler:使用Ruby将更有效率 2009/04/07
  • Dylan_Schiemann:面对开放性的网络 2009/04/07
  • Jeff Barr:亚马逊利用云计算的实战经验 2009/04/07
  • 没有相关论坛帖

跟贴区

已有0条跟贴(点击查看)
匿名

网易科技24小时点击排行

  1. 数字电视强制推广受质疑 已成牟取暴利工具
  2. 十一款最火爆WCDMA手机大推荐
  3. 双卡双待 超酷“蜘蛛侠”手机网易试玩
  4. 512MB容量DDR3 高频版9600G
  5. 诺基亚侧滑双键盘E75北美地区高价开卖

网易科技48小时评论排行

  1. 数字电视强制推广受质疑 已成牟取暴利工具
  2. 中电信部署“B版本” 3G时代运营商竞速
  3. 中国面板产业面对残酷事实:被日企牢牢绑定
  4. 柳传志再谈复出:杨元庆早几年当CEO很可
  5. 国内手机厂商“偷跑”WiFi

网易科技视频推荐

  • 英特尔上海关厂跟踪:重点做研发
  • 日本“艺术手机”售价近万美元
  • 联想少帅陈绍鹏:解读七大发展疑问
返回网易科技首页 <img style='max-width:300px;' id="img6" src="http://img1.126.net/channel4/005497/ms360300_090407.swf" />
精彩推荐
网易财经/汽车推荐
  • 荣智健辞中信泰富主席
  • 牛人开13辆豪车显摆
美容健康
  • 45岁以前停经不正常!
  • 口臭--口臭--怎么办?
  • ■睡觉减肥---瘦到你尖叫
  • ■祛斑--美白--有绝招■
  • 白发---脱发---如何治疗!
  • 睡觉-丰胸--30天增大2罩杯!
  • 永久脱毛!给肌肤除草!
  • 健康先知 治病早治
  • 爱“护”健康 疾病护理
  • ★螺旋减肥--减的太快了
  • 莫让“打呼噜” 毁了后半生!
  • ■狐臭-腋臭-明星支招 图
网易娱乐推荐
  • 孙志浩曾对贾静雯施暴
  • 孙红雷“丑男”大翻身
网易体育推荐
  • 双色球得主缴税2080万
  • 刘翔演电影超越张艺谋
创业商机
  • ■睡觉减肥~瘦到你尖叫!!
  • 不一样冰淇淋日赚8000
  • 国家环保政策赚大钱
  • 做一个县 年赚100万
  • 白手起家 一天赚一万
  • 投资1000 半年成富翁!
  • 苹果手机--热卖!火爆
  • 开个足疗店,月赚20万!
  • 上班兼职两不误好项目
  • 视力从0.1--1.0大揭秘
  • 童装批发 8元起卖
  • 教您怎么白手起家-图
网易女人推荐
  • 不足160的身材也火辣
  • 芙蓉姐姐:这才叫贵妇
精彩推荐
  • ■丰胸:提升2罩杯的秘诀!
  • ■男人啤酒肚 头上悬着6把刀
  • ■有狐臭-腋臭-怎么办??
  • 爱“护”健康 疾病护理
  • ★女人-提前衰老-怎么办?
  • 白发-脱发-绿色疗法
  • ■女人-提前停经-怎么办?
  • 智慧的孕妈妈更美丽
  • 为健康行业撑起一片明镜
  • 美丽的女人更自信
  • 涵盖健康要闻 健康生活导航
  • ■睡觉减肥---瘦到你尖叫
健康指南
网易科技/数码/手机推荐
  • 杨元庆早当CEO会淹死
  • 暴汗笔记本电脑售10元
.con39 {float:left;width:350px;height:150px;margin:0 0 0 6px;display:inline;padding:0;font-size:12px;border:#f60 1px solid;} .con39 img {border:0;} .con39 a{color:#333; text-decoration:none;} .con39 a:hover{color:#f60;text-decoration:underline;} .con39 .logo39{float:left;width:101px;height:20px;} .con39 .menu39 {float:left;margin:0;padding:0;} .con39 .menu39 li{float:left;background:url(http://images2.cache.netease.com/channel7/39/button1.gif) no-repeat 0 0;width:46px;height:16px;margin:0 0 0 3px;padding:4px 0 0 0;text-align:center;display:inline;} .con39 .menu39 li a {color:#333 !important; text-decoration:none;} .con39 .list39 {float:right;width:200px;margin:0 0 0 0;padding:0;} .con39 .list39 li {float:left;width:193px;line-height:20px;text-align:left;margin:0;padding:0 0 0 0;list-style:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} .con39 .list39 li a {color:#467902;} .con39 .list39 li a b {font-weight:normal;color:#333;} .con39 .focus39 {float:left;width:143px;height:126px;+height:125px;margin:5px 0 0 1px;text-align:center;display:inline;border-right:#f60 1px solid;} .con39 .focus39 img {width:140px;height:105px;margin:0 0 4px 0!important;} .con39 .focus39 .pic,.con39 .focus39 .title{float:left;width:142px;} .con39 .kw2 {float:right;width:200px;height:14px;margin:1px 1px 0 0;padding:3px 0 1px 3px;display:inline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left!important;border-top:#fc0 1px solid;background:#ffe;} .con39 .kw2 a, .con39 .kw2 a:hover { color: #F00; font-weight: bold; } .con39 .tt {float:left;width:200px;font:20px 黑体;padding:0;margin:5px 0 0 0;text-align:center;} .con39 .tt a{color:#333;} 医改发力"看病贵看病难" 保健品广告真假教你辨
  • [减肥] 教练示范 13招大瘦全身(图)
  • [论坛] 揭黑:鲜果汁诈你没商量
  • [两性] 便前比便后洗手更健康?
  • [新闻 ] 千余网友发帖力挺安乐死!
小孩患血管瘤该尽早治吗? 专家根治癫痫病——有妙招!
网易论坛推荐
  • 成人用品展为何用真人
  • 清明汶川映秀行祭
网易首页-新闻-体育-亚运-娱乐-财经-汽车-科技-数码-手机-女人-博客-论坛-房产-家居-健康-旅游-视频 rss
主编信箱 热线:020-85105316 给网易提意见  About NetEase - 公司简介 - 联系方法 - 招聘信息 - 客户服务 - 相关法律 - 网络营销
网易公司版权所有
©1997-2009