原来这样子的?Shopify使用了Docker容器的技术!

原来这样子的?Shopify使用了Docker容器的技术!

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

而现在的Shopify已经是一个成熟的平台了,帮助了千千万万的跨境电商从业者或者外贸从业人员盈利。而Shopify面临的扩展挑战电商解决方案提供商 Shopify 每个月的独立访问用户大约有 3 亿。注意,这些用户访问并不是均匀分布的。

原来这样子的?Shopify使用了Docker容器的技术!
原来这样子的?Shopify使用了Docker容器的技术!

其中一个最大的挑战是“闪购”,即最流行的那些网店在特定时间内的销售活动。

例如, Kanye West 开卖新款鞋子。加上 Kim Kardashian ,他们在 Twitter 上有 5,000 万粉丝。

有些客户还在超级碗上打广告。因此, Shopify 根本无法预期届时有多大的访问流量。想想这种情况:在 3 点, 200,000 访客一涌而入,参与几小时后就会结束的特卖活动。

Shopify 该如何扩展,以应对突然增加的访问?即使扩展后不能很好地应对某一场特卖,那么怎么确保这场特卖不会影响其它网店呢?在下一节,我们首先介绍 Shopify 的应用架构,然后以此为背景,深入地讨论上述问题。Shopify 应用架构去年, Shopify 全面采用 Docker ,但是仍然采用单体的应用架构。 Simon 告诉我,之所以这么做,是因为转向微服务架构的代价不低。当然,由于全面采用 Docker ,如果他们将来决定转向微服务架构,也比较容易。

总之, Shopify 的架构大致是这样的:应用请求首先发送到 Nginx ,然后再转发到服务器应用集群,每个服务器应用是一个运行 Rails 应用的 Docker 容器。

在数据层,他们用到了:MemcachedRedisElasticSearchMySQLKafkaZooKeeper大部分软件运行自有的硬件上,少部分运行在 AWS 上。

为了减少成本, Shopify 运营了一个多租户平台,即不同的网店可能运行在同一台服务器上——例如, shopA.com 和 shopB.com 运行在一台服务器上。

虽然全面转向 Docker 并非一帆风顺,但是最终获得了下列好处:

只需大约 5 分钟,就能运行完数十万行 Ruby 代码的持续集成(没用 Docker 之前需要 15 分钟),部署到横跨 3 个数据中心的 300-400 台服务器上只需 3 分钟(以前需要 15 分钟)。多么令人印象深刻的成效。如何处理流量激增平台最好自己就能处理访问的激增。不过,这还没完全实现,在每次大型售卖之前,他们运行一系列的性能检测。

以上面的 Kanye West 为例,他们提前花了两周的时间,把平台的关键部分组合在一起,进行广泛的被动负载测试和性能优化。

为了运行不同的测试,他们用到了弹性矩阵:

摘自 Simon 的大会报告

在某项服务失效时,弹性矩阵有助于搞清楚系统出了什么问题。

假设 Redis 服务不可用了。从弹性矩阵可以看出, Redis 是买单服务的一部分。这时候,是不是要整个网站下线,进入维护状态呢?当然不,可以让每个用户登出网站,仍然允许他们在没有客户账户的情况下继续买单。然后,一旦 Redis 服务恢复了,将电子邮件地址与客户账户关联,据此补上此前缺少的信息。

依次下线每一个服务(像网店前端、管理面板、API等等),看看此时系统的运行情况——这是否影响到系统的其它部分?尽量去掉服务之间的依赖,整个应用的弹性会因此显著地增加。这好比一条拉链,最弱的那一环决定了应用的健壮程度。

原来这样子的?Shopify使用了Docker容器的技术!
原来这样子的?Shopify使用了Docker容器的技术!

Shopify 开源了与之相关的两个工具: Toxiproxy 和 Semian 。

Toxiproxy 能够控制系统的延迟。

Semian 用于检验系统是否存在单点失效。

更多细节,请看 Simon 的大会报告(https://speakerdeck.com/sirupsen/dockercon-2015-resilient-routing-and-discovery),非常有意思的一个报告。

在弹性平台之上,由于 Shopify 拥有自己的硬件,它能够做到超额配置。对他们而言,这种解决方案很便宜,但是还是比在云上运行花费高。请仔细比较相应的代价和收益,确定这种方案是否适合你的需求。

数据存储的扩展是另外一个巨大的挑战。由于 Shopify 处理的是金融交易,他们的数据库必须保持同步。解决方案是什么呢? 两年前 Shopify 就开始实施 MySQL 分片了。他们非常激进,力求经过一段时间后把数据库切分成更多更小的切片。

Simon 随即说道,数据库的扩展尤其是切片是相当难的。不到最后,别采用数据库切片,尽可能地利用缓存。采用切片后的一个好处是有助于事故的隔离。如果在某个切片中某个客户的数据发生灾难,也只会影响整个平台的一小部分。

说到对弹性的测试, Simon 强调说有了弹性平台和自动灾后恢复机制,大部分数据库扩展问题都已经被解决了。接下来,他们准备提高哪些方面?接下来, Shopify 团队正在审视应用之间的隔离问题。另外一个主要问题是如何让网店同时运行在位于不同大洲的多个数据中心上。这不仅非常有利于保证数据本地性,也能避免意外事件的影响。

我访问 Jeremy Edberg 时,他说过 Netflix 也投入很多资源研究如何避免意外事件的影响。

除此之外,他们也在研究如何实现一天内的多次灾后恢复。在访谈 Simon 的页面,你能了解到他们如何在整个数据中心进行灾后恢复测试。

目前,如果要实现整个数据中心的灾后恢复,就不得不临时关闭买单服务。他们正在寻找相关的解决方案。

 

原创文章,作者:SONIC SEO,如若转载,请注明出处:https://www.seo388.com/shopifyanddocker/

(5)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年4月17日 17:16
下一篇 2020年4月18日 14:02

相关推荐

  • 亚马逊测评自养号的假设与成本

    这次,小编来给大家说说,关于 “亚马逊测评的自养号的假设与成本”。 自养号是什么东西?就是亚马逊测评的卖家或者中介自己建立的一些手上的账户,专门用来购买自己或者需要的产品,然后测评。自由度比较大,爱什么时候做测评就什么时候做测评,只要不被block和封号,就问题不大。 但是也需要注意店铺与店铺测评的密度与时间间隔,当然不同店铺的CD冷却时间就不同了,就是说每…

    2020年9月18日
    0960
  • 2019年欧洲跨境电商千亿欧元平台排名

    这次小编给大家介绍一下欧洲的电商平台,以及欧洲电商平台的排名动态。希望能帮助大家初步地了解欧洲电商平台的情况。 根据Cross-Border Commerce Europe(欧洲跨境商务)平台最新报告显示,2018年,欧洲跨境贸易市场(不包括旅游)达到950亿欧元,其中55%来自欧洲企业,占522.5亿欧元,45%来自非欧盟零售商,占42.75欧元。 第三方…

    2019年9月3日 网络营销推广
    01.6K
  • 努力优化亚马逊Listing后,出单仍然费劲?

    这次,小编来给大家说说,关于 “努力优化亚马逊listing后,出单仍然费劲?”的这个话题。 实际上,亚马逊卖家都知道listing的重要性,兢兢业业的运营人员更是恨不得尝遍各路优化办法。然而效果却不尽人意,甚至更差,为什么会这样子呢? 有没有想过,也许是你一开始就没有把握好优化的真理?“原则的节奏呢?” 大家都知道,在打造一个产品的过程中,如果把产品品质的…

    2021年4月6日
    0767
  • 亚马逊站内CPC成本过高?那亚马逊卖家应该怎么办?

    这次,小编要给大家说说,关于 “亚马逊站内CPC成本过高?那亚马逊卖家应该怎么办?” 的这个话题哦。 今时不同往日了,亚马逊的流量权重越来越高,不少卖家的成本计算里广告投放占比一天比一天多,并且持续烧钱砸广告就算了,好歹出单量也涨一涨吧,早上起来登录快兔浏览器(多店铺用这个管理不会关联),结果发现十几个店铺后台出单量还是没上去。 一顿操作猛如虎,单量一瞅个位…

    2020年9月4日
    01.4K
  • Linux进程不受ssh关闭影响的一些方法

    这次小编来介绍一下:“Linux进程不受ssh关闭影响的一些方法”。希望对大家有所帮助。 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来…

    2019年10月20日
    01.6K
  • 什么是微信不死域名?不死域名的原理是什么?

    今天,小编来给大家科普一下什么是不死域名,不死域名是什么东西呢?有好奇的小伙伴想知道吗?下面,小编就给大家科普一下吧。 什么是微信不死域名?什么是微信的二级不死域名?以及微信不死域名的原理是什么?   微信不死域名这个概念是有人故意创造出来的,它的别名很多包括:《微信二级不死域名》《微信防封域名》《微信防封二级域名》《微信绿标域名》《微信白名单域名…

    2019年8月2日
    12.2K
  • 2019年世界跨境电商五大新平台简单介绍

    这次小编来给大家介绍几个新兴的跨境电商平台,希望对大家的网络营销有所帮助。   2019世界跨境电商五大新平台简单介绍: 跨境电商平台1 — Lazada 东南亚电商平台——Lazada,其主要目标群体是马来西亚、印尼、菲律宾以及泰国用户,这些用户群体都有着较强的社交媒体互动,热销品类集中在3C电子、鞋服配饰、家居、母婴玩具等。 &nb…

    2019年9月3日 网络营销推广
    02.7K
  • 关于工业与信息化部ICP/IP地址/域名信息备案管理系统域名已更换

    这次,小编来给大家说说,关于 “工业与信息化部ICP/IP地址/域名信息备案管理系统域名已更换”。希望能帮助到小伙伴们哦。 就在2019年的4月17日 ,工业和信息化部备案系统就发布了关于调整“工业和信息化部 ICP/IP 地址/域名信息备案管理系统”域名的公告,工信部备案网站将更换域名,原有的域名将停止使用。自 2019 年 4 月 25 日起“工业和信息…

    2020年8月23日
    01.2K
  • 亚马逊广告对于广告广泛的词,给出了高竞价,只有某一个词有曝光,其他词都没有曝光,怎么调整?

    亚马逊广告对于广告广泛的词,给出了高竞价,只有某一个词有曝光,其他词都没有曝光,怎么调整? 实际上,这种情况下 我们分三个思路去做 1,把那个曝光最高的词单独拿出来一个活动打,匹配方式看点击和转化, 同时原活动的词也可以分到更多的预算 2.把占了大部分曝光的词的竞价调低,看看其他词能不能分到预算。 把所有想打的二级词 一词一活动单独给预算。这样的广告活动会更…

    2022年6月15日
    0346
  • 亚马逊店铺卖家分析自己店铺数据该注意什么?

    这次,小编来给大家说说,关于 “亚马逊店铺卖家分析自己店铺数据该注意什么?” 一般情况下,亚马逊店铺的一切问题:广告,库存,利润等等都需要从店铺数据中分析出来,从数据出发可以找到问题的关键,并且及时作出调整。想要做好店铺运营,首先你要看懂店铺数据,那么亚马逊卖家想要更加清楚店铺数据情况,就要做好更全面的店铺数据监控,接下来告诉你亚马逊卖家运营日常如何关注好自…

    2021年1月5日
    0814
  • 国外社交媒体Social Media竞赛抽奖活动平台推荐

    如果要说 “增加粉丝、寻找潜在客户和生成用户的好方法?” 小编觉得,在国外的Social Media社交媒体上举办竞赛是一个好办法。 下面,小编来介绍一些外国的网站平台,国外社交媒体Social Media竞赛抽奖活动平台推荐。这些外国网站平台是一些可以在社交媒体上举办竞赛的平台。可用于抽奖、赠送、测验、摄影和视频竞赛、标签竞赛等。 1)Rafflecopt…

    2019年9月8日 网络营销推广
    04.2K
  • 亚马逊新卖家选品,避开这7类,不当炮灰

    这次,小编给大家分享的是,关于 “亚马逊新卖家选品,避开这7类,不当炮灰”的这个话题哦。 收到有卖家私信小编问:自己是个白手起家的新手,没有什么得天独厚的资源,能不能指明一些直截了当的方向告诉什么该做什么不做。 诸如此类的问题不少…其实也可以理解,对于那些刚入行的来说,自己积累的经验不够,毫无头绪。就算看了很多选品指南,实践起来还是云里雾里,该懵…

    2021年3月23日
    0775