Serverless如何赋能餐饮行业数字化?乐凯撒思变之道

导语 | 在数字化浪潮席卷全球的今天,每一个行业都在经历着前所未有的变革。餐饮行业作为人们日常生活中不可或缺的一部分,更是面临着巨大的转型压力。如何完成数字化转型,打破传统经营模式的限制,成为摆在众多餐饮商家面前的一道难题。餐饮行业如何在当下数字化时代找寻自己的出路?今天,我们特邀了乐凯撒 CTO 黄道泳老师,他将为我们深入解读以乐凯撒为代表的餐饮行业的数字化转型之道。

作者简介

黄道泳,腾讯云 TVP,乐凯撒 CTO。目前主要负责乐凯撒的整体信息化、数据化和智能化的建设。拥有14年的企业信息化和数据化建设经验。在乐凯撒面向新餐饮的服务转型中,积累了丰富的实践经验,并对 Serverless 技术在实际生产中应用有独到的见解。曾担任 IBM Webshpere 中国区官方论坛的版主和专家,对于系统架构,性能调优略有心得。

一、从餐饮行业的五大特征看数字化转型的必要性

近年来,随着数字技术的持续发展、迭代和应用推广,餐饮行业的堂食已经从人力点餐快速演变为扫码点餐,外卖送餐不仅仅是在线点餐即时配送,更是与短视频、线上直播有效结合,以短视频营销、线上直播营销的形式,在数字化变革中为消费者带来最直观的体验。

首先,在餐饮行业中,消费呈现出脉冲型特征,存在着明显的高峰期。这种波峰波谷的差异很大,主要集中在午餐和晚餐这两个用餐高峰时段。在这些时间段内,餐厅通常会迎来大量的顾客。

其次,餐饮业务具有交易敏感型特征,订单交易系统需要快速实时响应。顾客在现场点餐时,期望能够得到及时的消费响应,因此餐饮企业需要具备良好的灾备能力和快速响应机制。由于没有太多时间来进行服务器扩容等操作,餐饮行业在面对突发情况时需要迅速作出应对。

第三,餐饮业务是一项 24 小时不间断的服务业务,基本上不接受停服更新。餐饮企业需要保持持续的运营,确保顾客能够随时享受到美食。因此,在进行系统升级或更新时,餐饮企业需要采取一些特殊的措施,以确保业务的连续性。

第四,与金融、电信、科技等行业相比,餐饮业对于信息技术的投入相对较低。餐饮行业普遍面临资金有限的问题,无法像其他行业那样进行大规模的 IT 投资。这也意味着餐饮企业在信息化建设方面可能面临一些挑战,需要在有限的资源下进行合理的规划和选择。

最后,餐饮行业的信息化链条相对较长,涉及多个系统的对接和整合。餐饮企业通常需要应对大量异构系统的集成,使得各个环节能够无缝衔接。此外,餐饮行业还会面临大量临时性、一次性的紧急需求,例如各种节日促销活动。这些临时需求对系统的灵活性和快速响应能力提出了更高的要求。

综上所述,餐饮行业应根据以上五大特征,了解并应对这些特征对于餐饮企业的信息化、数字化建设和业务发展至关重要。

二、云函数的独特优势助力餐饮行业实现数字化

众所周知,云函数是一种无服务器(Serverless)概念的技术,在餐饮行业进行数字化转型中具有多项优势。首先,它实现了自动化弹性执行,根据使用量进行收费,并根据调用曲线自动扩缩容,以应对高峰期的服务压力。这种按需付费的模式不仅经济实惠,还能在闲时减少费用,提高系统稳定性和灾备能力。

其次,使用云函数可以摆脱繁琐的部署和配置过程,无需自己安装软件和配置服务器脚本。特别适用于临时的、低频的应用部署,可极大地节省服务器资源。而且在不使用时,无需额外销毁处理,进一步简化了管理流程。

云函数采用按需付费和毫秒级计费模式,永远不会在空闲时间产生费用。这对于脉冲式的访问业务具有明显的优势,并且可以针对低峰期和晚上的用量极低的情况进行优化,有效降低成本。

云函数支持高可用部署,它可以自动选择每个地域中的可用区来运行。如果某个可用区发生灾害或电力故障等导致瘫痪,云函数会自动切换到其他可用区的基础设施上运行,从而减少了单可用区运行的故障风险。这使得异地灾备的问题基本上不再需要考虑。同时,云函数还支持快速发布新版本和版本回退,实现了无感知的发版和版本回退。

最后,云函数的天然微服务模式使得每个函数都专注于某个特定的任务,通过相互协作可以构建复杂的应用程序。这种模块化的架构使开发者能够更灵活地管理和调整不同功能模块的资源消耗,实现快速迭代和部署。

在我看来,云函数是一种经济、实惠、稳定且灵活的技术,它能够根据实际需求自动弹性执行,节省资源,按需付费,并具备高可用性和灾备能力。

同时,它天然支持微服务模式,使开发者能够更灵活地构建和管理应用程序,实现快速迭代和部署。

三、乐凯撒餐饮高并发场景下的最佳实践

当前,国内的餐饮行业已经从增量市场转变为存量市场,在市场总额有限的情况下,在互联网、大数据等新一代信息技术迅猛发展的时代背景下,数字化成为帮助餐饮企业增加收入、降低成本、提升效率的重要工具。

毋庸置疑,餐饮收银 POS 系统作为餐饮门店最核心的业务系统,其中涉及大量实时交易的模块,例如订单、支付、打印、会员、优惠券等。我们乐凯撒用腾讯云函数最早做的是小程序的点单服务,后来逐渐扩大,到门店的云打印、会员标签的计算等等,总的来说包括独立应用、分布式计算和定时任务这三类业务。

在餐饮行业中,数字化系统的建构“效率”最为关键,这也正是乐凯撒选择携手腾讯云,借力腾讯云函数 SCF、消息队列 CMQ、TDSQL 等现有的成熟云产品的原因所在:不重复造轮子,通过好的工具有效实现降本增效,不断深化乐凯撒的数字化布局。

当前,我们基本上与腾讯云深度绑定,用的产品包括云函数 SCF、消息队列 CMQ、TDSQL、MySQL、COS 存储等。

其实,我们乐凯撒在正式使用云函数来支撑餐饮 POS 系统前,主要采用传统的 Java 体系的 J2EE 架构,通过部署不同的独立模块的系统来支撑门店的以上业务。

(图1,餐饮POS系统架构图)

其中我们乐凯撒的部分业务已经采用了云函数模式进行运行,而主要的 POS 业务和会员业务等仍然是通过各自独立的服务器集群进行部署。

然而,在去年 2 月份,我们乐凯撒遭遇了一次突发活动,这导致访问量急剧增加。在晚上 9 点多的时候,由于一个免费优惠券在社媒上传播,不到一个小时的时间内就有 18 万份优惠券被领取。这直接导致系统崩溃,并在接下来的几天里引发门店爆单、系统响应变慢等问题。

(图2,系统后台访问数据图)

如上图所示,我们乐凯撒遭遇了一次访问量剧增,整体访问量增加了 20 倍。这导致我们的 POS 收银系统无法承受,最终不得不停止服务。

在进行系统复盘后,我们提出了两个解决方案:

● 方案一:增加服务器资源,加强服务器灾备能力,并实现快速自动化部署脚本以便对服务器集群进行扩容。然而,这个方案需要额外的服务器预算,并且大部分时间服务器资源处于闲置状态,同时也增加了运维的复杂性。

● 方案二:采用云函数来实现和部署这类脉冲型业务,无需额外采购服务器,也无需进行大规模的扩容和相应的运维工作。然而,这需要对现有业务进行重构和调整,以适应云函数架构。

经过综合考虑,我们最终确定了方案二,将优惠券服务、订单服务和菜单服务从现有系统中分离出来,采用云函数进行单独运行和部署。这样能够更好地适应脉冲型业务的需求。

调整后的架构图如下:

(图3,调整后的系统架构图)

通过将订单服务和优惠券服务转换为云函数架构,我们显著提升了系统的整体稳定性。几乎没有发生系统崩溃或响应过慢等问题,并且我们几乎没有增加服务器预算的成本。

然而,在 2024 年 2 月份,我们乐凯撒遇到了两次类似的业务激增情况。一次是在 2 月 21 日,访问量接近 20 万次;另一次是在 2 月 23 日,访问量接近 40 万次。然而,我们的系统在这些情况下都能平稳运行下去。有趣的是,我甚至是通过门店爆单的情况才了解到访问量的剧增。

与此类似,我们的支付服务和打印服务一直采用云函数模式运行,并且从 2018 年上线至今几乎没有遇到过压力过载的故障。其中,我们的打印服务是访问量最高的服务,平时每分钟处理接近 4000 次请求,采用了 WebSocket 通信协议。

总而言之,通过将关键服务转换为云函数架构,我们不仅提高了系统的稳定性,还能应对突发的业务激增情况。支付服务和打印服务作为长期采用云函数模式运行的示范,也展示了它们在处理高访问量时的出色表现。

(图4,系统访问趋势图)

在这个案例中,我们乐凯撒采用了云函数的自动扩缩容、按需付费、高可用和微服务化的模式,以解决业务需求。在进行云函数改造的过程中,我们总结了一些问题:

● 相对于其他语言,云函数对 Java 的支持较弱。由于我们的大型或复杂业务系统主要使用 Java 实现,早期上线的支付服务和打印服务采用了 Node.js,因此上线相对顺利,稳定性和体验都比较好。但要使 Java 应用在云函数上更好地使用,需要付出更多努力。

● 纯 Java 语言的功能相对有限,为了高效开发,通常需要依赖开源框架,尤其是 Spring。

● Java 启动慢,内存占用大,与其他语言相比,在 Serverless 云函数下会占用更多资源。对于复杂业务系统,每个接口部署一个云函数会增加部署和管理成本。

● Java 应用涉及数据库请求时,通常会使用数据库连接池进行管理。然而,在云函数中,连接池不能设置得太大,最好在 3-5 个之间,否则会导致数据库连接数过高。由于云函数是为每个请求开启一个类似 Java 进程的服务,当并发量较大时,云函数会创建大量的 Java 进程,进而导致数据库连接数过高。

● 迁移现有业务代码至云函数时,需要尽量减少修改,实现无缝迁移,并支持本地调试和模拟云端环境,但目前还没有较好的解决方案。

为了解决上述问题,我们乐凯撒自研了一套兼容云函数和 SpringBoot 这两种模式都能正常运行的框架。该框架支持在本地调试和测试环境下直接使用 Spring Boot 或 Tomcat 启动,而在正式环境中则直接采用云函数运行。此外,该框架还支持一个云函数部署多个访问接口的服务,使云函数能够按模块划分微服务。

我们已经将该框架开源,并在 GitHub 上发布了一个简单的订单服务 demo 样例,感兴趣的朋友可以自行前往查看:(《基于腾讯云函数部署的springboot》 :https://github.com/lacesarLabs/tencentyun-scf-springboot)

其实,如果要广泛应用云函数,我们必须面对一个必须解决的问题,即大规模应用 Java 语言的云函数化。由于许多商业软件和复杂应用都是使用 Java 实现的,我们需要一个能够与 Spring Cloud 等微服务生态系统媲美的云函数框架,以及云函数调用的框架或平台,以更好地替换和升级现有的 Java 应用。这个框架应该支持基于云函数的函数注册、函数管理、函数调度和函数发现等配套功能。

在这个案例中,我们乐凯撒通过这个框架成功地将相关服务快速迁移到云函数上。最初,我们将云函数视为灾备和临时扩容服务,但在测试运行后,发现其稳定性和性能表现出色,于是将其作为正式环境的服务,而虚拟机中的服务则成为备份。

其实,整个解决方案的成本只占了方案一所需的正常服务器资源费用的不到 10%。在这个方案中,我们完美应用了云函数的几个重要特性:自动扩缩容、按需付费、天然的微服务模式以及高可用和无服务器概念。

结语

总而言之,餐饮行业中各企业进行数字化转型已经是大势所趋。企业适应数字化趋势,积极推动数字化转型,通过建设数字化、智能化平台,可以有效助力企业提高效率、降低成本、优化运营,并提供更好的产品和服务,在竞争激烈的市场中脱颖而出,实现可持续的增长。

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

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

相关文章

Windows 10永久关闭“系统准备工具 3.14“禁止开机自启

文章目录 一、问题描述二、解决方法总结 一、问题描述 每次开机都会显示如下图所示的 系统准备工具 3.14 二、解决方法 按win R键打开运行窗口 → 输入cmd → 点击 确定 如图所示输入下面如图所示代码 → 按 回车 → 输入 Y → 按 回车 XCOPY C:\windows\System32\svchost.e…

Apache ShardingSphere实战与核心源码剖析

Apache ShardingSphere实战与核心源码剖析 1.数据库架构演变与分库分表介绍 1.1 海量数据存储问题及解决方案 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。…

外观缺陷检测原理

产品外观是影响产品质量最重要的因素之一,其平整度、有无瑕疵等不仅影响到产品美观,甚至能够直接影响产品本身的使用和后续加工,给企业带来重大经济损失。 随着人工智能技术的快速发展,机器视觉与AI技术的结合应用加速渗透进工业…

数据可视化实验二:回归分析、判别分析与聚类分析

目录 一、使用回归分析方法分析某病毒是否与温度呈线性关系 1.1 代码实现 1.2 线性回归结果 1.3 相关系数验证 二、使用判别分析方法预测某病毒在一定的温度下是否可以存活,分别使用三种判别方法,包括Fish判别、贝叶斯判别、LDA 2.1 数据集展示&am…

【大语言模型】本地快速部署Ollama运行大语言模型详细流程

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【C++提高编程-09】----C++ STL之常用排序算法

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

电商平台数据的认知与深度理解

随着信息技术的迅猛发展,电商平台已成为现代社会商业活动的重要舞台。在这个舞台上,数据不仅是交易的记录,更是企业决策的依据、用户行为的镜子和市场变化的晴雨表。本文将从多个维度对电商平台数据进行全面且深入的认知和理解。 一、数据的…

从WWDC 2023看苹果的未来:操作系统升级与AI技术的融合

引言 在2024年的WWDC(苹果全球开发者大会)上,苹果公司展示了一系列创新技术和产品,其中最引人注目的莫过于操作系统的升级与AI技术的深度融合。作为一个备受期待的发布会,WWDC不仅向我们展示了苹果在技术上的前瞻性布…

建议收藏:防止外发文件二次泄密的七个办法

防止外发文件二次泄密是一项重要的信息安全管理任务,特别是在涉及敏感信息、商业秘密或知识产权的文档时。以下是一些有效的策略和措施,用以降低文件外发后的泄密风险。 1. 使用加密软件(安企神软件) 透明加密:对外发…

GPT-4系列模型,在文档理解中的多维度评测

著名云数据平台Snowflake的研究人员发布了一篇论文,主要对OpenAI的GPT-4系列模型进行了研究,查看其文本生成、图像理解、文档摘要等能力。 在DocVQA、InfographicsVQA、SlideVQA和DUDE数据集上对GPT-4、GPT-4 V、GPT-4 Turbo V OCR等进行了多维度测试。…

场外期权在哪个平台可以买卖?

今天带你了解场外期权在哪个平台可以买卖?近年来,随着投资者对个股期权交易的兴趣不断增加,市场上涌现出了许多热门的场外个股期权交易平台,那么在哪个平台可以买卖场外期权? 场外期权在哪个平台可以买卖? …

5G消息 x 融媒 | 媒体融合新入口

5G消息 x 融媒 | 媒体融合新入口 5G 消息是 5G 时代三大运营商联合手机厂商推出的平台型应用,5G 消息以短信为入口,以富媒体消息为媒介,具有权威真实、全面覆盖、精准投放、内容汇聚、开放共享等特点。这些特点符合当下融媒体发展的需求&…

Windows电脑部署Jellyfin服务端并进行远程访问配置详细教程

文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…

6.1 Python 文件类型及常用内置方法

文章目录 1. 文件读写1.1 文件1.2 open函数1. file参数2. mode参数3. encoding参数 1.3 操作文件注意事项1. 操作文件原理2. 操作文件步骤3. 回收系统资源 1.4 上下文管理 2. 模式测试2.1 只写模式1. 文件不存在2. 文件存在 2.2 读模式1. 路径存在2. 路径不存在 2.3 追加模式2.…

​1:25万基础电子地图(江西版)

我们在《50幅1:25万基础电子地图(四川版)》和《1:25基础电子地图(云南版)》等文中,为你分享过四川和云南的基础电子地图。 现在我们再为你分享江西的1:25万基础电子地图,你可以在文…

第9章 类

第9章 类 9.1 创建和使用类9.1.1 创建 Dog 类9.1.2 根据类创建实例 9.2 使用类和实例9.2.1 Car 类9.2.2 给属性指定默认值9.2.3 修改属性的值 9.3 继承9.3.1 子类的方法__init__()9.3.2 给子类定义属性和方法9.3.3 重写父类的方法9.3.4 将实例用作属性9.3.5 模拟实物 9.4 导入类…

【AI绘画】文心一格

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

数据结构-绪论

目录 前言一、从问题到程序二、数据结构的研究内容三、理解数据结构3.1 数据3.2 结构3.2.1 逻辑结构的分类3.2.2 存储结构的分类 3.3 数据结构 总结 前言 本篇文章先介绍数据结构的研究内容,然后再介绍如何去理解数据结构,着重介绍表示数据结构关系的逻…

springboot与flowable(5):任务分配(表达式)

在做流程定义时我们需要给相关的用户节点指派对应的处理人。在flowable中提供了三种分配的方式。 一、固定分配 在分配用户时选择固定值选项确认即可。 二、表达式 1、值表达式 2、方法表达式 三、表达式流程图测试 1、导出并部署 导出流程图,复制到项目中 部署流…

机器学习——集成学习和梯度提升决策树

集成学习 不同的算法都可以对解决同一个问题,但是可能准确率不同,集成学习就是不同算法按照某种组合来解决问题,使得准确率提升。 那怎么组合算法呢? 自举聚合算法**(bagging)** 顾名思义是 自举聚合 自举…