【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

GoTo 2017 哥本哈根大会:Shopify 如何支撑在线商务

  • 2017-11-02
  • 本文字数:1187 字

    阅读完需:约 4 分钟

Shopify 高级产品工程主管 Simon Eskildsen 在 GoTo 2017 哥本哈根大会上做报告,概述了 Shopify 是如何构建支持大规模销售的架构。报告内容涉及使用 OpenResty 配置 NGINX 实例、商店和 Pod 的隔离架构、故障转移策略等。

据 Eskildsen 介绍,Shopify 为大量的在线商务提供服务,正支持超过 50 万家商户。其中不少商户只提供在线商店,它们的一个主要需求就是能将销售快速地交付给它们的客户。尽管驾驭销售流量本身并非难事,但是所面对的主要挑战在于创建一种可应付突发大流量的架构。

据 Eskildsen 介绍,Shopifys 的首个优化调整就是在 DNS 层。对单个域在 DNS 层的流量优化是很容易实现的,但是对于多个域则是难以企及的。Shopify 面对正是这样的问题,多个客户域都指向其 IP。Spotify 的做法是使用 TCP/ICP 任播(Anycast)技术,这是一种“gossip 算法,其中每个 ISP 告知其近邻的所有 ISP 它知道如何路由的 IP 情况”。这基本上导致了流量总是会选择最近的 IP。

Shopify 也大量地使用了 OpenResty。该工具允许使用 Lua 编写所需 NGINX 负载均衡器实现的任何功能。Eskildsen 强调,就 Shopify 的使用情况来看,OpenResty 是非常强大的。他相信,总体说来 OpenResty 并未在行业中得到充分的利用。他列出了在 Shopify 使用的一些模块:

  • Rule banner:通过查看不规则刷新、可疑 IP 地址等异常模式发现僵尸程序(bot),进而禁止这些异常模式。该模块的目的是关闭二级市场。
  • Edge cache:对缓存做优化,允许在负载均衡层而非应用层的缓存提供内容。
  • Checkout throttle:节流机制通过对一些商户进行排队,实现对这些商户在异常负载情况下的写入操作,从而防止一家商户变成同一片上其余商户的嘈杂邻居。

Eskildsen 还介绍了 Shopify 引入的“Pod”概念。Pod 用于应用层或数据层上,是一种完全隔离的 Shopify 实例,其中包含了很多的商店。在设计上是不允许 Pod 间和商店间通信,因为关键在于客户间的隔离。“商店隔离原则,所有的商店必须相互隔离”。

尽管每个 Pod 都包含了自身的有状态服务(例如数据库),无状态服务也是共享的。Eskildsen 解释说,这样做的主要原因是自动扩展引入了过量的瓶颈问题。相比于新架构所考虑到的情况,流量尖峰会来得更快。

Eskildsen 还概要地介绍了 Pod 负载均衡器。Pod 负载均衡器用于均衡 Pod 间的商店,并确保负载的平均分布。为快速实现此目标,同时不损失数据的一致性,Shopify 使用了 MySQL 的二进制日志,使数据库更改事件从旧实例流到新的实例。

对于跨区域迁移,Shopify 还提供了一个称为“Pod Mover”的组件,以最小的宕机时间实现 Pod 的跨区域移动。当一个区域不工作时,就激活迁移。但是 Eskildsen 解释说,他们的最终目标是给出一个 Slack 命令,这样就可以在任一时刻触发此类故障迁移。

完整的演讲可在线观看,其中对这一架构做了更详细的解释

查看英文原文: GoTo Copenhagen 2017: How Shopify Powers Online Commerce

2017-11-02 19:001099
用户头像

发布了 391 篇内容, 共 126.0 次阅读, 收获喜欢 255 次。

关注

评论

发布
暂无评论
发现更多内容

40K成功入职:六年开发终获小米Offer(附面经+面试题+答案详解)

Java架构师迁哥

MPP大规模并行处理架构详解

五分钟学大数据

大数据 MPP 5月日更

appium 入门参考

37手游iOS技术运营团队

ios 测试 自动化测试 iOS Developer

我厂与张家港市达成全面战略合作,共推数据中心和城市智能化转型

百度大脑

数据中心 城市智能化

从零开始学习ThingJS之创建App对象

ThingJS数字孪生引擎

可视化 3D可视化 数字孪生

1小时内被全网疯转 29.8w 次,最终被所有大V协力封杀!

Java架构师迁哥

MeterSphere | 超好用的开源测试平台

Python研究所

签约计划

博睿数据2021战略发布巡展,开辟IT运维创新路径

博睿数据

博睿数据 数据链DNA 服务可达

量化网格策略交易软件,马丁倍投策略机器人

Vue-1-初识

Python研究所

签约计划

现在已经卷到需要问三色标记了吗?

艾小仙

用Python在树莓派上播放音乐

IT蜗壳-Tango

5月日更

服务可达,达者为先,产品发布会嘉宾精彩观点分享!

博睿数据

博睿数据 数据链DNA 服务可达

中国呼叫中心与卓越客服产业峰会,百度智能客服再提行业创新

百度大脑

解决方案 行业创新

Bugless 异常监控系统 (iOS端)

37手游iOS技术运营团队

ios iOS Developer 崩溃分析 bugless

获得业内一致好评!华山版Java性能优化全栈手册“登场”

Java架构追梦

Java 阿里巴巴 架构 性能优化 华山版

面阿里P7,竟问这么简单的题目?

Java架构师迁哥

Fabric | 自动化神器

Python研究所

签约计划

活动预告 _ 即构×火山引擎:泛娱乐社交音视频技术实践沙龙

ZEGO即构

🍃【SpringCloud基础使用】Nacos与Gateway实现动态路由

洛神灬殇

nacos SpringCloud Gateway 5月日更 自定义配置

走向机器智能时代:移动机器人的困局与创新

晨山资本

机器人 移动机器人 AMR

编曲新手可以用什么编曲软件?

奈奈的杂社

编曲 编曲宿主 编曲软件

如何评估 Serverless 服务能力?这份报告给出了 40 条标准

Serverless Devs

云计算 云原生 Forrester Wave #Serverless

工业4.0加速实现“数物相合”,可视化工厂节省时效高达85%

一只数据鲸鱼

人工智能 数据可视化 工业互联网 智慧工厂 智能生产

论证:iOS安全性,为什么需要审核?

37手游iOS技术运营团队

ios SIP Sandbox iOS Developer ios安全

🔎【Java源码探索】深入浅出的分析HashMap(JDK8)

洛神灬殇

Java 源码 源码分析 hashmap 5月日更

ARM和X86云服务器的算力对比

Python研究所

签约计划

百余大企业共赴新文明之约:2021 DEMO WORLD 世界创新峰会拉开帷幕

创业邦

创新

答应我,别再学Swing框架了好吗?

北游学Java

Java spring swing

公安局重点人员研判分析系统解决方案

牛x运维常用的工具系列-1

运维研习社

运维 工具分享 5月日更

GoTo 2017哥本哈根大会:Shopify如何支撑在线商务_DevOps & 平台工程_Andrew Morgan_InfoQ精选文章