项目源码:https://github.com/liuwen766/OrderSystem.git
项目流程:需求分析、总体设计、详细设计、编码、测试、交付、验收、维护
项目技术栈:SpringCloud、SpringBoot、MyBatis、LayUI、thymeleaf
项目简要说明:使用微服务(SpringCloud)搭建的一个简易外卖订单系统。
写在前面:为什么要用微服务?
单体应⽤用存在的问题
1.随着业务的发展,开发变得越来越复杂。
2.修改、新增某个功能,需要对整个系统进行测试、重新部署。
3.一个模块出现问题,很可能导致整个系统崩溃。
4.多个开发团队同时对数据进行管理,容易产生安全漏洞。
5.各个模块使⽤用同一种技术进行开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很
大。
6.模块内容过于复杂,如果员工离职,可能需要很长时间才能完成工作交接。
因此有些大型项目可能需要用到分布式微服务(spring cloud)
分布式服务:就是将一个复杂问题拆分成若干个简单的小问题,将一个大型的项目架构拆分成若干个微服务来协同完成(软件设计层⾯面)。将一个庞大的工作拆分成若干个小步骤,分别由不同的人完成这些小步骤,最终将所有的结果进行整合实现大的需求。
分布式服务治理的核心由三部分组成:服务提供者、服务消费者、注册中心。
在分布式系统架构中,每个微服务在启动时,将自己的信息存储在注册中心,叫做服务注册。服务消费者从注册中心获取服务提供者的网络信息,通过该信息调用服务,叫做服务发现。
需求分析
项目详细说明:首先来了解项目需求。本项目分为客户端和后台管理系统两个界面,客户端针对普通用户,功能包括用户登陆、用户退出、菜品订购、我的订单。后台管理系统针对管理员,功能包括管理员登陆、管理员退出、添加菜品、查询菜品、修改菜品、删除菜品、订单处理、添加用户、查询用户、删除用户。
总体设计
设计系统架构设计,①首先分配出4个服务提供者,account、menu、order、user。
account 提供账户服务:用户和管理员登陆。
menu 提供菜品服务:添加菜品、查询菜品、修改菜品、删除菜品。
order 提供订单服务:添加订单、查询订单、删除订单、处理订单。
user 提供用户服务:添加用户、查询用户、删除用户。
②接下来分配出1个服务消费者,包括客户端的前端页面和后台接口、后台管理系统的前端页面和后台接口,用户/管理员直接访问的资源都保存在服务消费者中,然后服务消费者调用4个服务提供者对应的接口完成业务逻辑,并通过 feign 完成负载均衡。
详细设计
4个服务提供者和1个服务消费者都需要在注册中心完成注册,同时注册配置中心,提供远程配置信息读取,服务提供者和服务消费者的配置信息保存在 Git 远程仓库,由配置中心负责拉取,关系如下图所示。
本系统共有8个模块组成,包括注册中心,配置中心,Git 仓库配置信息,服务消费者,4个服务提供者。
项目构成:(七个微服务: EurekaServer ConfigServer Menu User Account Order Client)
注册中心 → 服务配置中心 → 服务提供者:菜单服务、用户服务、登录服务、订单服务 → 服务消费者:客户端服务
编码(测试、交付、验收、维护)
1.创建父工程,pom.xml
2.注册中心
3.配置中心
4.服务提供者 order menu account user
5.服务消费者 client
后期可以做的优化:
①如何并发实现多用户登录。登录验证码,自动登录(仿照qq自动登录)等,登录成功(session作用域记录用户登录状态),失败(request记录错误信息)。
②加购物车功能(仿照美团)。
③支付功能。
④会员满减功能。
⑤添加条件查询功能。