【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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:001116
用户头像

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

关注

评论

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

46道面试题带你了解高级Java面试,linux教程视频合集

Java 程序员 后端

4个改变你编程技能的小技巧,附答案解析

Java 程序员 后端

4面阿里拿到P7Offer,SpringSecurity如何实现加密和解码

Java 程序员 后端

60分钟快速掌握RabbitMQ,Java基础全套视频教程

Java 程序员 后端

30岁以后搞Java已经没有前途,Java经典排序算法

Java 程序员 后端

38岁的中年失业者怎么活下去,Java中级工程师面试题及答案

Java 程序员 后端

4个改变你编程技能的小技巧,非科班生金九银十求职经历

Java 程序员 后端

30岁以后搞Java已经没有前途,java自学编程入门教程,大V推荐

Java 程序员 后端

云栖掠影|回首开源十年,RocketMQ 焕发新生

阿里巴巴云原生

阿里云 RocketMQ 云原生

区块链上升为国家战略两周年后 看浪潮下企业如何创新数字化应用

CECBC

3年内被辞退5次,35岁程序员该何去何从,Java工程师必备知识

Java 程序员 后端

4面字节跳动拿到Offer,尚学堂java视频下载,初级Java面试题大全

Java 程序员 后端

4面技术5面HR附加笔试面,面试的时候突然遇到答不上的问题怎么办

Java 程序员 后端

35岁技术人如何转型做管理?牛客网中级项目笔记,Java高级工程师必备知识

Java 程序员 后端

阿里技术官终于把这份万字面试手册整理出来了,在Github上获赞89.7K

Java 编程 程序员 架构 面试

35岁技术人如何转型做管理,mybatis使用教程,Java全套视频

Java 程序员 后端

不要让孩子在12岁之前接触手机游戏

石云升

育儿 10月月更

60分钟快速掌握RabbitMQ,Java常用数据结构面试题

Java 程序员 后端

7天拿到阿里Java岗位offer,2021腾讯Java面试题精选

Java 程序员 后端

2面技术+HR面+offer,从头到尾,都是精华

Java 程序员 后端

先行一步,7大技术创新和突破,阿里云把 Serverless 领域的这些难题都给解了

阿里巴巴云原生

阿里云 Serverless 云原生 云栖大会

74道高级Java面试合集:nginx入门到精百度云,Java校招笔试面试题目

Java 程序员 后端

35岁老年程序员的绝地翻身之路,Java面试重点问题

Java 程序员 后端

阿里云容器服务多项重磅发布:高效智能、安全无界的新一代平台

阿里巴巴云原生

阿里云 容器 云原生 云栖大会

4面技术5面HR附加笔试面,初级Java面试题大全

Java 程序员 后端

5年crud经验,【微信小程序】

Java 程序员 后端

数字货币能改变国际货币体系吗?

CECBC

35岁程序员的人生感悟,mongodb入门教程,阿里Java高级工程师面试题

Java 程序员 后端

3分钟就能完成的Redis主从复制搭建,10天拿到阿里Java岗offer

Java 程序员 后端

2面技术+HR面+offer,成功入职头条月薪35K

Java 程序员 后端

80后程序员月薪30K+感慨中年危机,Java开发面试准备

Java 程序员 后端

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