当前位置: 首页 > 科技观察

分库分表实战订单业务完整回顾

时间:2023-03-13 13:00:43 科技观察

前言在上一期中,我们对目前分库分表实战项目中使用的系统架构有了一个整体的认识,即单库版本订单系统的系统架构。同时也知道了未来要做的分库分表版本的订单系统架构。下面,我们将从单库版的订单系统入手,逐步优化。想要优化单仓版订单系统,首先要了解当前订单系统的核心功能,核心功能的业务流程是怎样的。如果你刚加入这家初创互联网公司,而你所在的部门刚好在做外卖APP的订单系统,你觉得加入公司后首先要做的事情是什么?有必要了解整个订单系统。您的领导可能会直接向您发送wiki。本wiki包含单库版本的系统架构图,如下图所示:通过这个系统架构图,你可以知道整个订单系统目前有哪些内容。核心功能,使用了哪些技术栈。另外,在这个wiki中,除了系统架构图,还有很多核心接口的业务流程图。通过这些业务流程图,您可以快速了解订单系统核心界面的业务流程。订单系统中核心接口的业务流程图有哪些?现在,让我们来看看。用户的点餐过程或多或少都有点外卖。订单系统涉及到用户和商家两个角色的功能。我们先来看C端,也就是用户端的一些业务流程。首先是用户订单的操作。用户可以在外卖应用程序中订购外卖。当用户选择商品后,会提交订单,然后会发起创建订单的请求,如下图所示:可以看到,创建订单的请求首先会转发给Controller组件,而Controller组件则将请求交给Service组件处理。Service组件中会生成一个订单号,然后为新的订单组装订单信息和订单明细。随后,Service组件将组装好的订单信息传递给Repository组件进行处理,Repository组件最终通过Mapper组件将订单信息保存到数据库中。当然,用户正式下单后,还需要支付订单费用,但是支付相关的功能暂时不能关注这里。用户查询订单列表流程用户完成订单后,用户可能想查看自己下了哪些订单。因此,点餐系统也支持订单列表查询,如下图所示:可以看到,用户可以发起一个外卖订单系统。查询订单列表的请求也是先转发给Controller组件,因为是查询订单列表的信息,所以我们只需要传递查询参数即可。然后,Controller组件将请求参数通过Service组件传递给Repository组件,然后Repository组件可以调用Mapper组件的接口,进而在数据库中查询用户的所有订单信息。查询结果最终会形成一个订单列表。最后一步返回给用户。最后,用户可以从订单列表中看到自己下的所有订单信息。用户查看订单详情流程如果用户还想查看订单的详细信息,业务流程图如下:可以看到,查询订单详情的请求会先转发给Controller组件,然后Controller组件将请求转发给Service组件。随后,Service组件携带订单号,将查询订单详情的请求发送给Repository组件进行查询。Repository组件根据订单号调用Mapper组件的接口,该接口会在数据库中查询订单的信息和订单明细,最后将查询出来的订单明细返回给用户。用户取消订单流程另外,用户下单后,也支持取消订单。当用户要取消订单时,也会发送取消订单的请求,如下图:和所有请求一样,取消订单的请求首先发送给Controller组件,Controller组件会通过请求交给Service组件处理,Service组件将需要取消的订单号发送给Repository组件,Repository组件根据订单号调用Mapper组件中的接口,更新订单并取消命令。现在,在外卖订餐系统中,我们已经了解了C端,也就是用户端的一些操作,B端也就是商家的功能,类似用户端的功能。商家也会查看订单清单和订单详情。而且,用户下单后,商家可以选择接受或拒绝订单。一旦商户选择接受订单,订单状态将变为“订单已收到”。这些功能在我们的外卖订餐系统中是支持的。结语最后这个wiki里面不仅有一堆流程图,还有订单系统代码仓库的Git地址,然后你把代码拉到本地,然后一边看这些wiki里面的业务流程图,你开始慢慢熟悉代码……