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

news2024/10/23 2:50:27
导语 | 在数字化浪潮席卷全球的今天,每一个行业都在经历着前所未有的变革。餐饮行业作为人们日常生活中不可或缺的一部分,更是面临着巨大的转型压力。如何完成数字化转型,打破传统经营模式的限制,成为摆在众多餐饮商家面前的一道难题。餐饮行业如何在当下数字化时代找寻自己的出路?今天,我们特邀了乐凯撒 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.coloradmin.cn/o/1843592.html

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

相关文章

基于Docker搭建ELK(Elasticsearch、Logstash、Kibana)日志框架

一、引言 随着企业业务的不断增长,日志管理成为了系统运维中不可或缺的一部分。ELK(Elasticsearch、Logstash、Kibana)作为一套开源的日志管理系统,以其高效、灵活、可扩展的特性,成为了众多企业的首选。本文将详细介…

代码随想录刷题复习day01

day01 数组-二分查找 class Solution {public int search(int[] nums, int target) {// 左闭右闭int left 0;int right nums.length - 1;int mid 0;while (right > left) {mid left (right - left) / 2;if (nums[mid] > target)right mid - 1;else if (nums[mid]…

机器学习案例|使用机器学习轻松预测信用卡坏账风险,极大程度降低损失

01、案例说明 对于模型的参数,除了使用系统的设定值之外,可以进行再进一步的优化而得到更好的结果。RM提供了几种参数优化的方法,能够让整体模型的效率提高。而其使用的概念,仍然是使用计算机强大的计算能力,对于不同…

动态轮换代理在多账户管理中有何用处?

如果您要处理多个在线帐户,选择正确的代理类型对于实现流畅的性能至关重要。但最适合这项工作的代理类型是什么? 为了更好地管理不同平台上的多个账户并优化成本,动态住宅代理IP通常作用在此。 一、什么是轮换代理? 轮换代理充当…

SpringSecurity实战入门——认证

项目代码 gson/spring-security-demo 简介 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相比…

探索交互设计:五大关键维度全面剖析

交互式设计是用户体验(UX)设计的重要组成部分。在本文中,我将向大家解释什么是交互设计并简要描述交互设计师通常每天都做什么。 一、什么是交互设计 交互式设计用简单的术语来理解就是用户和产品之间的交互。在大多数情况下,当…

嵌入式Linux 中常见外设屏接口分析

今天将梳理下嵌入式外设屏幕接口相关的介绍,对于一个嵌入式驱动开发工程师,对屏幕都可能接触到一些相关的的调试,这里首先把基础相关的知识梳理。 1. 引言 在嵌入式开发过程中,使用到的液晶屏有非常多的种类,根据不同技术和特性分类,会接触到TN液晶屏,TN液晶屏 VA液晶屏…

JDBC(简介、入门与IDEA中导入MySQL的驱动)

(建议学完 MySQL 的基础部分) JDBC——简而言之:用 Java 语言操作数据库。 Java DataBase Connectivity(Java 语言连接数据库) 目录 一、引言 (1)基本介绍 (2)JDBC 简…

【代码随想录】【算法训练营】【第44天】 [322]零钱兑换 [279]完全平方数 [139]单词拆分

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 44,周四,坚持不住了~ 题目详情 [322] 零钱兑换 题目描述 322 零钱兑换 解题思路 前提: 思路: 重点: 代码实现 C语言 [279] 完全…

代码随想录算法训练营第29天(贪心)|455.分发饼干、376. 摆动序列、53. 最大子序和

455.分发饼干 题目链接:455.分发饼干 文档讲解:代码随想录 状态:so easy 思路:对胃口和饼干大小排序,小胃口对应小饼干,不满足的话用下一块饼干试探。 题解: public int findContentChildren(i…

自动化测试Robot FrameWork框架

一、简介 Robot FrameWork是完全基于Python实现的开源的自动化测试框架,RF已经封装好的各个模块,基于关键字驱动的形式来实现的自动化测试。其case采用表格形式易读,且支持BDD,可容纳各种外置库,可以继承Selenium、Ap…

【机器学习】基于稀疏识别方法的洛伦兹混沌系统预测

1. 引言 1.1. DNN模型的来由 从数据中识别非线性动态学意味着什么? 假设我们有时间序列数据,这些数据来自一个(非线性)动态学系统。 识别一个系统意味着基于数据推断该系统的控制方程。换句话说,就是找到动态系统方…

【etcd】etcd单机安装及简单操作

https://blog.csdn.net/Mr_XiMu/article/details/125026635 https://blog.csdn.net/m0_73192864/article/details/136509244 etcd在生产环境中一般为集群方式部署 etcd使用的2个默认端口号:2379和2380 2379:用于客户端通信(类似于sqlserver的1433&#x…

视频融合共享平台LntonCVS视频监控安防系统运用多视频协议建设智慧园区方案

智慧园区,作为现代化城市发展的重要组成部分,不仅推动了产业的升级转型,也成为了智慧城市建设的核心力量。随着产业园区之间的竞争日益激烈,如何打造一个功能完善、智能化程度高的智慧园区,已经成为了业界广泛关注的焦…

五十、openlayers官网示例JSTS Integration解析——使用JSTS 库来处理几何缓冲区并在地图上显示结果

官网demo地址: JSTS Integration 这篇讲了如何在地图上添加缓冲图形 什么叫做缓冲几何? 几何缓冲(Geometric Buffering)是指在 GIS(地理信息系统)和计算几何中,围绕一个几何对象创建一个具有…

时空预测 | 基于深度学习的碳排放时空预测模型

时空预测 模型描述 数据收集和准备:收集与碳排放相关的数据,包括历史碳排放数据、气象数据、人口密度数据等。确保数据的质量和完整性,并进行必要的数据清洗和预处理。 特征工程:根据问题的需求和领域知识,对数据进行…

Walrus:去中心化存储和DA协议,可以基于Sui构建L2和大型存储

Walrus是为区块链应用和自主代理提供的创新去中心化存储网络。Walrus存储系统今天以开发者预览版的形式发布,面向Sui开发者征求反馈意见,并预计很快会向其他Web3社区广泛推广。 通过采用纠删编码创新技术,Walrus能够快速且稳健地将非结构化数…

5款堪称变态的AI神器,焊死在电脑上永不删除!

一 、AI视频合成工具——Runway: 第一款RunWay,你只需要轻轻一抹,视频中的元素就会被擦除,再来轻轻一抹,直接擦除,不喜欢这个人直接擦除,一点痕迹都看不出来。 除了视频擦除功能外,…

第一个Neety程序

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Netty ⛺️稳中求进&#xff0c;晒太阳 加入依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.39.F…

【Spine学习10】之 创建新骨骼时,自动绑定图片和插槽的快捷方式

两天没更新了。 遇到一些难解的难题 用的版本是破解版 不知道为啥现在的教程非常地快 明明有些细节很重要还略过讲 所以创建骨骼这里 基本创建是都会 可是骨骼一多 实际工作中的重命名也太麻烦了 。 这就需要学习快捷创建方式&#xff1a; <将对应图片自动绑定到新骨骼上并…