分库分表实战:最初的我们—了解一下单库外卖订单系统

[IT科技类资讯] 时间:2025-11-05 13:59:04 来源:益强IT技术网 作者:IT科技 点击:33次
前 言

​​上一期内容我们整体了解了分库分表实战项目当前使用的分库分表系统架构​​,也就是实战单库版本订单系统的系统架构。同时,最初我们也知道了未来要做的单库订单分库分表版本的订单系统架构。现在,解下我们就从单库版本的外卖订单系统开始,一步一步的系统来进行优化。

如果想要优化单库版本的分库分表订单系统,首先要了解目前的实战订单系统有哪些核心功能,核心功能的最初业务流程是什么。

如果你刚入职了这家初创型互联网公司,单库订单而你所在的解下部门又刚好是做外卖APP的订单系统的,那你认为入职之后要干的外卖第一件事是什么呢?

必须是了解整个订单系统,你的系统leader可能会直接给你发个wiki,这个wiki中包含了单库版本的香港云服务器分库分表系统架构图,如下图:

通过这张系统架构图,可以知道整个订单系统目前有哪些核心功能,都使用了哪些技术栈。

并且,在这个wiki中除了有系统架构图之外,还有很多核心接口的业务流程图,通过这些业务流程图,可以快速了解到订单系统核心接口的业务流程。

那订单系统中,有哪些核心接口的业务流程图?现在,我们一起来看一下。

用户下单流程

大家或多或少都是点过外卖的,订单系统涉及用户和商家两个角色的功能,先来看一下C端,即用户端的一些业务流程,首先就是用户下单的操作。

用户可以在外卖APP中点外卖,当用户选中一个商品之后,会提交订单,接着就会发起一个创建订单的请求,如下图:

可以看到,创建订单的免费源码下载请求首先会转发给Controller组件,Controller组件再把请求交给Service组件处理,在Service组件中会先生成一个订单号,然后为新的订单组装好订单信息以及订单明细信息。

随后,Service组件再将组装好的订单信息转交给Repository组件处理,Repository组件通过Mapper组件,最终将订单的信息保存到数据库中。

当然,用户正式下单之后,是需要支付订单的,但是支付相关的功能,这里可以暂时不用关注。

用户查询订单列表流程

当用户完成下单之后,用户可能要看一下自己曾经下过哪些订单,所以,订单系统还支持订单列表查询,如下图:

可以看到,用户可以向外卖订单系统,发起一个查询订单列表的请求,请求同样先转发到Controller组件上,因为是查询订单列表的信息,所以我们只需要传递查询的b2b信息网参数即可。

然后,Controller组件会把请求参数,通过Service组件传到Repository组件上,然后Repository组件可以调用Mapper组件的接口,再到数据库中查询用户的所有订单信息,查询结果最后会形成一个订单列表,最后一步步返回给用户。

最终,用户就可以从订单列表中,看到自己下过的所有订单信息了。

用户查看订单详情流程

如果用户还想要看下某个订单里面的详细信息,此时业务流程图如下所示:

可以看到,查询订单明细请求会先转发到Controller组件上,然后Controller组件把请求交给Service组件处理。

随后,Service组件携带着订单号,将查询订单明细的请求交给Repository组件来查询,Repository组件根据订单号调用Mapper组件的接口,接口会到数据库中查询订单及订单明细的信息,最后将查询出来的订单明细信息返回给用户。

用户取消订单流程

另外,用户下单之后也是支持取消订单的,当用户要取消一个订单时,也会发送一个取消订单的请求,如下图:

如所有请求一样,取消订单的请求首先发送给Controller组件,Controller组件会将请求交给Service组件处理,Service组件会把需要取消订单的订单号发送给Repository组件,Repository组件拿着订单号调用Mapper组件中的接口,更新订单将订单取消掉。

现在,外卖订单系统中,C端也就是用户端的一些操作我们已经了解了,而B端也就是商家的功能,和用户端的功能是比较类似的。

商家也会查看订单列表以及订单的明细信息,而且,当用户下单之后,商家可以选择接单或者拒接,一旦商家选择接单,那么订单状态就会变为“已接单”,这些功能在我们的外卖订单系统中都是支持的。

结束语

最后,在这个wiki中不仅有一堆的流程图,还有订单系统代码仓库的Git地址,然后你将代码拉到本地,接着,你一边看着这些wiki中的业务流程图,一边慢慢开始熟悉起来了代码......

(责任编辑:系统运维)

    图解演示环境版本:本机系统: WIN7虚拟机:VMware Workstation 8 (英文版)安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像文件详细过程图解:0. 初始画面,点击“Create a New Virtual Machine”(左上Ubuntu为本人已有开发环境机,请忽略)1. 点击“Custom(自定义)”2. 无需选择,直接Next(上面是选Workstation版本的兼容性的,这里默认为当前版本8.0,之前版本的不同在于Limitations(局限),如内存更少,不支持HD Audio等)3. 选择“I will install the operating system later”这里无严格要求的同学,是可以选择第二项“Installer disc image file (ios)”的,之后会VMware会自动得知你的iso是Linux(Ubuntu),只要求你输入Full name,和用户名密码等简单的用户设定,但是这是一个Easy install,如VMware原文所说“When the New Virtual Wizard detects an operating system that supports Easy Install, the wizard prompts you for information about the guest operating system. After the virtual machine is created, the guest operating system installation is automated and VMware Tools is installed.” 我觉得是因为这个OS的自动安装,不完全,导致一些核心命令无法使用、无反应等一些问题。所以有更高要求的同学,不能选这项,需要完全、自定义的安装。4. 在Version下选择“Ubuntu”,注:64位Ubuntu需要选下面那个“Ubuntu 64-bit”5. 设置虚拟机名称(即每次启动VMware左上方显示的名字),之后选择你想的在WIN7里的安装路径(默认在C盘,很不方便)。6. Number of processors(处理器个数)选择为2我是i7处理器,配置较好无压力的,感觉双核比单核好一些(假如没用VMware不会这么设计,但是对于更多的,没必要),下面那个应该没必要选,有非常懂的同学,请留言赐教。7. 内存大小选择,使用自动推荐的1G内存(本机内存8G)。同学们在虚拟机里,应该不会跑什么惊天地泣鬼神的大程序,内存大不等于快,而是更多的数据放在内存里而非硬盘里,对于内存消耗大的程序、系统会变快。去年做本科毕设的时候,调整过虚拟机的内存从1G为2G,结果竟然变慢了,应该是外面WIN7被占用了的问题。8. Network Type网络类型选择,本次选择默认的“NAT”注:这里有一点本人经历的非常重要需要说明,使用“NAT”的话,需要外面的WIN7使用一根线连接上网,才能在Ubuntu里上网(如同Ubuntu是你的真正OS的感觉,不需要手工配置任何IP信息),不能默认使用无线连接。这点对有些笔记本同学可能会造成麻烦。当然不是说不能通过手动配置IP相关解决,但是为了避免每次都配置的麻烦,请直接使用“bridged”桥接手动配置。9. 默认即可,直接“Next”10. 默认即可,直接“Next”第三项为直接划分硬盘给该虚拟机使用,意思应为绕过WIN7的那个文件夹管理,直接给虚拟机只用一块硬盘空间,有高级需要的同学可以选择。所以,注:默认的那个可以轻松实现copy,move,当你想拷给另外一个人,或者换机器的时候。11. 磁盘选择,默认即可,直接“Next”12. 选择“Store virtual disk as a single file”上面那个方框,是说现在就立即分20G给这个虚拟机,假如不够,还是会一点一点随着你的使用增加(跟不选一样)。假如同时没有很多个虚拟机装在WIN7上,或者硬盘空间太大又不放东西,可选。13. 虚拟机文件的存放地址,选个D盘的位置就行了。14. 点击“Finish”,完成了虚拟机的配置工作这里点击“Customize Hardware”的话,有机会对前面不满意的虚拟机硬件设置(处理器个数,内存大小等)重新设置,所以前面不满意的同学,不用点cancel重来,实际上在以后的使用过程,也是可以随时改变虚拟机的配置的,这点不用担心。15. 完成后,可以看到左上角多出了“Ubuntu 12.04”,先别急着Power on,还没装ubuntu呢。。。点击“Edit virtual machine settings”16. 在弹出的settings里,点击“CD/DVD(IDE)”,然后在右侧点击“Use ISO image file”,再选择你开始下载好的Ubuntu 12.04的iso镜像文件的路径然后点“OK”。17. 启动虚拟机,即点击step 15里的“Power on this virtual machine”,之后Ubuntu 12.04开始了安装,先选择语言,然后点击“Install Ubuntu”18. 假如选择“Download updates while installing”为安装过程直接安装最近的更新,假如选择“Install this third-party software”为安装第三方软件19. 选择“Something else”,将要对虚拟机的20G硬盘做手动分区20. 点击“New Partation Table”(新建分区表)21. 在弹出的对话框里,选择“Contunie”22. 选中新出现的“free space”(空闲空间),点击“Add”23. 注意下图中的“Primary”,“Beginning”, “Ext4 ...”均为默认,不需要修改;数字为大小,以MB为单位(注:不用追求1024凑整,硬盘实际上是凑不整的。。。),这里选择10000=10G;最后的“Mount point(挂载点)”下拉列表中,选中“/”,完成该步,点“OK”注意:“/ ” 建议大小在5GB以上。(根据关于“Ubuntu手动分区”的多个相关文章一致得来)非常注意:本人上次弄了个6G,结果进去下libraries,一下就满了,那叫一个悲剧!所以,同学们千万别抱着“5G以上”来想,ubuntu应该自己就占了4、5G,不想悲剧的同学至少8G以上吧,20G确实不大,但是假如打算长期的同学,应该不会使用虚拟机了,20G跑程序,绰绰有余,等喜欢了熟悉了,再来个真的吧。24. 再次选中“free space”(同step 22图中),点击“Add”;注意下图中“Logical”,“Beginning”均为默认,大小选择1000(1G);在Use as的下拉列表中选择“swap area”,注:最后的下拉列表为灰色,意为swap area不用选择挂载点;完成该步,点“OK”注意:“swap area” 即交换分区,建议大小是物理内存的1~2倍。(根据关于“Ubuntu手动分区”的多个相关文章一致得来)不需要太大,1G足以。25. 再次选中“free space”(同step 22图中),点击“Add”;注意下图中“Logical”,“Beginning”, “Ext4 ...”均为默认;注:大小选择也为默认,即所有的剩余空间;最后的“Mount point”下拉列表中,选中“/home”;完成该步,点“OK”注意:“/home” 存放普通用户的数据,是普通用户的宿主目录,建议大小为剩下的空间。(根据关于“Ubuntu手动分区”的多个相关文章一致得来)注:三个分区的顺序不要变,因为/home在最后便于默认选择“剩余的空间”,避免手工分配。26. 至此,所有分区工作已经完成,如下图所示。注:假如不满意可以点击“Revert(还原)”来重新分区,直到满意和准确无误为止。假如感到满意,点击“Install Now”注:上图为悲剧图,6G的/是不够的,这个图没有更新,仅供参考,不比看数字。27. 选择你所在的时区,自动调整时间,夏令时什么的手动调不方便,之后都点击“Continue”以继续28. 键盘选择US,一般国内买的电脑都是这样的,可根据情况自己选择29. Ubuntu的个人设置,根据自己需要填写用户名密码等30. 最后安装完成,点击“Restart Now”重启Ubuntu即可31. 停止在如下画面,按“回车”即可至此,全部安装过程完毕,我们可以进入到Ubuntu 12.04的桌面工作了。一定要注意:由于未使用自动安装,所以现在我们的虚拟机不含有VM Tools,导致无法全屏虚拟机等等问题,需要安装VM tools,详情请搜索即可。电脑内存错误警告(保障电脑运行稳定,避免内存错误警告)
    相关内容
    精彩推荐
    热门点击
    友情链接