eBay 的数据库分布扩展架构

原贴:http://www.dbanotes.net/database/ebay_database_scale_out.html

eBay 的数据库分布扩展架构

在过去的 Blog 中, 我(插一嘴:这里的"我" 如果替换成 "Fenng" 似乎有些自恋, 也不是我喜欢的行文语气, 可发现转贴不留名的行为太多了,他大爷的)曾经介绍过 《eBay 的应用服务器规模》 , 也介绍过 《eBay 的数据量》,在这篇文章中提到过 "eBay 购买了 Quest Share Plex 全球 Licence 用于数据复制",这个地方其实没有说开来。

对于 eBay 这样超大规模的站点来说,瓶颈往往最容易在数据库服务器上产生,必定有一部分数据(比如交易记录这样不容易水平分割的数据)容易带来大量的读操作,而不管用什么存储,能承担的 IO 能力是有限的。所以,如果有效的分散 IO 的承载能力就是一个很有意义的事情。

经过互联网考古学不断挖掘,路路续续又现了一些蛛丝马迹能够多少说明一些问题。客观事实加上主观想象,简单的描述一下。见下图:

ebay_shareplex_F5.jpg

通过 Quest 公司的 Share Plex 近乎实时的复制数据到其他数据库节点,F5 通过特定的模块检查数据库状态,并进行负载均衡,IO 成功的做到了分布,读写分离,而且极大的提高了可用性。F5 真是一家很有创新性的公司,虽然从这个案例来说,技术并无高深之处,但方法巧妙,整个方案浑然一体。

F5公司专门为Oracle 9i 数据库开发了专用的健康检查模块,通过调用F5专有的扩展应用校验(EAV)进程,F5能够随时得到Oracle 9i数据库的应用层服务能力而不是其他的负载均衡设备所采用的 ICMP/TCP 层进行健康检查。

这个图来自一篇《F5助力eBay数据库服务器负载均衡》的软文,真是一篇很好的软文,国外恐怕不会出现这样"含金量"极高的东西。

当然,这个技术架构可不算便宜。Quest 的 Share Plex License 很贵,而且,对于每个结点来说,都需要数据库 License 与硬件费用。但优点也很多:节省了维护成本; 数据库层面的访问也能做到 SOA; 高可用性。

国内的一些厂商比较喜欢给客户推存储级别的解决方案。通过存储底层复制来解决数据分布以及灾备问题。这个思路似乎太传统了,对于互联网企业来说多少有点过时。

BTW: 对 Amazon 的存储架构非常感兴趣,谁/哪里能提供点线索呢?

--EOF--

| | Comments (14) | | Edit

<script type="text/javascript"> function affiliateLink(str){ str = unescape(str); var r = ''; for(var i = 0; i < str.length; i++) r += String.fromCharCode(2^str.charCodeAt(i)); document.write(r); } affiliateLink('%3Ec%22jpgd%3F%20jvvr8--uuu%2Cvgzv/nkli/cfq%2Camo-%3Dpgd%3F62%3B%3A1%20%3COmlgvkxg%22%5Bmwp%22Qkvg%3E-c%3C'); </script> Monetize Your Site
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&cpa_choice=CAAQhaT2_gEaCI52gVKP95-sKLGsuIEBMAA&oe=UTF-8&dt=1191083669941&lmt=1190476043&format=ref_text&output=textlink&correlator=1191083669941&url=http%3A%2F%2Fwww.dbanotes.net%2Fdatabase%2Febay_database_scale_out.html&region=_google_cpa_region_&ref=http%3A%2F%2Fwww.dbanotes.net%2Farchives.html&cc=100&ga_vid=353176132.1191083670&ga_sid=1191083670&ga_hid=815721582&flash=9&u_h=800&u_w=1280&u_ah=776&u_aw=1280&u_cd=24&u_tz=480&u_his=1&u_nplug=2&u_nmime=3" language="JavaScript1.1" type="text/javascript"></script> Get Firefox with Google Toolbar for better browsing
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&cpa_choice=CAAQidTQgAIaCEapPfRcsfp6KN2uuIEBMAA&oe=UTF-8&dt=1191083670229&lmt=1190476043&prev_fmts=ref_text&format=ref_text&output=textlink&correlator=1191083669941&url=http%3A%2F%2Fwww.dbanotes.net%2Fdatabase%2Febay_database_scale_out.html&region=_google_cpa_region_&ref=http%3A%2F%2Fwww.dbanotes.net%2Farchives.html&cc=100&ga_vid=353176132.1191083670&ga_sid=1191083670&ga_hid=815721582&flash=9&u_h=800&u_w=1280&u_ah=776&u_aw=1280&u_cd=24&u_tz=480&u_his=1&u_nplug=2&u_nmime=3" language="JavaScript1.1" type="text/javascript"></script> Generate revenue from your website. Google AdSense.

本文相关评论|Comments(14)

ambitear 的评论:

好文,BTW: 但“有”点也很多...SQL不能有错,语文也不能出错哦!

bixuan 的评论:

如果可以试试nginx做代理,采用读写分离~~

Fenng Author Profile Page 的评论:

ambitear: 已经更正了,谢谢。

Fenng Author Profile Page 的评论:

bixuan: nginx 不过是个 http proxy ,对于eBay这样的数据库端的负载均衡作用不大

Fwolf 的评论:

这种读写分离在mysql应用中非常多把
直接把binlog灌到slave服务器中就成了
每个slave带n个web。。。规模不太大的情况下一般就够用了

Fenng Author Profile Page 的评论:

Fwolf, 你说的对

我下一篇 Blog 就是关于 MySQL 的

Fwolf 的评论:

恩,期待着
另外能否介绍或者想像一下多master的情况?
简单的mysql双向复制不好用的

sybase的复制服务器没用过,也没见过太详细的分析

pgsql好像也有同步的工具,不知好用不

anysql 的评论:

binlog支持不了多少事务的, 别以为mysql有多快.

cauherk 的评论:

我有个问题。
一个业务系统往往先生成一个订单,然后调用不同模块的应用,这个应用查询这个订单,加入销售信息,最后事务提交。
如果采用这样的方案,查询和写入分离,那么如何保证session的未提交读的问题?

Fenng Author Profile Page 的评论:

把事务硬生生的拆开 ?

钻这种牛角尖有什么用 ?

cauherk 的评论:

不是我想钻牛角尖,只是我想了解除了本地事务以为,作为SOA的典范的eBuy,想请你更加详细的介绍这种架构如何处理分布式事务。国内现在的特大型应用,特别是移动和电信,都存在单个或者单个RAC的压力过大的问题。

Fenng Author Profile Page 的评论:

把单个事务拆开不是自寻死路麽,逆向思维一把,难道有一个未完成的事务会有N个读取需求麽 ?


国内的应用不说也罢

piner 的评论:

国内也有做的好的,不过,一般都是被厂商忽悠,存储层容灾的比较多。

victor666666 的评论:

哈哈,这句"他大爷的”真叫过瘾啊

添加评论

 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
什么是eBay Helper? eBay Helper 能够让eBay卖家轻松处理eBay订单,打印地址标签,管理库存,产品采购等针对eBay网店外贸卖家的进销存软件,有了它,能够为您节省大量的人力及时间,让您的eBay外贸事业高速发展. eBay Helper 具体有什么功能? 1 产品库存系统 产品资料管理 -- 产品分类,多语言产品描述,图片库,让您的产品在LISTING时随时能找到相应的资源 产品采购管理 -- 供应商管理,采购入库,成本计算 产品库存管理 -- 库存盘点,转仓调拨,库存变动记录 2 订单管理系统 eBay 订单导入-- 订单将根据库存状态进入滞留或等待发货状态,并根据设定的发货规则自动选择发货方式 订单添加 -- 订单除了可以从文件导入之外,您还可以直接添加订单,其它销售渠道的订单(淘宝,网店)也可以添加到系统中 退款管理,重发管理,退货管理 -- 随时解决销售中的各种情况 发货和地址标签打印 -- 您可以通过打印出来的标签扫描发货,也可以批量设置订单发货状态 同步eBay发货状态并给卖家留下Feedback -- 这些工作将由系统代替,再也不用浪费时间手动去做了 3 其它丰富的功能 店铺管理 -- 与eBay店铺紧密结合 订单发货方式和邮费管理 -- 给订单自动选择发货方式,并根据产品重量计算出所需邮费 公告管理 -- 让您的员工随时了解企业最新消息 数据报表 -- 把握产品销售情况,挖掘实用数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值