EBay架构案例分析
EBAY可伸缩性策略
- 1、 Partition Everything 切分万物,能划分尽量划分 从领域数据到功能
- 2、 Asynchrony Everywhere 处处异步 EDA和消息广播
- 3、 Automate Everything 全部自动 保证专注自动配置 自动回复
- 机器学习
- 4、 Remember Everything Fails 记录失败
- 5、 Embrace Inconsistency与狼共舞,与不一致回旋。在CAP原则下权衡。亲不同是谓大同
- 6、 Expect (R)evolution 预言演变
- 7、 Dependencies Matter 重视依赖
- 8、 Be Authoritative 独断专行
- 9、 Never Enough Data
- 10、Custom Infrastructure 自定义基础设施
eBay 切分分层
- scaling 数据层 数据存储分离 松耦合
- scaling应用层
- 应用显示 控制 领域之间实现分层
scaling 数据层
- 按功能分段划分不同主机。再在段内再水平分割:
读写分离 write master/read slave
尽可能以主键Key读取
将数据映射到本地
- 让数据库负担尽可能小
- 首先考虑无事务情况
- 创建数据库结构可替代技术

让数据库负担尽可能小
- 不要将业务逻辑放入数据库。没有存储过程,只有简单的一些触发器。
- 尽量不要让数据库进行复杂耗时查询及其计算。将这些工作移植到应用层,如排序,JOIN等。
最小化数据库事务
- 使用Auto-commit事务
- 无分布式事务,无客户端事务
- 有事务就有锁,避免事务就是避免锁。
- 避免耦合
- 可以实现并行更新
伸缩扩展应用层
- 根据不同业务领域分别部署。将不需要事务的业务从需要事务的业务中分离出来,使用异步EDA和同步SOA架构
正确对待不一致性
- 不要担心害怕不一致性,也不要苛求语言工具能够提供高可靠性 和高一致性。
- 使用事务是为了保证一致性,CAP原理适当降低一致性要求:切分缩小需要高一致性的需求。
集群专题
伸缩性scalable
Netflix的亚马逊云计算平台使用
FaceBook大数据架构
SOA
REST