作为更新和现代化后台基础设施这项为期三年的工作的一部分,eBay 最近宣布,他们正在构建他们自己专门设计的服务器,“由 eBay 构建,供 eBay 使用”。该计划还包括在今年第四季度把他们的服务器以开源的方式提供给公众。虽然许多大型的技术组织和云提供商专门定制了自己的硬件,包括Google、AWS和Azure,但他们通常没有以开源的方式发布。eBay 表示,他们“在使用自己设计的服务器和硬件,减少对第三方的依赖”。
eBay 工程团队正在修改整个技术栈,包括物理层和逻辑层,因为他们相信,所有这些层在某种程度上是交织在一起的:“技术栈就像结缔组织,你无法把一个层独立出来;你必须对它们同步升级。”我们会检查技术栈中每一层的效率和性能,寻找改进现有解决方案的机会。根据 SDxCentral 最近的报道,这与 eBay 最近的决策“从当前基于 OpenStack 的系统迁移到更为现代化的 Docker&Kubernetes 技术栈”是一致的。不过,需要指出的是,在OpenStack 上运行 Kubernetes也是可以的,eBay 的工程团队在去年的 OpenStack 峰会上探讨过这个选项。
对于物理基础,eBay 使用了单点接入(PoP)策略,而且正在对他们位于美国的数据中心集群去中心化,转而采用一种“边缘计算方法”。这将使他们可以“创建一种速度更快、更一致的用户体验,节省 600 到 800 毫秒的加载时间”。和近日在 QCon 纽约大会上讨论的 Chick-Fil-A 方法非常像,eBay 团队正在他们的网络边缘部署在线服务和数据,更靠近用户,提供了动态和静态缓存能力,降低了延迟,改善了用户体验。
在数据层,eBay 创建了更“用户化的模型”。使用开源技术,该团队构建了“NuData”,这是一个具有容错性的、地理分布的对象和数据存储。这个现在还没有开源,感兴趣的读者可以在 Web 上搜索更多相关信息,此外,不要和 Mastercard 的产品“NuData Security”混淆了。长期来看,这将使 eBay 可以将数据分布到不同的地理位置,改善用户体验,提高服务弹性,“为需要的国家提供数据隔离”(很可能是为了响应通用数据保护条例和加州消费者隐私权法案倡议)。
eBay 每天处理 3000 亿次数据查询,他们的数据体量超过 500PB,相当于“1 万亿首歌曲,2500 万个小时的电影,足够把华盛顿国会图书馆备份 300 次以上”。相应地,他们已经借助开源来构建内部的“AI 引擎”,该引擎可以在他们的所有团队之间共享,其目标是“提高生产力、合作和培训”。他们的 AI 引擎已经加速了新特性的开发,如计算机视觉、图像搜索以及分享到社交媒体平台。
eBay 的数据科学团队之前介绍了 Apache Kafka 和 Apache Storm 在其平台Rheos中的使用。该平台提供生命周期管理、监控、架构良好的标准和用于实时流数据管道的生态系统。柏林工程团队还探讨了使用 Kafka Streams 和 ElasticSearch 实现实时用户分析。2017 年,eBay 团队出席了 MongoDB World 大会,探讨了“使用 MongoDB 构建关键任务、多数据中心应用程序”。
eBay 希望通过开源和广大的工程社区分享他们的创新和技术经验。他们相信,使用他们的工具的开发人员和社区将改进他们正在构建的东西,最终帮助他们创建更好的总体体验。eBay 的 GitHub 账户上有许多开源项目,其中确实有些不错的。这包括“云原生”软件负载均衡器Neutrino(大概现在已经使用Envoy Proxy替代了),基于 AsyncDisplaykit 使用 Swift 编写的轻量级通讯组件NMessenger,Python 库bayesian-belief-networks,基于 Consul 的负载均衡路由Fabio。
在宣布转型和开源工作的新博文中,eBay 总结到,在耗时 3 年的时间里,他们成功更新基础设施的关键是人:“建立合适的文化,创造最佳的氛围,这需要深思熟虑而细致的工作。有了合适的文化,技术和创新会随之而来。”