乐趣区

关于腾讯云:Serveless-助力新零售-乐凯撒新餐饮服务落地实践

本文整顿自乐凯撒黄道泳在 Techo 大会的分享,文字局部约 5100 字。

上面,让咱们一起回顾下黄老师在 Techo 大会的精彩演讲内容:

大家好!我是黄道泳。十分荣幸收到腾讯云的邀请,来给大家介绍一下腾讯云 Serverless 在乐凯撒新餐饮服务上的利用实际。

乐凯撒是一个披萨的餐饮门店,目前在深圳、广州、上海、苏州、佛山、惠州、东莞、昆明、重庆等地领有 140 多家直营门店。乐凯撒是红山资本成员企业,是红杉资本在中国投资的第一家餐饮企业。11 年独创了榴莲比萨,现已风靡全国。

明天分享四局部,第一局部讲一下 Serverless 的利用背景。第二局部是对于咱们用 Serverless 做了什么,第三局部我会分享下 Serverless 解决了业务上哪些痛点,第四局部讲一下将来在 Serverless 利用上的倒退布局,以及 Serverless 应用过程中有哪些挑战和注意事项。

利用背景

先看一下咱们过后的利用背景。咱们开始决定应用 Serverless 来做咱们系统升级革新的时候,是在 2017 年的时候,过后咱们业务零碎信息孤岛重大,有二次开发艰难,大量用户用的零碎语言和接口都不一样。

17 年底,咱们做了咱们本人的小程序点餐零碎,这个零碎自身须要和后盾业务零碎买通,这个时候须要解决多个零碎之间的互联互通问题。另外就是业务零碎耦合度高,业务拆分艰难,零碎稳定性差,各种紧急的业务需要和流动无奈及时满足。所以咱们尝试先通过 Serverless 做一些部分的革新。

新餐饮介绍

首先讲一下咱们对新餐饮的思考,它在信息化数字化的要求,新餐饮自身也是人货场的重构,次要实现咱们日常经营治理所有的数据可能全流程在线化,次要分为四块:

  1. 点餐、下单、领取、制作、出品实现实时在线化。
  2. 用餐评估,会员治理能够在线化,反对数字化营销。
  3. 供应链订货、播种、盘点、损耗在流程在线,数据买通。
  4. 人事、考勤、成本核算等在线化,工具化,高效化。这些方面是咱们新餐饮转型在这方面要进行全方面的数字化革新。

下图是咱们以前建成的零碎的架构图,咱们当初的零碎就是在这个根底上进行欠缺的。两头是业务中台,对接很多第三方零碎,小零碎包含咱们云打印零碎、点餐零碎、会员零碎、配送零碎、开店管理系统,还有第三方零碎,比如说金蝶 ERP 零碎、红海 EHR 零碎,第三方零碎又会产生数据交互。

云函数调用形式

  1. API 网关提供 http 接口
  2. 定时触发。做一些定时数据处理,定时数据计算等等。
  3. 使用 Websocket 实时通信,咱们目前利用在云打印这一块,用来做实时打印通信和打印机的治理。
  4. CMQ 音讯订阅触发。咱们会把它用在会员计算这块。
  5. COS 存储触发
  6. CKafka 数据的解决。

后面四种咱们都用到了。

乐凯撒利用 Serverless 的业务详情

咱们用云函数实现的业务性能十分多。

  1. 微信小程序的服务利用,基于云函数实现的,而且目前腾讯云也反对云开发。
  2. 公众号音讯推送服务。
  3. 实时通信服务,方才讲的云打印服务。
  4. 不同的业务零碎数据同步,比如说金蝶的 ERP 零碎以及 WMS 零碎的对接和数据同步,SOS 餐饮零碎和金蝶 ERP 数据接口的同步。
  5. 对立的领取服务,订单的付款,订单的领取,定时异样数据邮件揭示。
  6. 第三方外卖平台、第三方零碎的数据抽取及解决入库。须要长期上线的性能需要或接口对接。咱们做完之后,间接能够不论它了。

以上都是用 Serverless 平台实现的。

云函数的利用场景及编程语言

咱们罕用云函数的利用场景及编程语言有多种,一般来说,

对接不同零碎接口的利用用 Nodejs;

定时工作治理,Nodejs 和 Java 都用;

数据抽取、数据运算、数据同步用 Nodejs 和 Python;

各类长期流动,做完就下架,用 Nodejs。

机器学习利用能够用 Python。目前 Nodejs 和 Python 比拟多,Java 用的偏少。

Serverless 解决的问题和痛点

首先,Serverless 云函数它是人造微服务的架构,它自身是函数一个服务,它是微服务,咱们看成是微服务的升级版,第 4 代架构,是云微服务版。自身微服务能解决很多,数据耦合度的问题。

第二,适宜解决大量零散的定时工作,比如说咱们能够极大的缩小服务,缩小部署独立的定时器服务,解决集群服务的定时工作治理的问题。尤其是并发的集群的定制工作。

第三,更低的开发难度,更高的开发效率,因为现成的资源能够间接用。针对不同的业务场景,能够借助不同语言个性,联合研发团队的能力,更疾速的实现对应的需要。利用他们相熟的语言,去做业务场景,而不是须要大家对立的技术架构。他们能够很灵便疾速推动这个需要。

最初,运维老本。因为云函数有一个很强的特色,不运行则不产生费用。第二个不产生资源的占比,没有多大服务器的老本。另外扩容也是全自动的。它的运维老本很低。

晚期,咱们用云函数来做多个业务零碎之间的对接,尤其是解决多个异构零碎之间的数据连通,因为咱们整个零碎的重构不是一天就能实现的,是缓缓去做的,缓缓一直的重复,一直的去调整这些性能。一步一步缓缓去做,多个异构零碎的黏合剂。

这里,我分享几个利用场景的案例:

利用案例:云打印服务——传统架构

首先,我介绍下用来解决云打印服务,这是一个打印的小零碎。用来解决门店在下单之后,咱们打印机打印小票。首先说一下传统架构的实现。

在传统的架构里,每一个门店都会有一个本地的服务器,这个本地的服务器会提供一个本地服务,咱们门店须要有一个交银机,一个一体机,还有打印机,通过本地服务器进行管控。总部也须要有服务,总部进行数据的整合,例如:美团的订单,会先把订单下到总部的服务器上,总部服务器把这个数据推送到门店,门店服务器接到数据之后,它才可能告诉到打印机进行打印小票,由此来实现整个门店业务的治理。

当初,基本上有大量的订单是线高低单,不论是小程序的订单也好,还是美团饿了么也好,都是通过网上下单,存在网络链路的问题。网络一断就不好办了。

我总结下传统架构存在以下痛点:

  1. 硬件及保护老本十分高。门店须要部署独立的本地服务器。
  2. 总部对于门店的服务状况无奈疾速掌控,因为这个数据每隔一段时间才会通信,很难做到实时把数据同步下来。
  3. 咱们收银电脑广泛配置极低,订单数据无奈实时上传汇总,门店下单和美团总部接到的单是错位的,须要一段时间能力同步。

利用案例:云打印服务——新的云服务架构

新的架构是云服务架构,勾销了本地服务器,无需门店本地部署服务器。在比拟低端配置的收银电脑或 SDK 上部署轻量级客户端。

关上浏览器,就能够实时传回所有订单数据,能够追踪你所有的服务状态。打印机它是在门店的局域网外部,所以咱们独自在咱们云端的服务,就是咱们 SOS 收银零碎,还有云打印服务依然实现云打印服务,通过它连贯咱们本地的收银机客户端,由它来定制咱们的打印机,它是实时通信的,随时晓得门店的打印机是否能失常打印,是不是卡纸,是不是纸打完了,没有纸了,咱们随时都能够晓得。这个过程就解决了门店很多问题,因为订单是可追踪的,打印机会随时把故障解决。

利用案例:会员画像标签运算零碎

第二个案例,咱们用云函数联合 CMQ,联合 API 网关,实现会员画像标签运算零碎。

咱们做会员零碎,一般来说会员比拟重要的一项数据要生成,就是会员画像,咱们要基于会员消费行为生产轨迹生成用户会员它的画像,会员的喜好、生产频率、生产的品位等等。咱们心愿可能疾速实时的跟踪这些数据,通过平台能够用极低的老本实现整个过程。

这个过程如何实现?

第一步,用户产生购买消费行为数据推送到咱们柜员零碎,通过生产订单产生统计数据。这个数据统计完之后,把数据装到数据库。因为它的生产是失常的,是失常订单的数据。咱们会对信息推送到音讯队列外面,咱们 CMQ 会调用咱们 API 网关,API 网关前面对接的是云函数。

Serverless 云函数,每一个云函数会对应一类标签,包含生产频次,生产偏好等等标签,这类云函数对它进行标签的实时运算,如果计算过程中产生谬误,会把这个音讯反馈给 CMQ,CMQ 通知生产失败,如果失常的话,会拉取数据,拉取完之后标签计算,标签计算实现之后,咱们会把标签保留入库,最终生成用户画像,最终生产胜利,整个标签计算实现,整个生产实现。通过这样的形式,咱们实现了整个会员画像实时计算零碎。

咱们目前这个零碎从 19 年上半年的时候开始做,到当初为止,整个会员画像的标签有 3000 多万。

利用案例:智能营业额预测

第三个案例,咱们往年做的,在云函数上应用机器学习的一个实际,咱们能够做的智能化:

第一、智能销售

通过分层治理通过大量的集成学习,放到数据库,调取咱们的数据库,进行云计算。

第二、订货

第三、人员的排班

以营业额预测为例,具体咱们是怎么做的?拉取近两年门店的营业额,最长拉两年,没有两年也能够拉,起码是一到两个月。通过这个数据,咱们生成每一家门店接下来 30 天的营业额,这是每天滚动生成的机器学习的过程。

首先,咱们先会抽取数据处理,对咱们营业额的数据做抽取,做相干的异样解决。

其次,咱们会生成训练特色,为咱们数据组合特色。

第三,咱们会定期训练模型,会应用 LightGBM 模型训练多个模型,而后是多个模型预测数据加权交融,而后应用已有模型集预测数据特征值预测数据,咱们不是每天都训练,个别两周到一个月做一次训练,整个代码都是在数据库下面,没有离开去做。很边界的实现营业预测。到目前咱们运行下来有靠近半年的工夫,咱们目前营业额,单店均匀准确度达到 87%,这个准确度蛮高的。

云函数的价值

这三个我的项目中云函数次要价值点是什么呢?

1、云打印服务

  • 通过应用腾讯云提供的 Websocke 服务,缩小了地层框架的开发难度,使得研发人员只有关注业务开发即可。
  • 一个人大略花 2 周多工夫就搞定了,人力和工夫老本节俭至多 50%。

2、会员画像标签运算零碎

  • 通过应用 CMQ,API 网关和云函数疾速搭建起来一个高质量稳固的计算服务架构。目前咱们从上线运行到当初,还没出过问题。基本上你不须要思考太多你的服务器资源的问题,惟一的问题是你的数据库面临比拟大的压力。
  • 一个中级的研发工程师三年的教训,从钻研应用到搭建框架到开发实现不到 2 周工夫。

3、智能营业额预测

  • 通过应用函数的分层治理,缩小了代码的治理和调试的难度。
  • 用较低的老本和更高的效率实现了机器学习的智能利用。

服务运维及老本、服务稳定性和性能都有较好的保障,而且费用投入远低于自建服务的形式,至多节俭了 3 台 4 核 8G 内存的服务器。

开发周期下面传统是百分之百,云函数是 55%。研发难度传统是百分之百,云函数是 45%。

老本的话传统是百分之百,云函数只有 30%。相似定时器这种,可能有 10%。定时器一天也就跑三五次。然而很高配的服务器,长期占用的话,这个老本是消不掉的。

将来的布局

第一、强化 Java 体系云函数的利用。

咱们方才看到比拟多的是 Python,咱们真正大型的零碎还是以 Java 为主,咱们这块心愿做很深度的利用,咱们心愿联合 springboot,强化 Java 云函数能力,实现既能本地调试,又能不便的进行云函数部署。

第二、对于多个云函数定时器提供对立调度和治理性能利用能力。

第三、联合其余的资源,如果只用云函数,只能施展外面百分之四五十的性能,联合其余的资源后你就会发现整体效率,包含你的老本节俭会十分多。

方才提到的 CMQ、COS、LB 负载平衡用起来,你会发现极大的升高其余综合流程,整个研发效率都会有比拟大的晋升。包含咱们零碎稳定性,基本上扩容这个事件,绝大部分都不须要思考。个别咱们在建零碎的时候,你要思考的是你的各个系统,你的峰值。80% 的工夫,你的 CPU 只有 10% 或者是 1%。这样的状况下,云函数参数会有比拟大的长处在你峰值低的时候,会降到很低的老本。你的费用是依照运行次数和工夫和运行内存来综合计算的。

最初,继续加强机器学习和大数据分析方面的云函数利用。包含明年会打算去做这个事件,能不能搞人脸识别的库,和图片辨认,去做图像识别的利用,包含用户特色这一块。这个是咱们的布局。

一些挑战和注意事项

  1. 工程化、模块化治理不便。其实是微服务共性的问题,微服务开的够多够细,须要咱们做好布局。
  2. 云函数自身机制的问题,第一次运行或者函数长期未运行时,或者再次收回调用的时候,会有一个启动工夫,比如说 5 到 10 秒,看你的启动资源花多少,启动慢的话会一秒两秒,可能造成接口会延时。调用方面要思考。
  3. 本地化调试的不便问题。本地运行的代码到云函数上跟我设想中的不一样,尤其是 Java 函数有比拟大的区别。目前咱们本人也做了相似的框架。本地它是一个开发,远端入口是基于打包。进去的后果是不一样的。近期云函数公布了在线调试性能,感兴趣的敌人能够尝试。
  4. 公共类库的复用问题。这个问题用 Python 语言能够解决。Java 问题类库不大好解决。Java 类库有反复援用,咱们看到这一块,看看有没有更好的解决方案。
  5. 跨区域的网络稳定性引发的云服务灾备问题。这个是什么意思呢?这个也是咱们过往产生过的,咱们云服务部署按区部署,你在广州部署,在北京部署,在上海部署,是不可能跨区域的。如果这个区域的网络,如果一旦产生问题,你可能会导致云服务没法失常用。这个时候须要疾速的灾备计划。目前咱们在上海有一套,如果网络呈现问题,疾速切换,这样肯定水平去防止问题。目前还没有全国性的切换。
  6. 在做云函数开发的时候,咱们已经犯过一个很重大的谬误,因为咱们始终认为云函数资源本人治理就好了,用完了就关了,这个不肯定的。尤其波及到数据库资源,云函数外面的链接,就是你本人开了肯定要关,如果不关的话,有可能导致链接池,最终导致数据库解体。云函数刚开始做的时候,大家会疏忽。咱们肯定要本人治理链接。这个是咱们在应用过程中遇到的问题和挑战。

明天我就分享这么多,谢谢大家!

One More Thing

立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 ???? serverless/start

欢送拜访:Serverless 中文网!

退出移动版