再谈 eBay 的扩展性最佳实践

原贴:http://www.dbanotes.net/arch/best_practices_for_scaling_websites_lessons_from_ebay.html

再谈 eBay 的扩展性最佳实践

很多人都觉得 eBay 在 QCon (北京) 上的技术讲座不错,但对我来说,其实冲击力没那么大了。eBay 一两年前就是这个 PPT 。不过还是比 Amazon 的 Jeff Barr 强了很多,以后要是开个什么会,你把 Jeff Barr 请来还讲那个销售文档,估计自己都不好意思。

不过,eBay 这次的PPT 总算还是有点更新的。

1)数据分片(Partition Everything)

说是分区(Partition),这里不能简单等同于 Oracle 的分区,理解成分片(Sharding)就好啦。可以参考一下我以前写的科普小文:开源数据库 Sharding 技术 (Share Nothing)。这里要强调一下的是,分片是在数据量的确有规模的时候才适合进行,如果单节点足以应付,那么还是不要冒进。

从分片的模式上,eBay 主要根据功能切分(Functional Segmentation)和水平分割(负载均衡考虑),作为推论,所有会话都是无状态性的。

2)异步处理(Asynchrony Everywhere)

其实对于任何网站来说,过度追求"同步"化设计还是比较糟糕的做法。以用户能观察到的数据为视角进行设计,中间可以最大限度用异步来完成。

eBay 的举例的模式有两个,一个是事件队列(Event Queue),另一个是信息分发(Message Multicast)。前者基本上是个生产者--消费者的模型。后者主要用在搜索的架构上。

注意到图中的消息总线,这才是 eBay 整个架构中的动脉,估计轻易不会批露技术细节

3)自动化(Automate Everything)

这里的自动化举了两个例子,一个是针对运维方面的,另外举了关于机器学习的东西,这是演讲者 Randy Shoup 的强项所在。

eBay 的自动化,在一年前的另一篇文章里可以窥测一点东西。只是这篇文章当初没有被更多人重视,参见:eclipse at eBay。可以看到 eBay 能在自动化方面做得这么好(起码敢出来讲)不是一朝一夕之功。

4)故障检测与回溯(Remember Everything Fails)

更好的失败检测机制: 监控每天超过 2TB 的日志,根据日志中的相关事件得出判断或者预警。这个看起来简单,但实现起来还是需要一点技巧和策略的,重要的是,需要不断根据结果的反馈去改进。

完美回滚: 任何服务都通过服务配置中的标记来识别,无痛回滚。(个人感觉这个非常有难度,尤其是升级的时候)

优雅降级(Graceful Degradation):能够相对容易的对应用标记"Marks down(下线)"

5)拥抱不一致性(Embrace Inconsistency)

举了 CAP 原则,程立将其形象描述为帽子戏法,非常准确。说起一致性,自从 Amazon CTO Werner Vogels的 Eventually Consistent 一出,基本上不需要我废话了,这就是事务处理的九阴真经,大家回家慢慢参详好了。

eBay 也有自己的绝对准则: 绝对没有分布式事务(两阶段提交), 通过状态机与操作顺序最小化不一致性,通过异步事件(消息总线?)达到最终一致性。

--EOF--

另外小道消息:Amazon CTO Werner Vogels 可能会参加六月份在杭州举办的侠客行大会。

以前的老帖子:eBay 的Scalability最佳实践

| Permalink | TrackBacks (0) | | Edit


Generator | Trampoline

@import url(http://www.google.com/cse/api/branding.css);
自定义搜索

本文相关评论|Comments(13)

lithium 的评论:

eBay 也有自己的绝对准则: 绝对没有分布式事务(两阶段提交), 通过状态机与操作顺序最小化不一致性,通过异步事件(消息总线?)达到最终以执行。
------------------------------
貌似有错别字,应该是“达到最终一致性“

Fenng 的评论:

@lithium

反馈够快。更新了。多谢!

anysql 的评论:

理解别人的PPT比较容易一些, 但要下决心做, 及何时下决心做更难.

Fenng 的评论:

@anysql

谁能承担风险并负责,谁去做好了

Jinzhu 的评论:

我是来打酱油兼祝生日快乐的,哈哈 :)

anysql 的评论:

比较好奇,当初eBay如何一步一步推动这个的,阻力一样是相当大的,谁是那个勇士.

路途志 的评论:

我接触过的几位ebay牛都很低调,技术着实不错。

Fenng 的评论:

@anysql

没有人做,你来做就是最合适的

面经 的评论:

这次Qcon的内容实在是太丰富拉

木匠 的评论:

哪里下载演讲稿呀? 是不是仍旧和这篇一样?
http://www.infoq.com/cn/articles/ebay-scalability-best-practices

鄙人在我们公司推动的Function split一个月前已经启动啦.

1) http://zhu1.blogspot.com/2009/04/talk-to-coo.html
2) http://mujiang.blogspot.com/2009/01/overview-asynchronous-process-change.html

B2Bmarts 的评论:

外企作事还是比较实在,不象国内些平台,事没作,先把锣敲得轰天响!

Eagle Fan 的评论:

to anysql

据我所知,当初推数据库sharding的人就是Mazen了

FovWeb 的评论:

大哥,您好。已经持续关注您的站好久了,想与您交换个链接。算是对自己的小站简单推广一下吧。内容是关注互联网和网站相关技术与运营。多向大哥学习吧。。。

 

你可能感兴趣的:(再谈 eBay 的扩展性最佳实践)