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读取

       将数据映射到本地

  • 让数据库负担尽可能小

  • 首先考虑无事务情况

  • 创建数据库结构可替代技术

ebay  


让数据库负担尽可能小

  • 不要将业务逻辑放入数据库。没有存储过程,只有简单的一些触发器。

  • 尽量不要让数据库进行复杂耗时查询及其计算。将这些工作移植到应用层,如排序,JOIN等。

最小化数据库事务

  • 使用Auto-commit事务

  • 无分布式事务,无客户端事务

  • 有事务就有锁,避免事务就是避免锁。

  • 避免耦合

  • 可以实现并行更新


伸缩扩展应用层

ebay


 

  • 根据不同业务领域分别部署。将不需要事务的业务从需要事务的业务中分离出来,使用异步EDA和同步SOA架构


 

正确对待不一致性

  • 不要担心害怕不一致性,也不要苛求语言工具能够提供高可靠性 和高一致性。

  • 使用事务是为了保证一致性,CAP原理适当降低一致性要求:切分缩小需要高一致性的需求。

一致性