在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中。智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点。本文中果仁软件联合创始人&研发副总赵亚南就为大家带来了关于使用阿里云POLARDB构建客到智能餐饮系统实践分享。

本次分享中,首先介绍了“客到云餐饮”这款SaaS化产品,其次介绍随着业务发展所需要面对的挑战,以及“客到”为什么要选择POLARDB。第三将讲述使用POLARDB的解决方案以及迁移的整个过程所做的实践,最后将分享将数据库架构升级到POLARDB之后的效果。

果仁软件与“客到云餐饮”背景介绍

果仁软件早在2008年就是淘宝服务平台的第一批软件开发商,当时做了“麦多多”产品,也正是因为这款产品,果仁软件成为了阿里云的第一批客户。在使用阿里云的过程中也逐渐更多地了解了这些云产品,目前整体的技术架构都是基于阿里云的。使用阿里云产品为果仁软件带来的好处就是节省了大量运维成本,能够使技术团队更加专注于自身产品和业务的开发上。四年前,基于使用阿里云的经验和对于软件的理解,果仁软件参与到了餐饮行业的SaaS化软件“客到云餐饮”开发中。客到主要实现了SaaS化餐饮解决方案,包括了点餐、收银、财务以及后厨管理和营销、员工绩效考核等。

“客到”通过智能化、数字化的餐饮服务软件,可以帮助餐厅更好地提升经营效率和服务质量,让客户真正地享受到餐饮行业所带来的服务。智能化点餐以及收银能够帮助餐厅很好地降低了人力成本和时间成本,智能化餐饮系统能够让餐厅的工作人员直接在报表中看到所有的流水信息,使得对账工作更加轻松简单。餐厅的厨师本身就非常忙碌,那么借助智能化后厨管理就能帮助厨师有序地制作菜品,进而提升后厨效率。会员营销是SaaS化中常用的功能,但是对于餐饮行业,传统会员营销方式并不能有效地吸引顾客,而借助智能系统,餐厅可以开展店内店外的智能营销,使得活动更加高效,为餐厅带来更多的资金流。很多餐饮企业越来越注意实时化的信息,对于报表的实时性要求更高。因此,餐饮行业的SaaS化就可以从这样的切入点开展。此外,“客到”在用户体验上也做了精细化设置,比较简洁、实用。而通过软件与智能硬件的配合,就能够更好地赋能餐饮行业。

“客到”借助阿里云的SaaS化发展之路

餐饮行业的特点就是业务峰值比较高,特别是午餐和晚餐时段这一点就体现的更为明显。通过阿里云后台的云监控可以看到在这两个时间段,几乎在瞬间系统压力就会大幅度提升,这就需要系统能够很好地应对峰值情况。此外,周末的晚上会比平时出现更大的峰值,能够达到平时的2到3倍。而且餐厅的订单数据量也是非常大的,正常的一家中餐厅每餐大概会销售200到250单,一些快餐厅甚至会达到1000到2000单。这样如果服务1万家餐厅,订单量就能达到每天100万,每年订单量就会达到7、8亿。结合菜单的明细数据,这样的数据量是非常大的。而且由于涉及到订单、会员以及促销等信息,因此表结构也会比较大,而且在高峰的时候这些业务都会出现高并发。此外,由于餐厅的特点,因此对于系统的稳定性要求非常高,基本上可以说是“365*24”小时的可用性要求。因为很多餐厅不仅提供中餐和晚餐,还会提供夜宵和早餐。之前用户量小时,就可以等待用户没有的时候进行发布新版本,而当用户量增大之后发现,这样的空闲时段已经不存在了。

在最初设计餐饮软件的时候,认为只要餐厅有网络就完全可以实现SaaS化。但是后来发现在业务高峰的时候,即使带宽足够,但是在访问云端数据的时候还是非常差,甚至中断而影响业务。基于这样的情况,客到实现了本地的架构调整,能够实现即使断网也不影响业务流程的继续运行,用户对于网络情况可以实现无感知,这一点在友商内能够做到的也并不多,因此也收获了较好的口碑。

随着业务发展量越来越大,用户量也越来越多,需求不断增加,业务的逻辑也越来越复杂。随着多种点餐方式以及多种下单场景的增加,对于业务调整的及时性要求越来越高。此外,产品线也越来越丰富,从3个产品飞速扩展得到8个产品。而随着业务量的增长,历史数据也飞速增长,有时候会因为云端的“慢SQL”出现卡顿,暴露出一些隐藏的问题。通过阿里云监控,及时地感知到高峰时期的CPU、内存等的报警信息,进而增加服务器或者服务器组的处理。针对于上述出现的问题,经常会做一些相应的分析。从页面的加载、前端再到后台数据库都会进行排查。在系统优化方面,会每天排查出慢SQL进行优化,包括RDS也会存在慢查询的统计,虽然慢查询并不会影响业务的正常运转,但是总会带来一些不好的用户体验。针对于以上的情况,需要增加一些索引机制以及缓存层等,对于一些历史数据进行归档,对于一些业务进行拆分,减少单表的压力,同时使得业务架构更加清晰。

虽然以上的技术问题并不会影响业务的正常运转,但是有限的研发精力总是被这些技术问题所牵绊,就会影响技术团队开发新的需求和功能的速度和效率。特别是对于创业公司而言,研发效率和用户需求是最为注重的关键点。因此更加希望将技术精力集中在产品业务的开发中,做好产品,服务好客户。如果能够通过更好的技术方式和产品减少非主线研发的工作量也是各个公司以及架构师所需要考虑的。也就是说除了需要解决当前问题,还需要能够支撑起两年之内的业务扩展,虽然中间也会经历架构演变,但是对于架构师而言,需要做到心里有底。此外,好的产品一定能够提供好的性能,同时在费用上需要做到可控和可预算。

为大家简单分享一下“客到”基于阿里云的架构设计。首先,从用户开始访问开始,阿里云提供了域名解析服务和CDN加速以及网络安全方面的Web应用防火墙。经过域名解析之后就到了前端的服务器,而通过负载均衡器将会将前置服务器和后置服务器再次分离,进而解决应用层面的并发请求量。应用服务器为了解决Session共享问题可以应用Redis解决,实现单机出现宕机不影响用户使用,从而实现高可用。同时Redis缓存可以有效缓解数据库层面的压力,但是在使用的时候也需要注意其自身的特点,比如带宽限制以及逻辑上需要和存储层保持一致。存储层之前使用RDS,现在换用了POLARDB,之前通过一台主RDS和几个RDS只读节点就基本上解决了关系型存储,可以对于订单的历史数据完成异步的备份。对于文件和图片等的存储可以放在阿里云OSS之上,这样比放在磁盘上更加节省成本。在安全方面,使用最多的就是云监控产品,这样就可以实现问题的提前监控预警。在设计架构的时候,架构师需要不断地梳理架构,这样在进行架构演进的时候就可以容易地分析和判断架构是否可以迁移。

“客到”数据库架构向POLARDB迁移实践

在进行架构迁移的可行性分析的时候,首先要把现在架构的情况,涉及到的业务以及运行的主机、ECS以及OSS都需要进行风险评估。所以在实际进行系统迁移的时候需要首先进行评估。之后为了打消研发和产品对于采用新技术和产品的顾虑,就需要做充分的准备和测试,比如对于应用POLARDB而言,需要对于性能进行充分测试,比如100%兼容MySQL,还需要对于业务进行全流程测试,在测试完成之后需要第一时间进行测试反馈。在迁移之后需要进行效果评估,“客到”在迁移到POLARDB之后发现页面响应速度得到了80%的提升,复杂SQL处理性能得到了200%的提升,而费用则降低了20%。而且整个迁移过程只使用了1个多小时,生产环境目前平稳运行,并且业务代码没有做任何修改,只做了配置文件的简单替换。

最后为大家分享在数据库架构迁移过程中需要注意的两个关键点,第一点就是VPC的迁移,POLARDB使用的是VPC网络连接,那么在迁移的时候就需要做好网络规划,需要把握好时间点。此外,需要注意白名单的变化,因为在整个网络架构发生变化的时候,外网IP的变动有可能影响到第三方接口调用。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

用POLARDB构建客到智能餐饮系统实践的更多相关文章

  1. 智能家居系统 Home Assistant 系列 --介绍篇

    一. HomeAssistant 是什么? HomeAssistant是构建智慧空间的神器.是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation).群组化 ...

  2. 利用ant脚本 自动构建svn增量/全量 系统程序升级包【转】

    引文:我们公司是做自己使用产品,迭代更新周期短,每次都花费较多时间和精力打包做增量更新,发现了一篇文章用于 自动构建svn增量/全量 系统程序升级包,收藏之,希望可以通过学习,更加简化我们的工作. 文 ...

  3. Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

    Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 转载:Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 目录 1. 初始安装 3. Homebridg ...

  4. 多智能体系统(MAS)简介

    1.背景   自然界中大量个体聚集时往往能够形成协调.有序,甚至令人感到震撼的运动场景,比如天空中集体翱翔的庞大的鸟群.海洋中成群游动的鱼群,陆地上合作捕猎的狼群.这些群体现象所表现出的分布.协调.自 ...

  5. BJSV-P-003高清智能卡口系统

    高清智能卡口系统 捕获率99%,车牌识别率98%   ■ 道路安装示意图 ■ 系统结构 ■      抓拍实例 北京太速科技有限公司在线客服:QQ:448468544 淘宝网站:orihard.tao ...

  6. 汽车安全攻击篇:智能网联系统的短板,如何防护汽车的安全C

    我们在<速度与激情>里,经常可以看到主角们利用网络侵入汽车网络系统,然后任意的操纵这些车辆,看电影的时候会被画面所震撼到,这两年"自动驾驶"随着特斯拉的车已经越来越普及 ...

  7. Pattern Lab - 构建先进的原子设计系统

    Pattern Lab 是一个工具集,帮助您创建原子设计系统.在它的核心,是一个自定义静态网站生成器,构建了类似原子,分子和界面结合在一起,形成模板和页面.Pattern Lab 可以作为项目的模式库 ...

  8. C#拖放实现餐饮系统转台操作

    转台是餐饮系统中常用的操作,一般系统都是右键选择弹出目标台界面,然后选择目标台确定,现在我们把需要转的台通过拖动到目标台图标上面就可以实现前面的操作,简单快捷. 转台操作时: 转台成功后: /// & ...

  9. JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM

    Nicolas Bevacqua进行了一个比较JavaScript构建(编绎)系统的任务.他对三巨头: Grunt, Gulp and NPM进行了比较,并讨论了每种的优缺点. By Nicolas ...

随机推荐

  1. C#运行时通过字符串实例化类对象

    备忘,记个C#版本. using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  2. media 标签解释

    一:常用标签这句话是自动设置缩放,然而,它并不能完全适应所有的手机,并且你在用浏览器手机模式调试的时候可能正常,但是换到真实的手机端其实是不正常的.所以我们还要进行改动. <meta name= ...

  3. orm介绍

    昨日回顾: 1 今日内容: 1 orm介绍 1 tools--->Run manage.py Task python3 manage.py makemigrations 只需要敲命令:makem ...

  4. C++ STL常用知识

    模板(各种类型通用): template<class 模板名> 注意:若要使用模板,在每个自定义函数前都必须加上此定义. 排序(algorithm头文件): sort(头指针l,尾指针r) ...

  5. 学习Python第五天

    今天咱们讲一下元组,hash,字典,元组是数据类型其中之一 元组的特性为有序的,不可变的,但是如果其中有可变元素,这些可变元组还是可以改变的,代码如下: 元组的写法:name = (‘roy’,‘al ...

  6. Codeforces831D Office Keys

    D. Office Keys time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  7. 项目设计day1

    项目内容:一个实时监控斗鱼TV某个主播弹幕的设计 通过python爬虫获取当前弹幕,通过flume采集数据,接下来数据分为线上和线下两种方案: 线上:实时分析,分为两种方案:(1) flume+kaf ...

  8. MySQL基础操作1

    1.进入MySQL的两种方式: (1).MySQL自带的控制台 直接输入密码 (2).命令提示符: mysql -uroot -proot 然后再输入密码 MySQL常用指令 ------- 1.启动 ...

  9. Android-finished with non-zero exit value 2

    网上都是说,由于导入的依赖出现重复造成的,或者说 由于buildtools版本太高造成的,而我遇到的这个问题,这种两种方式无法去解决,所以才有了一下这种解决方式: 第一步,打开项目最外层的 build ...

  10. C#程序以管理员权限运行(ZT)

    本文转载:http://www.cnblogs.com/Interkey/p/RunAsAdmin.html 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) ...