今天公司请了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%却需要一个及其复杂的方法才能保证。
在大架构下是很难实现的,我们选择一些重要的数据重点保障,投入很好的硬件资源。
对于一些用户无关痛痒的数据,可以用便宜的资源。即使丢失也无所谓。
如果你从事的是电信或金融行业,这个就会不一样。
可以不服务,数据不能不一致。当然投入的成本也会不同。
阅读(3036) | 评论(0) | 转发(0) |