Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288687
  • 博文数量: 37
  • 博客积分: 1296
  • 博客等级: 中尉
  • 技术积分: 481
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-24 17:00
文章分类

全部博文(37)

文章存档

2013年(1)

2011年(21)

2010年(4)

2009年(2)

2007年(9)

我的朋友

分类: LINUX

2011-07-14 22:26:49

今天公司请了ebay的架构设计老大来做交流,虽然讲的有点流水帐不过还是有闪光点的。
总结就是5点 3方针 ,其中几点是相同的。感觉最最重要就是 可切分,下面自己记几个要点。

ebay的主要设计点:
1. 可切分:
可切分代表着易扩展,大型架构从设计之初就要以这个为主,不管是下层的数据库 还是上层代码 都要这样。
拆分分为2种:
功能拆分: 比如ebay  买东西和买东西
水平拆分: 在用户点击购买后 的各各环节,网页上的各个数据块。

2. 异步处理:
数据会拆分然后送至多个处理节点,处理后可能会先后到达数据库,用数据库保证顺序。
通过各种方法把不重要的数据延后处理,把有限的运算能力给运算。

3. 搜索:
索引分割,通过各种热门关键字,自己建立自己的索引。
刷新:每分钟会批量把新的商品加入相应的索引。

4. 自动化:
环境调整:预测多个环境并自我调整,这些环境可以由下面这个提供。
自我学习:通过脚本收集数据。
上面2点说的很快,感觉有点虚。对于实际应用可能需要较大精力实现。

5. 可失败:
失败不可怕,问题是下次继续失败。
留下信息: 如果失败一定要保留信息,可以追查bug
可检测  : 如果失败,可以通过脚本发现做操作。
另外说到一个方法:
ebay会把一些新代码放在所有代码中,在升级时用开关启用。如果有问题可以关闭开关,从而迅速回滚。

ebay还有一个称之为主线的东西,所有数据都会跑到这个上面,然后再选则最好的位置。
说的有点玄乎。
还说到用户登录的相关问题,系统登录会对数据库造成很大压力。
用cook可以解决,存在cook的uid会被加密保证用户。
========================================================================================

上面是ebay的一些主要设计点,其中又讲到了大型系统的3要素。属于通吃的类型:

1,可拆分:
这个是刚才说的,重中之重。不可拆,就等死。

2. 可服务性:
一个网站最主要就是可服务,如果做不到这点就网站无法很好运营。

3. 数据一致性:
这个是很难做到的,一个简单的逻辑完成99%的事情,剩下的1%却需要一个及其复杂的方法才能保证。
在大架构下是很难实现的,我们选择一些重要的数据重点保障,投入很好的硬件资源。
对于一些用户无关痛痒的数据,可以用便宜的资源。即使丢失也无所谓。

如果你从事的是电信或金融行业,这个就会不一样。
可以不服务,数据不能不一致。当然投入的成本也会不同。

阅读(3048) | 评论(0) | 转发(0) |
0

上一篇:shell if 小数 比较

下一篇:vsftp 调错

给主人留下些什么吧!~~