世纪联华的 Serverless 之路
简介:2019 年 双11 过后,世纪联华快速上云,将线上核心业务改造为全 Serverless 架构的中台模式,采用“函数计算+API 网关+OTS”作为计算网络存储核心,弹性支撑日常和大促峰谷所需资源,轻松支撑 618 / 双11 / 双12 大促。
作者 | 朱鹏(旻苍)
来源 | Serverless 公众号
一、世纪联华超市简介
1. 公司简介
杭州联华华商集团有限公司成立于 2002 年 7 月,主要业务涵盖购物中心、大卖场、超市、便利店等零售业态,G20 杭州峰会食材总仓建设、保障单位,是浙江省商贸龙头企业。
集团 200 多家门店中,主要涉及 POS 机交易、联华超市、CITY LIFE、天华世纪城等,除此之外还有线上精选 APP,提供线上购买、送货到家服务,还会不定时推出优惠券领取、限时秒杀等活动。
2. 世纪联华技术架构演进方案
- 2002 年,公司成立后一直使用物理单机架构。
- 2014 年,因为双十二事件,导致公司不得不做出改变,将业务迁移到中央机房。
- 2018 年,随着国内公共云的发展,开始部署全面上云。
- 2019 年 6 月,公共云上出现数据库压力过大,世纪联华由此开始探索新架构方式。
- 到 2019 年 11 月,仅用大概 4 个月时间,世纪联华就把一部分业务搬到了阿里云的 Serverless 上,包括 API 网关、函数计算、表格存储,在 双11 期间,这三款产品的应用表现非常优异,使得世纪联华决定 All in Serverless。
- 截至 2020 年 11 月,All in Serverless 使得整个公司的开发效率得到极大提高,成本大幅节省。
二、技术架构演进
1. 物理单机架构
2014 年及以前物理单机架构下,一个超市通常只有 2~20 台 POS 机,最多 20 个客户端,架构非常简洁,只要在一台物理机上部署好本地数据库,交易系统、会员系统、商品管理全都放在一个进程上就足够。如果要做相关操作,比如调取某个交易、给用户注册相关信息、调整商品价格,只要通过 Admin 客户端连接进程再做相应改动即可。通常来说,一个大型超市只要买一台性能足够强的机器,就可以服务好几十个 POS 机发起的请求。
单机架构优劣势比较:
1)优势
- 架构简洁;
- 不受外界网络环境的影响;
- POS 机分散后单机冲击相对小。
2)劣势
- 数据迁移查询汇总困难
2014 年问题逐渐暴露,比如在杭州的总部,想查询湖州某个门店的实时交易量,基本不可能,跨网络查询和数据量大是难以解决的问题。
- 数据分发靠定期同步
比如客户在 a 门店注册的会员卡,很难去 b 门店消费,只能靠定期同步,把 a 门店的数据定期拷贝到 b 门店去,这其中存在很多问题,对消费者来说也非常麻烦。
- 故障时很难第一时间维护修复
我们不可能每个门店都派一名专业的维护人员,如果机器出了故障,只能打电话给总部的工程师,这种情况就很难做到第一时间赶到现场修复,这是很严重的问题。
- 单点故障容灾困难
因为所有的业务都包含在一个进程里面,如果进程出现异常, 也没办法把业务交给另一个进程处理。
- 升级困难
我们在浙江省有上百家门店,每一次升级都需要专业的运维人员把新代码包部署到不同的机器上。
- 新业务部署在单机上冲击巨大
举个案例,2014 年双十二,支付宝推出了使用支付宝钱包付款可以打 5 折的线下优惠活动,当时全国线下近百个品牌、2 万多家门店都参与其中,世纪联华也有参与,但是当天却出现了大量消费者无法结账在超市排起长队的情况。
因为我们刚刚引入一个新的支付方式,所有的业务都在单个进程上,耦合度过高,当时大家集中结账访问量过大,导致支付出现问题,整个单机访问无法进行下去,其他的业务模块也因此受到影响,最后只能重启机器。因为这个问题,世纪联华开始尝试做出新的改变。
2. 中央机房部署架构
单机最大问题是如果门店出现问题,相关工程师无法第一时间赶到现场,尤其是多个机器、多个门店同时出现问题的情况,这时最好的办法是把所有机器集中在一起,做集中的数据修复、运维管理和软件升级。
2014 年到 2018 年期间,世纪联华逐渐把单机架构整个迁移到了中央机房。中央机房是自建的,做法就是把数据库、交易系统、会员系统、商品管理全部拆分到多个进程当中。这样一来,如果会员系统挂掉了还可以暂时匿名购买;商品管理临时出问题但只要交易系统没问题就还可以顶上。耦合一旦降低,对于整个门店的业务保障来说,有了很大的提升。
在这里我们做了一个 node 节点,node 节点连接中央机房的数据库以及各个系统模块。如果出现问题,只需要在中央机房做相关修复即可。除此以外,如果需要调整商品价格,也只需在中央机房上直接设置,然后同步到所有门店的 node 节点上就可以了。
中央机房部署架构的改进和不足:
1)改进
- 问题可集中维护处理;
- 商品价格调整下发全部走网络;
- 数据可集中查询统计汇总。
2)不足
- 管理员需要掌控机器细节;
- 宕机断网事件调查困难应急方案薄弱;
- 硬件升级成本高;
- 需要提前采购大量硬件备灾;
- 软件、系统批量部署成本高;
- 资源预算困难。
3. 全面上云
2016 年以后,随着国内公共云的迅速发展,全面上云势不可挡。在此期间,阿里云在技术上取得了许多突破与提升,例如 ECS 的对外发布。世纪联华在 2018~2019 年期间,把自建机房中的各个系统模块逐渐迁移到了公有云,整体架构没有太大改变,因此迁移工作相对顺利。
全面上云的改进和不足:
1)改进
主要有以下三个方面:
- 不再需要关心网络、操作系统的硬件细节
比如阿里云的 ECS 会提前做调度和预警,把用户数据转移并做多份数据的备灾,防止磁盘坏掉的情况发生。
- 硬件升级快捷简单
比如用户使用的是 4 核的机器,当发现业务增长迅速需要做硬件升级时,就只需要做一个镜像。比如在夜间做一个磁盘快照,重新申请一台新机器,然后把快照恢复上去,就可以完成一键迁移。对世纪联华来说,这是非常快捷的方式,对开发者来说也是比较好的体验。
- 机器扩容时间大幅缩短
上面提到的是单机扩容,比如 4 核升到 8 核、16G 升到 32G 的内存。除此之外还有横向的扩容,例如用户交易系统的 API 接口,随着业务的发展需要由原来的 2 台机器扩到 8 台机器,这种情况下用户只需去申请机器,然后将镜像扩展到不同的机器上即可。
2)不足
主要有以下六个方面:
- 资源预算困难
由于无法预估业务遇到大促等活动时所能达到的体量,因此无法准确计算出所需硬件的数量。
- 水平扩展
水平扩展对研发有较高的要求。比如数据是否要做到无状态,无状态的话水平扩展会比较容易,而如果是有状态,数据可能就需要做缓存,这就会涉及到数据库相关的问题,例如数据过期、一致性等。如果对这些了解不够透彻,做水平扩展就会比较困难。
- 水位监控
许多开发者在水位监控上处理得并不完善,如果将各个业务系统混在一台机器上,当遇到机器水位较高,想要快速排查问题并及时进行流控、拆分、临时修复等就显得尤为困难。
- 财务预算困难
与资源预算困难类似。
- 硬件升级成本高
要做到用户无感无损升级,可能会涉及到连接上的处理与数据库一致性的问题。如果多个模块需要同时升级,还要注意数据结构的兼容问题。
- 数据库单点故障
许多厂家将数据全部放在一个数据库中,如果处理不妥当可能会造成单点故障。这就要做数据拆分,粗拆的话,需要注意事务和锁相关的问题,效率会大打折扣;细拆的话,做查询和排序时就会比较困难,给业务实现造成一定麻烦。
4. Serverless 的探索和尝试
1)线上不可控业务上的预防
2019 年年中大促时,由于线上业务用户访问不可控,数据量过大,MySQL 单机访问被打爆,导致了存储数据库出现问题,影响到了多个系统,造成了一定的损失。
此事件之后,世纪联华就想直接把 MySQL 替换掉,这时我们发现阿里云有一款产品叫“表格存储”,表格存储最大的优点是用户不需要关心访问量和机器数的比例关系。只要访问量扩大,后台会自动扩容增扩机器,满足高并发的数据读取;在数据并发请求降低处于低峰期时,后台就会将机器回收,用户不再需要关心机器的数量及如何调动。
针对用户流量不可控问题,世纪联华引入了阿里云的产品“API 网关”,API 网关可以针对不同渠道商做管控发布及流量控制。比如发现微信渠道流量有异常,就可以借助 API 网关进行限流。
另外计算也是一个非常重要的问题,世纪联华经过探索发现阿里云的“函数计算”非常契合我们的业务场景。比如定时抢购、优惠券投放等活动造成巨大的 burst 冲击,当发现计算资源不够的时候再去买机器肯定是来不及的,而函数计算及时扩容的功能就很好地解决了这个问题。另外其数据观测和异常报警功能,也吸引到了世纪联华。
世纪联华将这三个产品相结合,替换掉了原来的会员查询功能,最终得以成功渡过 2019 年的 双11 大促难关。
2)Serverless 带来的新曙光
- 快速迭代部署
Serverless 研发效率快、运维效率高、架构解耦。
- 高并发、高弹性
Serverless 不需要人工扩容和运维管控。
- 稳定、可靠、安全
Serverless 使抢购活动和大促的整体体验都非常流畅。
- 数据、运营、成本控制
Serverless 提供了完整的运维观测和报警监控功能,运维工程师可以轻松很多;另外按使用资源计费,资源利用率可达 100%。
5. 函数计算 2.0 及 All in Serverless
- 曲线图 1:类似 ECS 方案,曲线显示有资源不足和资源浪费的情况。
- 曲线图 2:机器扩容,有延迟和误差,需要提前操作,它的实时性和伸缩性都比较差。
- 曲线图 3:函数计算 2.0 预留模式,有预留资源和弹性资源,可以实时扩容。
- 资源管理层面:人工运维 → 云平台工具运维 → Serverless 免运维,实现完全自动化。
- 资源利用率:预算采购低利用率 → 有限弹性高利用率 → Serverless 100% 资源利用率。
- 资源成本:固定成本支出 → 根据资源策略伸缩 → Serverless 根据业务策略适配。
2019 年 双11 过后,世纪联华快速上云,将线上核心业务改造为全 Serverless 架构的中台模式,采用“函数计算+API 网关+OTS”作为计算网络存储核心,弹性支撑日常和大促峰谷所需资源,轻松支撑 618 / 双11 / 双12 大促。
图:2020 年 双11 大促
2020 年 双11 大促,世纪联华线上业务实现 All in Serverless,上为流量&时间的曲线图,下为调用延迟&时间的曲线图。
图:Serverless 助力世纪联华降本提效
三、设计架构演进总结
从物理单机到 All in Serverless 的架构演进:
物理单机
- 架构简单
- 高度耦合
- 数据同步难
- 升级困难
- 无法横向扩容
自建机房
- 统一维护升级
- 数据同步统一
- 系统部署困难
- 硬件成本高
- 非业务调查难
- 临时扩容
全面上云
- 硬件升级简单
- 扩容能力提升
- 备灾能力提升
- 设计要求高
- 监测告警原始
- 数据库单点
- 流控问题
Serverless 尝试
- 数据库单点问题
- 流控问题解决
- 横向扩容
- 监控告警
- 费用免预算
- 部分延迟较大
All in Serverless
- 解耦
- 冷启动体验提升
- 研发效率提升
- 成本费用下降
四、函数计算简介
1. 阿里云函数计算产品全景
函数计算是国内生态最完整、功能最丰富的 Serverless 产品,开发者一步上云、一键 Serverless 化将成为现实。
2. 业界发展趋势
谁在使用函数计算?
作者简介:
朱鹏,花名:旻苍,函数计算一线技术专家,专注函数计算资源调度设计研发。
本文整理自【Serverless Live 系列直播】1 月 28 日场
直播回看链接:https://developer.aliyun.com/topic/serverless/practices
Serverless 电子书下载
本书亮点:
- 从架构演进开始,介绍 Serverless 架构及技术选型构建 Serverless 思维;
- 了解业界流行的 Serverless 架构运行原理;
- 掌握 10 大 Serverless 真实落地案例,活学活用。
下载链接:https://developer.aliyun.com/topic/download?id=1128
原文链接:https://developer.aliyun.com/article/782598?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
世纪联华的 Serverless 之路相关推荐
- 订单峰值激增 230%,Serverless 如何为世纪联华降本超 40%?|双11 云原生实践
作者 | 朱鹏 导读:2020 年 双11,世纪联华基于阿里云函数计算 (FC) 弹性扩容,应用于大促会场 SSR.线上商品秒杀.优惠券定点发放.行业导购.数据中台计算等多个场景,业务峰值 QPS 较 ...
- 华联、联华、世纪华联、百联
简单的两个字各种排列组合以后竟然神奇地搞出来那么多不同的单位和商店,让我不得不佩服景德镇人民的智慧.正好今天头让我run一下二三季度全国各大超市便利店的数据,我们俩同时发现了一个问题:世纪联华.联华. ...
- 入股联华马云新零售战略翻篇:最终要让电子商务成历史
5月26日,阿里巴巴宣布从易果生鲜手里购入联华超市18%的股份,成为联华超市第二大股东,百联集团仍然控股,阿里巴巴这一举动谁都知道:为了贯通线上线下的新零售布局.阿里巴巴表示接下来将用"大数 ...
- 霍尼韦尔推出升级版智慧消防物联解决方案;汤森路透完成向AWS的大规模迁移 | 美通企业日报...
今日看点:霍尼韦尔推出升级版智慧消防物联解决方案.汤森路透已完成向AWS的大规模迁移.希尔顿惠庭品牌加速在华拓展步伐半年签约50家.和黄医药于上海张江举行创新药生产基地开工仪式.优锐医药完成1.81亿 ...
- 京东智联云在 Serverless 的探索
本文整理自 ServerlessDay · China 大会 - <京东智联云在 Serverless 的探索>的分享,讲师为京东智联云的 PaaS 产品负责⼈朱琅. 本文主要分为三部分: ...
- 联华超市构建商业智能系统
简介 国家或地区:中国 项目背景: 联华超市(以下简称联华)创建于1991年5月,是上海首家以发展连锁经营为特色的超市公司.公司2005年的营业收入达到了143.1亿元,比2004年增长31.85%, ...
- 中维世纪视频汇聚,为百路以上项目提供一站式视频集中管理服务
中维世纪视频汇聚,以融视云和云视通平台为依托,以端到端产品能力为保障,将分散的不同品牌.不同协议的视频资源进行统一整合和集中管理,可实现视频图像资源大数据的一网汇聚,构建视频数据资源池,同时通过构建视 ...
- 左手唱片,右手流媒体,环球、索尼、华纳前行之路在何方?
千禧年之后,在黑暗中蹒跚前行的唱片业似乎终于迎来了曙光. 今年6月,时隔九年后华纳音乐再度登陆纳斯达克,在互联网的冲击下,曾经的五大国际唱片公司如今只剩环球.索尼与华纳三家,而实体专辑的销量还在连年下 ...
- 开放报名 | 阿里云 Serverless 研修班走进四川大学
简介:8.14 阿里云 Serverless 将走进四川大学! 为响应和支持教育部关于振兴中西部高校的若干意见,推动四新教育建设,保障教育部-阿里云产学合作协同育人项目顺利进行,阿里云联合多所西部高校 ...
最新文章
- 简述SHELL全局环境变量与局变环境变量
- cytocape绘图(三)
- 妈蛋:kinMaxShow轮播图异常,WebUploader图片上传坑爹,图片被压缩了
- Qt设置应用程序图标
- linux 批量kill java进程
- Python工程师求职必知的经典面试题分享
- qt qthead里如何响应信号_Qt 中的多线程技术(翻译)
- @select注解_Mybatis基本知识十七:Mybatis注解式开发-单表注解式开发
- Day 16 包 json模块和os模块
- 我们为什么会爱上一个人?
- 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
- java对接微信公众号
- MindManager 2021授权许可密钥思维导图软件
- Pygame——创建游戏地图
- Just Do It!
- c 控制 汇编语言,C 和 汇编语言的混合编程(实时控制TLC1549的实现)
- Kafka 入门 (一)
- 蓝桥杯 ALGO-1005 数字游戏
- 数值分析多种算法C语言代码-推荐
- slserver生成oracle脚本,sql server t-sql脚本转成oracle plsql
热门文章
- Apache Flink 零基础入门(二):使用docker快速搭建Flink
- ubuntu系统如何切换到root用户登录
- 十五、中文词向量训练二
- 不用写一行代码,这款 高颜值 可视化神器,值得try一try!
- 你能体会那种写 Python 时不用 import 的幸福吗?
- 大熊猫“认脸”神器!扫一扫,人脸识别认证卖萌大熊猫
- 批处理 操作mysql_用批处理对MySQL进行数据操作
- norminv函数是什么matlab,norminv函数的用法,表示的是什么意思
- 2019数据安装勾选_万能的XY数据标签插件,柱形图也可以呈现变化率
- linux下屏幕太靠右了,怎么消除linux下的屏幕偏移现象和调整屏幕刷新率?