原文地址为: 应对电商大促峰值的九个方法

快速建立移动电商系统架构的知识框架

「高可伸缩的移动电商架构设计」这个话题很大包括了几个部分:App客户端架构、服务端的架构,还有怎么使用私有云、公有云来部署我们服务端的应用。我会把这三部分内容做一个比较系统、比较概括性的介绍。这次分享主要的目的就是让大家快速的建立一个知识框架:如何搭建高可伸缩的移动电商系统架构。

首先会介绍App端的混合架构,还有服务端的SOA架构,我们也会介绍弹性云的架构设计,基于容器的虚拟化以及电商SOA如何部署在这些弹性云的环境当中。最后的部分,我们会具体讲一个案例。比如说双十一的时候,该怎么去应对这种大促?

App的混合应用框架

如上图,这是App的混合应用框架。大家都知道,我们做App开发的时候,如果说你用Native进行开发,成本很高,但是用户体验会非常好;但是如果说你用H5的话,开发速度很快,但是用户体验就不那么好。

所以业界主流的做法就是所谓的App混合应用架构。从这个框架当中,可以看到,其实我们是通过用JSBridge去封装一些方法,让H5通过调用JS,可以访问摄像头、重力感应等等功能。

在App的混合架构当中,大家在设计App框架时可以考虑,实现H5本地包缓存的机制。通常每一次App请求都是向服务器端发送请求,然后返回给数据给客户端。我们的做法是H5页面框架包包括CSS、图片放到本地,相当于本地有一个http的代理服务器。当用户访问App的时候,我们调用的是本地的H5页面。当这个页面需要加载一些数据,这个时候JS才会去服务端拉取数据。

当然H5其实现在有很多的特性,如:LocalStorage、SessionStorage这里面都可以存储很多数据,比如说购物车信息、浏览信息都可以缓存在里面,不用去服务器端去取。通过这样的方式可以加速整个的App页面的加载速度。

可能有的朋友会问,安全机制怎么办?如果在App客户端有一个所谓的代理服务器,那相当于是服务器调服务器,在安全机制上可能会存在一些问题。当然你在设计移动端的时候,你要有这种认证机制。这就是大致的一个H5本地包缓存的机制,用户请求本地App的时候,他判断这是不是最新的版本,如果不是就他就去服务器端拉最新的H5包回来。也可以由服务器端进行推送。

SOA服务端的架构

接下来我们跟大家分享SOA服务端的架构,这个部分涵盖了从数据层到访问层,到基础服务、核心服务,最上面的就是面向终端用户的网站和App。基础服务层和核心服务层其实就是有没有封装业务逻辑的区别。一般业务逻辑是封装在核心SOA层,基础SOA只是提供一些数据等操作。

我们在设计SOA架构的时候,我们需要注意一些东西。核心的业务模块其实是要能够隔离保护起来。举个例子,比如说价格服务,其实在团购、购物车、促销这些模块当中都会涉及到价格。但是你在部署的时候你可能要做一个隔离,就是哪些原则上只给团购用,哪些只给购物车用。

这样的好处是在极端情况下,我们做过载保护的时候更容易一些,比如说我们大促的时候压力是来自购物车或者是详情页,如果说不是针对团购的,可以把团购这边的价格服务少放几台机器,把这些应用都调到压力大的业务中去。还有就是对服务的监控、负载均衡、降权等等。这里面实际上有一套的服务治理平台。

这就是整体的从App端到服务端的架构。最底层的服务端就是我们上面所讲到的SOA的架构。在SOA之上,我们会加一层分发层,它有很多的适配器,它是专门用来去适配这些平台的。这些服务可能是公用的,但是它有可能是移动在调,PC站在调或者是B2B业务也在调。这个时候你每一个平台的终端所获取的数据其实是不太一样的。

以购物车为例,你在移动端的购物车和PC端的购物车其实所展现的信息是不一样的。在PC端你可以展示很多的促销商品、活动。但是在移动端可能就没有那么多的空间去给你展示。因此这个时候,我们对购物车所要提供的数据,我们可能会做一个适配。这是这个架构当中所需要注意的一点。

如果说你们公司只有一个App,只有H5站,没有PC站,那问题不大。但多数的公司可能本来主要的业务是在PC端,移动时代来了之后,它才把这些业务迁移到移动APP当中,这种公司就要注意架构上的设计问题。

PC端和App端的开发协作管理

这里面涉及到一个开发团队背后协作的问题,如上图。这个可能在你们公司当中也会存在。如果你们的公司当中,你们的系统有PC的也有App的,你们是App一个团队独立做,PC一个团队独立做,还是按业务来划分?

我的建议是按照业务来分,如果说你是做购物车,购物车从UI到service到业务逻辑都是一个团队做处理、做开发。这样的好处是业务逻辑和技术都可以沉淀和传承,可以快速的迭代,减少依赖。否则你做一个功能要协调前台、后台不同的组,这是分工协作上的一个考虑。

就是尽量要让团队、让开发人员相对独立、快速的去完成他的工作,减少团队与团队之间的协作和依赖。无论是做技术架构还是做团队管理,这都是很重要的一个因素。

基于容器的虚拟化

接下来我们稍微了解一下弹性云架构,是基于容器技术的一个虚拟化。这是容器的一个特点,容器和传统的虚拟机相比,以一台4核16G物理机为例,传统的虚拟机只能「1虚5」,一台物理机可以虚出5台虚拟机;而Docker技术起码是10到15台。这个利用率就提升2-3倍,这是其中的一个好处。另外一个就是磁盘空间和网络传输量,如果是Docker的话,举一个例子,我们用一台物理机虚拟了10个Docker,这个时候,你可以在这一台机器上布不同的服务,这些服务相当于是本机通讯,这样可以减少网络传输。

Docker服务器的特点是启动快,创建项目、启动/停止几秒内就可以完成。如果说是传统的虚机的技术,那你装机、部署一个应用,做配置要多久,即便是自动化,起码也要几分钟,而且几分钟已经也算是快的了。这是一个非常显著的优点。

另外你在做装机模板的时候,你甚至可以把你的应用和你的环境、操作系统做成一个镜像。你在装一个容器的时候,其实你在瞬间几秒就可以把环境和服务、应用快速的建立起来。

这是容器运行的环境的例子。这里面大家稍微看一下就可以了。在操作系统之上会构建Docker的环境,在Docker之上会有API管理平台,会对Docker做一些监控、管理、分配空间等等。这是更细的一个Docker的工作环境,我就不详细阐述了。

这是单台物理机当中的整个结构。从最底端的物理机到操作系统,到上面的Docker平台,到Docker平台上的每一个容器,每一个容器上部署的nginx也好,或者是Java环境,JDK+tomcat这些。

这是对容器的一个监控,其实容器的监控当中有很多第三方插件。我们只要使用它对Docker的状态就可以进行一个管理。

其实容器也有它的局限性。能否彻底系统级隔离现在还存在一些争议,因为现在go语言还没有完全成熟,随着我们技术的发展,这些问题会得到解决。我们在部署容器的时候,比较适合部署一些应用级别的东西。如果说你要做静态的图片,或者是静态页这些可能就不太适合用这种容器来做。它最佳的实践是部署应用,其他的我们应该使用一些物理机。

关于电商的私有云建设

刚刚介绍了容器,其实当你的企业机器足够多的时候,几百台上千台时候,你应该构建一个私有云的平台。

这是一个私有云的整体框架,包括IaaS、SaaS和PaaS,我们所谓的私有云其是在PaaS这一层,包括存储、网络、缓存等等。

这是私有云的一个管理平台。如果说你有几百台上千台机器,你需要对这些资产,对每个月产生的这些流量、带宽的费用都非常清楚,你作为一个运维管理人员,当老板问你,我们一个月的带宽、CDN、第三方监控的费用情况,你要能够回答出来。以及当应用出现问题的时候,你的硬件出现一些问题,你有没有对这些事件进行跟踪管理。当我们的系统出问题的时候,我们可以很快从这个问题管理平台当中找原因。

比如说10点我们的系统出现问题,报警了。你在处理的时候,你首先关注的是什么?是前5个报警的信息,可能开始报警的是网络不通,接下来负载飙高了,有很多服务不可用了,导致有一些应用开始报警了,这些都是一连串的反应,最重要的就是要先解决前面的几个错误,因为如果拖久了,所有的应用都报错了,你更不知道是哪里出问题了。

除此之外还要有自动发布的平台以及你的应用和配置需要要做一个分离,数据库的链接,环境的配置等等都要一个独立的配置中心去做配置。其他的就不细讲了,这些都是我们做运维时所需要的一些工具。

如何应用弹性云来应对电商大促

我们要应对电商大促必须要具备这样的能力,包括解耦与隔离能力、横向可扩展能力、流量自动调度能力、服务降级和全方位监控的能力。

流量自动调度能力包括两个方面,其中一个是外网的流量调动,如果说你们的公司的机房是好几个城市的异地机房,是要能够实现流量的切换的。比如说这个时候上海机房的访问压力很大,但是南京那边的机房是空闲的,这个时候你们需要把流量引到那边去。

这里还有另外一层意思,在你的机房里,各服务之间流量调度,比如说你的下单的服务部署了100台机器分了三组,每组30多台。当访问压力来的时候,你的这些分组是要可以做灵活的调度的。哪一组的压力比较大,就把流量分出来。这个关于流量调度的过程应该是自动化的。

全方位的监控包括流量的监控、日志的监控、硬件的监控、网络的监控等等,使它可以第一时间报出来。你的服务、应用要能实现所谓的服务降级。比如说在双十一,有一个很大的抢购,一些比较耗费资源的东西,比如说你网站有一些精准化推荐的内容可能要关闭。甚至比较耗费性能的商品上传、改价等功能给关掉,可以节省很多计算的资源。

我们来看一个例子。比如说你们公司在做一个大促,流量可能是平时的几十倍。首先我们做的第一步就是你要去测算你的这个流量峰值,就是二八原则。20%的时间内产生80%的订单量。这是一种测算方式,你可以根据业务部门的目标说当天他要完成的交易量是多少,比如说是5000万,那么他引了多少流量?假设是1000万UV,你就把1000万的流量做拆分,你就知道你每分钟要扛住的订单量是多少。

应对电商大促峰值的「独孤九剑」

我们通过上面的这些知识可以总结出一个应对大促峰值的「独孤九剑」,就是九个建议,这是我的一些经验总结。你用好这九条,其实一般的大的促销应该都可以扛过去。

  1. 大促的系统预案。流量来的时候,你的系统顶不住了,那怎么办?当然是加机器。带宽不够的时候怎么办?先和网络服务商打好招呼。这些就是我们的预案,预案不仅是技术、系统的预案,还包括其他业务部门的预案,比如说当天价格标错了,本来是100块钱的东西你标成1块钱,都要有相应的预案。甚至当天晚上办公室停电了怎么办?有一个预案以后你可以告诉你的老板说,我们是有着全方位的准备,是经过周密统筹的。
  2. 大促开始的前几天,关闭程序发布窗口,这是因团队而异的。如果说你们的应用成熟度比较高,团队艺高人胆大,可能在大促前几天发布程序也没有什么问题。但是我们统计下来,90%的线上问题,都是上线造成的,包括网络设备调试、配置,一旦出问题,你第一个问题肯定是说你昨晚有没有发布应用、有没有修改服务器和网络配置。
  3. 通过压测来识别系统瓶颈。这个工作要提前一个月左右去做。否则的话,容易出现测出瓶颈但没有时间修改的窘境。测出来问题我们要有足够的时间去找出解决方案。比如说有一次我们压测下来,我们发现数据库是瓶颈。那这个时候没有办法,一个月的时间你不可能去换一种数据库,或者是对底层数据结构做很大的调整。这个时候怎么办呢?只有从硬件去解决。要么借一台比较powerful的小型机,或者是加一些读写卡,增强机器的读写能力。这个时候代码、网络都不需要优化,只要加设备就可以解决,这是非常幸运的情况。如果说测出要大改的,那就没有办法了,应该优化的还是要做。
  4. 服务降级策略。刚刚我们已经提到这一点。这个降级我们只要做到应用级别就够了,不需要做到服务级别。你在应用级别,比如说精准化推荐、图片上传这些都是有开关可以关闭的。
  5. 带宽预估和报备。如果是用的电信或者是网通,只要提前打招呼就可以了,因为你带宽增加要多付钱给供应商的,所以没有供应商会排斥的。
  6. 第三方接口调用量预估和报备。比如说你这个App调用了类似像在线客服,甚至是支付网关的接口,这个都要向第三方做一个报备。告诉他今天有一个大促,流量是平时的十倍,这是正常的,不是系统攻击。否则对方以为你受到了系统攻击,把你的调用给关掉。
  7. 提前几天开启混合云资源。如果说你们的应用不仅是用自己的服务器,还用了公有云的机器。你除了自己加机器之外,你还要给公有云的供应商打好招呼,提前拿一批机器过来,这些机器要预装好,也要有一些备用的机器放在旁边。
  8. 备用几十台机器,应对突发情况。
  9. 二十四小时轮值。一方面是给业务保障,另一方面你人在现场,业务和老板们也会更加放心,同时这也是检验我们劳动成果,激励团队士气非常好的机会。通常你准备的比较充足的话是不会出什么问题的,这会提振团队的士气。

转载请注明本文地址: 应对电商大促峰值的九个方法

应对电商大促峰值的九个方法相关推荐

  1. 完美日记:保障电商大促活动平稳运行

    公司简介 PerfectDiary完美日记是广州逸仙电子商务有限公司旗下美妆品牌,创立于2016年.2016年,来自哈佛大学的品牌创始人和英国时尚设计师在伦敦相遇,希望有机会把欧美彩妆风尚带回亚洲,在 ...

  2. 大火C4D元素,电商大促海报背景BANNER素材

    电商海报设计中,C4D的巧妙表现,有令人惊叹的地方.对于设计来讲,软件只是辅助,归根到底是培养设计思维和审美.随着C4D技能的普及化,也许会像PS一样是是一种信手拈来的手段. 在你还没有掌握其中的设计 ...

  3. 电商大促首焦背景素材|大火C4D元素

    高逼格的Banner视觉效果,决定它能吸引多少用户展现量,平面广告也是如此--C4D一直都很火,只不过是在近两年才走进大众的视野里. C4D并不是人人都会的,所以如果你会用而别人不会,整个页面的视觉感 ...

  4. 解救电商大促没灵感的设计师|攻略模板奉上

    每逢大促前,最忙都是我们这些苦逼的设计师啊.作为设计师的你们,今年的页面做的怎么样了啊? 2020年双11即将来临,电商行业工作者又开始忙碌起来.设计师们迎来一个又一个页面需求.那么在做大促页面的时候 ...

  5. 电商大促攻略页设计指南

    通常我们看到的旅游攻略,游戏攻略等都是以文章资讯的形式呈现,只可阅读不可交互.而电商大促活动中的攻略页,可不仅仅是一篇资讯文章那么简单,除了要向用户传达促销信息,往往承载着引流,预约,发券,传播等营销 ...

  6. 深度干货 | 双十一电商大促流量承接与变现的产品设计分析

    2015年的双十一电商大促已经谢幕,回想起除了那些高到令人咂舌的数据以外,是否还有那些铺天盖地而来的广告宣传,这是千亿成交的第一步,曝光与流量:下一步就是流量承接的产品页面,如:大促会场.SNS活动. ...

  7. 乘风破浪,云服务器为电商大促加足“马力”

    摘要:什么样的IT基础设施才能支撑持续一整天甚至多天的高并发流量?如何规避618带来的各种"坑"?细听我分说. 特殊时期让2020年新年伊始就走出异常曲线,社会机器被按下暂停键,恐 ...

  8. 618电商大促 到底谁家赢了?大家都这么有钱的吗?

    今年618年中大促终于结束了,各大电商平台也结束了这一轮的厮杀缠斗,各家通报的战报都不一样,通报的内容都各有侧重,看的人眼花缭乱,分不出胜负,但可以肯定的是,各家的半年报都好看了很多,消费者们积攒许多 ...

  9. 年底了,各大电商大促会员活动反馈万能模板,必备的PSD分层格式

    什么是促销活动页面? 通常电商平台在节假日会做一些促销活动,而活动的宣传方式,主要会采用H5静态页面的形式,也就是本文中要讲的促销活动页面. 这些活动页面的特点是元素构成很简单,在页面中只包含一些促销 ...

最新文章

  1. 血亏 1.5 亿、华为断供、Linux 之父怒删代码,2020 IT 大事记盘点
  2. Python之路---------printinput
  3. 深度理解do{} while(0)语句的作用
  4. 用户数从 0 到亿,我的 K8s 踩坑血泪史
  5. centos6.4安装及升级gcc 4.8.2(已实践)
  6. Windows系统Python直接调用C++ DLL
  7. mysql not in null_MySQL中NOTIN语句对NULL值的处理
  8. NeatUpload的使用方式
  9. mt4接入python_mt4 调用 api
  10. MOEA/D论文+代码
  11. 汽车洒水器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. 360浏览器调试html5,360极速浏览器开发:调试指南
  13. w3c标准语言,W3C标准 - W3C中国
  14. 使用经典的基本播放命令和 MML 创建 MIDI 文件
  15. html 下划线 鼠标手,(腾讯设计规范.ppt
  16. 记一次quartz定时任务不执行排雷
  17. mongodb的单机和集群安装手册
  18. jsp中定义日期格式
  19. HTTP与HTTPS浅谈
  20. paydex什么币-区块链钱包

热门文章

  1. 如何在 Linux 中安装 Microsoft OneDrive
  2. 东方通如何查看版本linux命令,东方通tongweb linux安装
  3. 微信小程序 + vant组件van-card 图片解析不到
  4. xctf攻防世界 MISC高手进阶区 simple_transfer
  5. ajax学什么难,ajax分析与讲解,其实ajax一点也不难,只是你把它看难了
  6. SpringCloud组件的选用
  7. 数据结构课程设计之火车票订票系统实现(C语言/C++版本)
  8. 奥的斯任命罗小莉为中国区总裁;万豪集团任命毛怡冰为大中华区总裁;中国通信服务委任闫栋为公司总裁 | 高管动态...
  9. 纳什博弈论的原理与应用
  10. 虚拟磁带库VTL在实践中的优势