本文整顿自乐凯撒黄道泳在 Techo 大会的分享,文字局部约 5100 字。
上面,让咱们一起回顾下黄老师在 Techo 大会的精彩演讲内容:
大家好!我是黄道泳。十分荣幸收到腾讯云的邀请,来给大家介绍一下腾讯云 Serverless 在乐凯撒新餐饮服务上的利用实际。
乐凯撒是一个披萨的餐饮门店,目前在深圳、广州、上海、苏州、佛山、惠州、东莞、昆明、重庆等地领有 140 多家直营门店。乐凯撒是红山资本成员企业,是红杉资本在中国投资的第一家餐饮企业。11 年独创了榴莲比萨,现已风靡全国。
明天分享四局部,第一局部讲一下 Serverless 的利用背景。第二局部是对于咱们用 Serverless 做了什么,第三局部我会分享下 Serverless 解决了业务上哪些痛点,第四局部讲一下将来在 Serverless 利用上的倒退布局,以及 Serverless 应用过程中有哪些挑战和注意事项。
利用背景
先看一下咱们过后的利用背景。咱们开始决定应用 Serverless 来做咱们系统升级革新的时候,是在 2017 年的时候,过后咱们业务零碎信息孤岛重大,有二次开发艰难,大量用户用的零碎语言和接口都不一样。
17 年底,咱们做了咱们本人的小程序点餐零碎,这个零碎自身须要和后盾业务零碎买通,这个时候须要解决多个零碎之间的互联互通问题。另外就是业务零碎耦合度高,业务拆分艰难,零碎稳定性差,各种紧急的业务需要和流动无奈及时满足。所以咱们尝试先通过 Serverless 做一些部分的革新。
新餐饮介绍
首先讲一下咱们对新餐饮的思考,它在信息化数字化的要求,新餐饮自身也是人货场的重构,次要实现咱们日常经营治理所有的数据可能全流程在线化,次要分为四块:
- 点餐、下单、领取、制作、出品实现实时在线化。
- 用餐评估,会员治理能够在线化,反对数字化营销。
- 供应链订货、播种、盘点、损耗在流程在线,数据买通。
- 人事、考勤、成本核算等在线化,工具化,高效化。这些方面是咱们新餐饮转型在这方面要进行全方面的数字化革新。
下图是咱们以前建成的零碎的架构图,咱们当初的零碎就是在这个根底上进行欠缺的。两头是业务中台,对接很多第三方零碎,小零碎包含咱们云打印零碎、点餐零碎、会员零碎、配送零碎、开店管理系统,还有第三方零碎,比如说金蝶 ERP 零碎、红海 EHR 零碎,第三方零碎又会产生数据交互。
云函数调用形式
- API 网关提供 http 接口
- 定时触发。做一些定时数据处理,定时数据计算等等。
- 使用 Websocket 实时通信,咱们目前利用在云打印这一块,用来做实时打印通信和打印机的治理。
- CMQ 音讯订阅触发。咱们会把它用在会员计算这块。
- COS 存储触发
- CKafka 数据的解决。
后面四种咱们都用到了。
乐凯撒利用 Serverless 的业务详情
咱们用云函数实现的业务性能十分多。
- 微信小程序的服务利用,基于云函数实现的,而且目前腾讯云也反对云开发。
- 公众号音讯推送服务。
- 实时通信服务,方才讲的云打印服务。
- 不同的业务零碎数据同步,比如说金蝶的 ERP 零碎以及 WMS 零碎的对接和数据同步,SOS 餐饮零碎和金蝶 ERP 数据接口的同步。
- 对立的领取服务,订单的付款,订单的领取,定时异样数据邮件揭示。
- 第三方外卖平台、第三方零碎的数据抽取及解决入库。须要长期上线的性能需要或接口对接。咱们做完之后,间接能够不论它了。
以上都是用 Serverless 平台实现的。
云函数的利用场景及编程语言
咱们罕用云函数的利用场景及编程语言有多种,一般来说,
对接不同零碎接口的利用用 Nodejs;
定时工作治理,Nodejs 和 Java 都用;
数据抽取、数据运算、数据同步用 Nodejs 和 Python;
各类长期流动,做完就下架,用 Nodejs。
机器学习利用能够用 Python。目前 Nodejs 和 Python 比拟多,Java 用的偏少。
Serverless 解决的问题和痛点
首先,Serverless 云函数它是人造微服务的架构,它自身是函数一个服务,它是微服务,咱们看成是微服务的升级版,第 4 代架构,是云微服务版。自身微服务能解决很多,数据耦合度的问题。
第二,适宜解决大量零散的定时工作,比如说咱们能够极大的缩小服务,缩小部署独立的定时器服务,解决集群服务的定时工作治理的问题。尤其是并发的集群的定制工作。
第三,更低的开发难度,更高的开发效率,因为现成的资源能够间接用。针对不同的业务场景,能够借助不同语言个性,联合研发团队的能力,更疾速的实现对应的需要。利用他们相熟的语言,去做业务场景,而不是须要大家对立的技术架构。他们能够很灵便疾速推动这个需要。
最初,运维老本。因为云函数有一个很强的特色,不运行则不产生费用。第二个不产生资源的占比,没有多大服务器的老本。另外扩容也是全自动的。它的运维老本很低。
晚期,咱们用云函数来做多个业务零碎之间的对接,尤其是解决多个异构零碎之间的数据连通,因为咱们整个零碎的重构不是一天就能实现的,是缓缓去做的,缓缓一直的重复,一直的去调整这些性能。一步一步缓缓去做,多个异构零碎的黏合剂。
这里,我分享几个利用场景的案例:
利用案例:云打印服务——传统架构
首先,我介绍下用来解决云打印服务,这是一个打印的小零碎。用来解决门店在下单之后,咱们打印机打印小票。首先说一下传统架构的实现。
在传统的架构里,每一个门店都会有一个本地的服务器,这个本地的服务器会提供一个本地服务,咱们门店须要有一个交银机,一个一体机,还有打印机,通过本地服务器进行管控。总部也须要有服务,总部进行数据的整合,例如:美团的订单,会先把订单下到总部的服务器上,总部服务器把这个数据推送到门店,门店服务器接到数据之后,它才可能告诉到打印机进行打印小票,由此来实现整个门店业务的治理。
当初,基本上有大量的订单是线高低单,不论是小程序的订单也好,还是美团饿了么也好,都是通过网上下单,存在网络链路的问题。网络一断就不好办了。
我总结下传统架构存在以下痛点:
- 硬件及保护老本十分高。门店须要部署独立的本地服务器。
- 总部对于门店的服务状况无奈疾速掌控,因为这个数据每隔一段时间才会通信,很难做到实时把数据同步下来。
- 咱们收银电脑广泛配置极低,订单数据无奈实时上传汇总,门店下单和美团总部接到的单是错位的,须要一段时间能力同步。
利用案例:云打印服务——新的云服务架构
新的架构是云服务架构,勾销了本地服务器,无需门店本地部署服务器。在比拟低端配置的收银电脑或 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%。这样的状况下,云函数参数会有比拟大的长处在你峰值低的时候,会降到很低的老本。你的费用是依照运行次数和工夫和运行内存来综合计算的。
最初,继续加强机器学习和大数据分析方面的云函数利用。包含明年会打算去做这个事件,能不能搞人脸识别的库,和图片辨认,去做图像识别的利用,包含用户特色这一块。这个是咱们的布局。
一些挑战和注意事项
- 工程化、模块化治理不便。其实是微服务共性的问题,微服务开的够多够细,须要咱们做好布局。
- 云函数自身机制的问题,第一次运行或者函数长期未运行时,或者再次收回调用的时候,会有一个启动工夫,比如说 5 到 10 秒,看你的启动资源花多少,启动慢的话会一秒两秒,可能造成接口会延时。调用方面要思考。
- 本地化调试的不便问题。本地运行的代码到云函数上跟我设想中的不一样,尤其是 Java 函数有比拟大的区别。目前咱们本人也做了相似的框架。本地它是一个开发,远端入口是基于打包。进去的后果是不一样的。近期云函数公布了在线调试性能,感兴趣的敌人能够尝试。
- 公共类库的复用问题。这个问题用 Python 语言能够解决。Java 问题类库不大好解决。Java 类库有反复援用,咱们看到这一块,看看有没有更好的解决方案。
- 跨区域的网络稳定性引发的云服务灾备问题。这个是什么意思呢?这个也是咱们过往产生过的,咱们云服务部署按区部署,你在广州部署,在北京部署,在上海部署,是不可能跨区域的。如果这个区域的网络,如果一旦产生问题,你可能会导致云服务没法失常用。这个时候须要疾速的灾备计划。目前咱们在上海有一套,如果网络呈现问题,疾速切换,这样肯定水平去防止问题。目前还没有全国性的切换。
- 在做云函数开发的时候,咱们已经犯过一个很重大的谬误,因为咱们始终认为云函数资源本人治理就好了,用完了就关了,这个不肯定的。尤其波及到数据库资源,云函数外面的链接,就是你本人开了肯定要关,如果不关的话,有可能导致链接池,最终导致数据库解体。云函数刚开始做的时候,大家会疏忽。咱们肯定要本人治理链接。这个是咱们在应用过程中遇到的问题和挑战。
明天我就分享这么多,谢谢大家!
One More Thing
立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 ???? serverless/start
欢送拜访:Serverless 中文网!