世纪联华的 Serverless 之路

简介: 2019 年 双11 过后,世纪联华快速上云,将线上核心业务改造为全 Serverless 架构的中台模式,采用“函数计算+API 网关+OTS”作为计算网络存储核心,弹性支撑日常和大促峰谷所需资源,轻松支撑 618 / 双11 / 双12 大促。

头图.jpeg

作者 | 朱鹏(旻苍)
来源 | Serverless 公众号

一、世纪联华超市简介

1. 公司简介

1.jpg

杭州联华华商集团有限公司成立于 2002 年 7 月,主要业务涵盖购物中心、大卖场、超市、便利店等零售业态,G20 杭州峰会食材总仓建设、保障单位,是浙江省商贸龙头企业。

集团 200 多家门店中,主要涉及 POS 机交易、联华超市、CITY LIFE、天华世纪城等,除此之外还有线上精选 APP,提供线上购买、送货到家服务,还会不定时推出优惠券领取、限时秒杀等活动。

2. 世纪联华技术架构演进方案

2.jpg

  • 2002 年,公司成立后一直使用物理单机架构。
  • 2014 年,因为双十二事件,导致公司不得不做出改变,将业务迁移到中央机房。
  • 2018 年,随着国内公共云的发展,开始部署全面上云。
  • 2019 年 6 月,公共云上出现数据库压力过大,世纪联华由此开始探索新架构方式。
  • 到 2019 年 11 月,仅用大概 4 个月时间,世纪联华就把一部分业务搬到了阿里云的 Serverless 上,包括 API 网关、函数计算、表格存储,在 双11 期间,这三款产品的应用表现非常优异,使得世纪联华决定 All in Serverless。
  • 截至 2020 年 11 月,All in Serverless 使得整个公司的开发效率得到极大提高,成本大幅节省。

二、技术架构演进

1. 物理单机架构

3.jpg

2014 年及以前物理单机架构下,一个超市通常只有 2~20 台 POS 机,最多 20 个客户端,架构非常简洁,只要在一台物理机上部署好本地数据库,交易系统、会员系统、商品管理全都放在一个进程上就足够。如果要做相关操作,比如调取某个交易、给用户注册相关信息、调整商品价格,只要通过 Admin 客户端连接进程再做相应改动即可。通常来说,一个大型超市只要买一台性能足够强的机器,就可以服务好几十个 POS 机发起的请求。

单机架构优劣势比较:

1)优势

  • 架构简洁;
  • 不受外界网络环境的影响;
  • POS 机分散后单机冲击相对小。

2)劣势

  • 数据迁移查询汇总困难

2014 年问题逐渐暴露,比如在杭州的总部,想查询湖州某个门店的实时交易量,基本不可能,跨网络查询和数据量大是难以解决的问题。

  • 数据分发靠定期同步

比如客户在 a 门店注册的会员卡,很难去 b 门店消费,只能靠定期同步,把 a 门店的数据定期拷贝到 b 门店去,这其中存在很多问题,对消费者来说也非常麻烦。

  • 故障时很难第一时间维护修复

我们不可能每个门店都派一名专业的维护人员,如果机器出了故障,只能打电话给总部的工程师,这种情况就很难做到第一时间赶到现场修复,这是很严重的问题。

  • 单点故障容灾困难

因为所有的业务都包含在一个进程里面,如果进程出现异常, 也没办法把业务交给另一个进程处理。

  • 升级困难

我们在浙江省有上百家门店,每一次升级都需要专业的运维人员把新代码包部署到不同的机器上。

  • 新业务部署在单机上冲击巨大

举个案例,2014 年双十二,支付宝推出了使用支付宝钱包付款可以打 5 折的线下优惠活动,当时全国线下近百个品牌、2 万多家门店都参与其中,世纪联华也有参与,但是当天却出现了大量消费者无法结账在超市排起长队的情况。

4.jpg

因为我们刚刚引入一个新的支付方式,所有的业务都在单个进程上,耦合度过高,当时大家集中结账访问量过大,导致支付出现问题,整个单机访问无法进行下去,其他的业务模块也因此受到影响,最后只能重启机器。因为这个问题,世纪联华开始尝试做出新的改变。

2. 中央机房部署架构

单机最大问题是如果门店出现问题,相关工程师无法第一时间赶到现场,尤其是多个机器、多个门店同时出现问题的情况,这时最好的办法是把所有机器集中在一起,做集中的数据修复、运维管理和软件升级。

2014 年到 2018 年期间,世纪联华逐渐把单机架构整个迁移到了中央机房。中央机房是自建的,做法就是把数据库、交易系统、会员系统、商品管理全部拆分到多个进程当中。这样一来,如果会员系统挂掉了还可以暂时匿名购买;商品管理临时出问题但只要交易系统没问题就还可以顶上。耦合一旦降低,对于整个门店的业务保障来说,有了很大的提升。

5.jpg

在这里我们做了一个 node 节点,node 节点连接中央机房的数据库以及各个系统模块。如果出现问题,只需要在中央机房做相关修复即可。除此以外,如果需要调整商品价格,也只需在中央机房上直接设置,然后同步到所有门店的 node 节点上就可以了。

中央机房部署架构的改进和不足:

1)改进

  • 问题可集中维护处理;
  • 商品价格调整下发全部走网络;
  • 数据可集中查询统计汇总。

2)不足

  • 管理员需要掌控机器细节;
  • 宕机断网事件调查困难应急方案薄弱;
  • 硬件升级成本高;
  • 需要提前采购大量硬件备灾;
  • 软件、系统批量部署成本高;
  • 资源预算困难。

3. 全面上云

6.jpg

2016 年以后,随着国内公共云的迅速发展,全面上云势不可挡。在此期间,阿里云在技术上取得了许多突破与提升,例如 ECS 的对外发布。世纪联华在 2018~2019 年期间,把自建机房中的各个系统模块逐渐迁移到了公有云,整体架构没有太大改变,因此迁移工作相对顺利。

全面上云的改进和不足:
 

1)改进

主要有以下三个方面:

  • 不再需要关心网络、操作系统的硬件细节

比如阿里云的 ECS 会提前做调度和预警,把用户数据转移并做多份数据的备灾,防止磁盘坏掉的情况发生。

  • 硬件升级快捷简单

比如用户使用的是 4 核的机器,当发现业务增长迅速需要做硬件升级时,就只需要做一个镜像。比如在夜间做一个磁盘快照,重新申请一台新机器,然后把快照恢复上去,就可以完成一键迁移。对世纪联华来说,这是非常快捷的方式,对开发者来说也是比较好的体验。

  • 机器扩容时间大幅缩短

上面提到的是单机扩容,比如 4 核升到 8 核、16G 升到 32G 的内存。除此之外还有横向的扩容,例如用户交易系统的 API 接口,随着业务的发展需要由原来的 2 台机器扩到 8 台机器,这种情况下用户只需去申请机器,然后将镜像扩展到不同的机器上即可。

2)不足

主要有以下六个方面:

  • 资源预算困难

由于无法预估业务遇到大促等活动时所能达到的体量,因此无法准确计算出所需硬件的数量。

  • 水平扩展

水平扩展对研发有较高的要求。比如数据是否要做到无状态,无状态的话水平扩展会比较容易,而如果是有状态,数据可能就需要做缓存,这就会涉及到数据库相关的问题,例如数据过期、一致性等。如果对这些了解不够透彻,做水平扩展就会比较困难。

  • 水位监控

许多开发者在水位监控上处理得并不完善,如果将各个业务系统混在一台机器上,当遇到机器水位较高,想要快速排查问题并及时进行流控、拆分、临时修复等就显得尤为困难。

  • 财务预算困难

与资源预算困难类似。

  • 硬件升级成本高

要做到用户无感无损升级,可能会涉及到连接上的处理与数据库一致性的问题。如果多个模块需要同时升级,还要注意数据结构的兼容问题。

  • 数据库单点故障

许多厂家将数据全部放在一个数据库中,如果处理不妥当可能会造成单点故障。这就要做数据拆分,粗拆的话,需要注意事务和锁相关的问题,效率会大打折扣;细拆的话,做查询和排序时就会比较困难,给业务实现造成一定麻烦。

4. Serverless 的探索和尝试

1)线上不可控业务上的预防

7.jpg

2019 年年中大促时,由于线上业务用户访问不可控,数据量过大,MySQL 单机访问被打爆,导致了存储数据库出现问题,影响到了多个系统,造成了一定的损失。
 
此事件之后,世纪联华就想直接把 MySQL 替换掉,这时我们发现阿里云有一款产品叫“表格存储”,表格存储最大的优点是用户不需要关心访问量和机器数的比例关系。只要访问量扩大,后台会自动扩容增扩机器,满足高并发的数据读取;在数据并发请求降低处于低峰期时,后台就会将机器回收,用户不再需要关心机器的数量及如何调动。

8.jpg

针对用户流量不可控问题,世纪联华引入了阿里云的产品“API 网关”,API 网关可以针对不同渠道商做管控发布及流量控制。比如发现微信渠道流量有异常,就可以借助 API 网关进行限流。

另外计算也是一个非常重要的问题,世纪联华经过探索发现阿里云的“函数计算”非常契合我们的业务场景。比如定时抢购、优惠券投放等活动造成巨大的 burst 冲击,当发现计算资源不够的时候再去买机器肯定是来不及的,而函数计算及时扩容的功能就很好地解决了这个问题。另外其数据观测和异常报警功能,也吸引到了世纪联华。

世纪联华将这三个产品相结合,替换掉了原来的会员查询功能,最终得以成功渡过 2019 年的 双11 大促难关。

2)Serverless 带来的新曙光

9.jpg

  • 快速迭代部署

Serverless 研发效率快、运维效率高、架构解耦。

  • 高并发、高弹性

Serverless 不需要人工扩容和运维管控。

  • 稳定、可靠、安全

Serverless 使抢购活动和大促的整体体验都非常流畅。

  • 数据、运营、成本控制

Serverless 提供了完整的运维观测和报警监控功能,运维工程师可以轻松很多;另外按使用资源计费,资源利用率可达 100%。

5. 函数计算 2.0 及 All in Serverless

10.jpg

  • 曲线图 1:类似 ECS 方案,曲线显示有资源不足和资源浪费的情况。
  • 曲线图 2:机器扩容,有延迟和误差,需要提前操作,它的实时性和伸缩性都比较差。
  • 曲线图 3:函数计算 2.0 预留模式,有预留资源和弹性资源,可以实时扩容。
  • 资源管理层面:人工运维 → 云平台工具运维 → Serverless 免运维,实现完全自动化。
  • 资源利用率:预算采购低利用率 → 有限弹性高利用率 → Serverless 100% 资源利用率。
  • 资源成本:固定成本支出 → 根据资源策略伸缩 → Serverless 根据业务策略适配。

11.jpg

2019 年 双11 过后,世纪联华快速上云,将线上核心业务改造为全 Serverless 架构的中台模式,采用“函数计算+API 网关+OTS”作为计算网络存储核心,弹性支撑日常和大促峰谷所需资源,轻松支撑 618 / 双11 / 双12 大促。

12.jpg
图:2020 年 双11 大促

2020 年 双11 大促,世纪联华线上业务实现 All in Serverless,上为流量&时间的曲线图,下为调用延迟&时间的曲线图。

13.jpg
图:Serverless 助力世纪联华降本提效

三、设计架构演进总结

从物理单机到 All in Serverless 的架构演进:

  • 物理单机

    • 架构简单
    • 高度耦合
    • 数据同步难
    • 升级困难
    • 无法横向扩容
  • 自建机房

    • 统一维护升级
    • 数据同步统一
    • 系统部署困难
    • 硬件成本高
    • 非业务调查难
    • 临时扩容
  • 全面上云

    • 硬件升级简单
    • 扩容能力提升
    • 备灾能力提升
    • 设计要求高
    • 监测告警原始
    • 数据库单点
    • 流控问题
  • Serverless 尝试

    • 数据库单点问题
    • 流控问题解决
    • 横向扩容
    • 监控告警
    • 费用免预算
    • 部分延迟较大
  • All in Serverless

    • 解耦
    • 冷启动体验提升
    • 研发效率提升
    • 成本费用下降

四、函数计算简介

1. 阿里云函数计算产品全景

函数计算是国内生态最完整、功能最丰富的 Serverless 产品,开发者一步上云、一键 Serverless 化将成为现实。

14.jpg

2. 业界发展趋势

谁在使用函数计算?

15.jpg

作者简介:
朱鹏,花名:旻苍,函数计算一线技术专家,专注函数计算资源调度设计研发。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“5G+AI”到底有啥用?这篇漫画告诉你答案…

作者|小枣君来源|鲜枣课堂根据工信部最新的数据,截至8月份,我国5G基站数量已超过百万,达到103.7万个。面对这张全球规模最大的5G网络,我们不禁会思考——它究竟会发挥怎样的作用?它的价值到底体现在哪?它会…

Kubernetes 稳定性保障手册 -- 可观测性专题

简介: 伴随大家对稳定性重视程度的不断提升、社区可观测性项目的火热,可观测性成为了一个很热门的话题,站在不同的角度会产生不同的理解。 我们从软件开发的生命周期出发,尝试形成对可观测性的一个宏观理解,并从 SRE 和…

读懂 Redis 源码,我总结了这7点心得

作者|Magic Kaito来源|水滴与银弹阅读本文大约需要 8 分钟。你好,我是 Kaito。用了这么久的 Redis,也翻了很多次源码,经常有人问我到底怎么读 Redis 源码。一提到读源码,很多人都会比较畏惧,认为读源码是高手才会做的事…

linux c url下载文件,OpenCV教程之使用cmake生成MakeFile时下载文件

在编译OpenCV以及其附加模块时,有时会需要一些第三方的库,如果本地没有,会自动下载,下载地址一般为GitHub,结果当然就是卡死在那里,根本无法下载,下面教大家如何解决这种问题。问题重现比如我在…

OpenTelemetry 简析

简介: OpenTelemetry 是 CNCF 的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方 vendor 无关的服务。 2021.02.10,OpenTelemetry 的 tracing…

涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理

简介: 本文尝试解读ClickHouse存储层的设计与实现,剖析它的性能奥妙 作者:和君 引言 ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内各个大厂纷纷跟进大规模使用&…

xp正版验证补丁_实操web漏洞验证——IIS HTTP.sys 整数溢出漏洞

一、漏洞描述Http.sys 是一个位于 Windows 操作系统核心组件,能够让任何应用程序通过它提供的接口,以 Http 协议进行信息通讯。微软在 Windows 2003 Server 里引进了新的 HTTP API 和内核模式驱动 Http.sys,目的是使基于 Http 服务的程序更有…

普通公司编程水平与BAT大厂相比,差距到底有多大?

前言BAT的牛人多,普通人也多,虽然他们不是每个人都能达到令人仰望的技术水平,但毕竟平台高,所以眼光会变得宽阔;代码要求更为严格,所以普通的程序员也会被逼变得更优秀;身边的牛人多&#xff0c…

mindi linux 使用教程,Linux使用入门教程之tuned

tuned是RHEL6推出的调优工具,可以简单、动态的调整系统。默认的tuned软件包包含9个调优配置文件,对laptop、desktop、server系统的省电策略、磁盘调度算法、缓存、内存脏页回写等等的调节。tuned包安装后有两个服务,tuned和ktune,…

货运物流移动端解决方案:为货运物流行业打造高性能、高粘性的“双端”触点

简介: 在业务碎片化的情景下,怎么通过平台做整合,建立你的专业化运维池? 从 2020 年发展网络货运以来,在互联网和大数据的协作下,传统的物流企业逐渐转向信息化模式,在政策的不断推动下&#xf…

互联网泛娱乐直播安全的解决之道

简介: 阿里云的CDN和视频云产品在直播安全场景下有广泛的应用,阿里巴巴集团的淘宝、优酷等业务的直播正是基于这些产品底层能力,构建了强大的直播安全体系。这个基于阿里巴巴集团自身业务实践打磨出来的架构设计,也被众多上云客户…

wps office2019PC版和Mac版_学用系列WPS教育版的“十八般武艺”

相信不少朋友都在使用wps进行办公学习,但相信不少教师学生肯定不知道其实WPS还很用心提供教育版,里面有不少实用且好用的学习工具可以让我们的学习如虎添翼。今天胖胖老师就为大家介绍一下新版本WPS教育版的“十八般武艺”,欢迎大家一起来尝鲜…

只因“薪水过高”!被欠薪三个月后遭解雇,程序员删库反击

译者 | 弯月 责编 | 王晓曼出品 | 程序人生 (ID:coder _life)非技术出身的公司创始人往往并不了解开发人员的价值。如果他们的产品是科技产品,那么开发人员就是公司的燃料。我从一位同事那里听到了这个故事。故事的主人公叫做小…

linux模拟内存数据落盘,Linux:保证数据安全落盘

背景在很多IO场景中,我们经常需要确保数据已经安全的写到磁盘上,以便在系统宕机重启之后还能读到这些数据。但是我们都知道,linux系统的IO路径还是很复杂的,分为很多层,每一层都可能会有buffer来加速IO读写。同时&…

阿里云高级技术专家周哲:阿里云边缘云原生应用实践

简介: 为什么需要边缘云原生?边缘云原生的技术特性和优势是什么?它可以为行业提供哪些关键能力?又有哪些场景适合边缘云原生呢?在MEC全球应用开发者大会的“MEC开放论坛”上,阿里云高级技术专家周哲进行了《…

dataframe 如何选中某列的一行_PySpark和SparkSQL基础:如何利用Python编程执行Spark(附代码)

作者:Pinar Ersoy翻译:孙韬淳校对:陈振东本文约2500字,建议阅读10分钟本文通过介绍Apache Spark在Python中的应用来讲解如何利用PySpark包执行常用函数来进行数据处理工作。Apache Spark是一个对开发者提供完备的库和API的集群计算…

重磅官宣:Nacos2.0 发布,性能提升 10 倍

简介: 继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态。但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了 Nacos 2.0 的隔代产品设计,时隔半年我们终于将其全部实现&…

deepin linux 2014 硬盘安装教程,Linux Deepin的硬盘安装

于是装了,问题来了,即使执行了sudo umount -l /cdrom,也不能直接把原来的个人文件分区挂成/home,因为liveCD的内容还放在这个上面(想不通,我只是挂载,又不格式化,怎么就行了?新氧好像…

一站式云原生智能告警运维平台——SLS新版告警发布!

简介: 本文介绍什么是云原生可观测性需求以及告警限制,介绍一站式云原生智能告警运维平台——SLS新版告警。 前言 本篇是SLS新版告警系列宣传与培训的第一篇,后续我们会推出20系列直播与实战培训视频,敬请关注。 系列目录&#…

ansible 修改文件变量_基于ansible的批量配置生成

背景网络运维,我们有很多时间是在准备配置的路上,咱们之前也讲过,从脑海中或者是从自己的宝藏笔记中找出模板,一顿操作猛如虎,Ctrl C Ctrl V。这个过程是十分危险的,因为人不是机器,肯定会出错&…