InfoQ

新闻

文章:可伸缩性最佳实践──来自eBay的经验

作者 Randy Shoup 译者 郭晓刚 发布于 2008年6月12日 下午7时22分

社区
Architecture
主题
设计,
性能和可伸缩性
标签
eBay

eBay作为一家高流量、高负载、拥有海量数据的网站,可伸缩性是关乎生死的问题,每一项架构决策都不得不把可伸缩性摆在首要地位。eBay架构师Randy Shoup与我们分享了他们总结出来的几条最佳实践:

  1. 按功能分割
  2. 水平切分
  3. 避免分布式事务
  4. 用异步策略解耦程序
  5. 将过程转变为异步的流
  6. 虚拟化所有层次
  7. 适当地使用缓存

Randy Shoup在文章最后再一次强调了可伸缩性的重要:

可伸缩性有时候被叫做“非功能性需求”,言下之意是它与功能无关,也就比较不重要。这么说简直错到了极点。我的观点是,可伸缩性是功能的先决条件——优先级为0的需求,比一切需求的优先级都高。

希望eBay的经验能对各位读者有用,希望能帮助您从新的角度审视自己的系统,无论其规模如何。

阅读全文:可伸缩性最佳实践:来自eBay的经验

异步和切分已经比较有体会 发表人 pi1ot liu 发表于 2008年6月12日 下午9时43分
刚刚看到还有个全文连接... 发表人 pi1ot liu 发表于 2008年6月12日 下午10时4分
Re: 异步和切分已经比较有体会 发表人 Mi Zhou 发表于 2008年6月15日 上午9时38分
虚拟化所有层次的体会 发表人 海洋 谢 发表于 2008年6月16日 下午10时16分
Re: 虚拟化所有层次的体会 发表人 WenFeng Xiao 发表于 2008年6月19日 上午12时46分
Re: 虚拟化所有层次的体会 发表人 struct chen 发表于 2008年6月20日 上午4时51分
确实很经典的说法 发表人 liu zhiguo 发表于 2008年11月27日 上午1时59分
说的真是不错~ 发表人 宇 周 发表于 2009年10月22日 下午10时54分
  1. 返回顶部

    异步和切分已经比较有体会

    2008年6月12日 下午9时43分 发表人 pi1ot liu

    异步和切分已经比较有体会,对于大流量系统确实很重要,不过第6点:虚拟化所有层次,是什么意思,我还理解不了

  2. 返回顶部

    刚刚看到还有个全文连接...

    2008年6月12日 下午10时4分 发表人 pi1ot liu

    不好意思 :)

  3. 返回顶部

    Re: 异步和切分已经比较有体会

    2008年6月15日 上午9时38分 发表人 Mi Zhou

    异步和切分已经比较有体会,对于大流量系统确实很重要,不过第6点:虚拟化所有层次,是什么意思,我还理解不了


    我的理解是:其实跟模块解耦类似,将整个系统分层,比如有Web展现、业务逻辑、数据存储等若干个层次,分层的好处在于各个层的设计、开发、维护可以相对独立,类似“对接口的编程”思想。

    就拿它举的虚化数据库的例子来说吧,因为采用了各种数据拆分策略,所以业务逻辑在进行数据操作的时候可能需要操作不同服务器、不同数据表里的数据,这样增加了业务开发、维护的成本,尤其是在大规模系统中,业务功能点众多且复杂,这样的成本不能忽略;而增加一个虚拟数据层后,业务逻辑只跟这个层打交道,不需要知道数据的物理存储方式

  4. 返回顶部

    虚拟化所有层次的体会

    2008年6月16日 下午10时16分 发表人 海洋 谢

    数据库厂商如果能提供虚拟化的数据库层应该很不错,我孤陋寡闻,是不是已经有这样的产品了?

  5. 返回顶部

    Re: 虚拟化所有层次的体会

    2008年6月19日 上午12时46分 发表人 WenFeng Xiao

    我想Oracle收购Tangosol以后提供的数据网格(Data Grid)应该就是这样的东东吧。

  6. 返回顶部

    Re: 虚拟化所有层次的体会

    2008年6月20日 上午4时51分 发表人 struct chen

    象Ebay 这样的大型网站,数据切分肯定是少不了。
    不知道ebay水平切分如何做?

    如果用 amoeba for mysql,进行数据库水平切分、垂直切分、读写分离都应该非常轻松,当然前提是目前amoeba只支持mysql。

  7. 返回顶部

    确实很经典的说法

    2008年11月27日 上午1时59分 发表人 liu zhiguo

    我想有一个问题,大家一般如何保证这些活动的一致性。比如像Ebay这样的公司,如果保证设计、实现的一致性,应该主要是设计的统一性。

  8. 返回顶部

    说的真是不错~

    2009年10月22日 下午10时54分 发表人 宇 周

    很多解决办法以前都用过。但是没有进行系统的总结。看到这个上面说的。有一种豁然开朗的感觉。

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。