Shopify的架构概述
极客时间编辑部
讲述:杜力大小:983.98K时长:02:06
近日,Shopify 高级产品工程主管西蒙·埃斯基尔森(Simon Eskildsen)在 GoTo 2017 哥本哈根大会上分享了 Shopify 是如何构建支持大规模销售的架构的,内容主要涉及使用 OpenResty 配置 NGINX 实例、商店和 Pod 的隔离架构、故障转移策略等。
据埃斯基尔森介绍,Shopify 为大量的在线商务提供服务,支持超过 50 万家商户,因此,他们所面对的主要挑战在于创建一种可应付突发大流量的架构。
Shopify 的首个优化调整就是在 DNS 层。对单个域在 DNS 层的流量优化是很容易实现的,但是对于多个域的优化就比较困难。Spotify 的做法是使用 TCP/ICP 任播(Anycast)技术,这是一种 gossip 算法,能让流量总是选择最近的 IP。
Shopify 也大量地使用了 OpenResty。该工具允许使用 Lua 来编写任何需要 NGINX 负载均衡器实现的功能。埃斯基尔森表示,就 Shopify 的使用情况来看,OpenResty 是非常强大的,但是目前并未在行业中得到充分的利用。
埃斯基尔森还介绍了 Shopify 引入的“Pod”概念。Pod 用于应用层或数据层上,是一种完全隔离的 Shopify 实例,其中包含了很多的商店。在设计上是不允许 Pod 间和商店间通信的,因为商店隔离是 Shopify 的原则。
尽管每个 Pod 都包含了自身的有状态服务(例如数据库),但无状态服务也是共享的。这样做的主要原因是自动扩展引入了过量的瓶颈问题。相比于新架构所考虑到的情况,流量尖峰会来得更快。
埃斯基尔森还概要地介绍了 Pod 负载均衡器,主要用于均衡 Pod 间的商店,并确保负载的平均分布。为了快速实现这个目标,同时不损失数据的一致性,Shopify 使用了 MySQL 的二进制日志,使数据库更改事件从旧实例流到新的实例。
对于跨区域迁移,Shopify 还提供了一个称为“Pod Mover”的组件,以最小的宕机时间实现 Pod 的跨区域移动。当一个区域不工作时,就激活迁移。但是埃斯基尔森也解释说,他们的最终目标是给出一个 Slack 命令,这样就可以在任一时刻触发此类故障迁移。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论