《面向服务的软件系统》大作业选题报告
大作业选题报告
课程:面向服务的软件系统
学 号 姓 名
成员: 120L021011 , 石卓凡
成员: 120L020926 , 苏泽楷
成员: 120L020205 , 艾永亮
1.选题
1.1作业题目
选题2: 基于微服务框架开发项目
1.2题目概述
基于微服务的网络购物云平台
背景介绍:
当今,网络经济模式越来越流行,其中电子商务是其中最重要的组成部分,是利用互联网技术与传统信息系统相连接的一种动态商务模式,它能将有价值的信息高效地传输给顾客、经销商等,并能通过网络将他们紧密地连接起来,形成新的产业链。成熟的互联网技术让订货、支付、售后等服务集成到电子商务中。互联网进入传统流通领域后,电子商务也流行起来,这意味着一种全新的购物理念的形成和发展。网络购物云平台是电子商务的前端商务平台,他在整个商务活动的过程中扮演着非常重要的角色。网上购物系统也是一种商业信息系统,它具有强大的交互功能,能向用户提供各种信息资源,能使商家和用户之间能方便地进行信息传递,方便快捷地完成电子贸易。随着互联网广泛的应用和发展使得网名数量激增,市场需求越来越大。网上购物方式日益为大家所接受。互联网的飞速发展,已经颠覆了传统的信息采集、传递和外观,对劳动者的劳动技能和工作效率的提高,提供了前所未有的有利条件和推进作用。个人经营,企业等的经济收入增长大多得益于互联网的推广和应用。网络购物云平台使市场的传统营销思路走向终结,新型的线上线下整合营销模式得到了企业和社会的广泛关注和认可。
网络购物平台分为管理端和客户端:
管理端:
该管理系统可以登录管理员账号,登录员工账号,管理员可以实现对某个电商交易平台的员工,商品,品牌分类等进行管理与查询。后台管理系统中的信息以便于客户手机端可以对电商商品进行下单。
针对开题报告的演示初步设计(如下图):
图1:管理端初步demo页面设计
客户端:
客户可以进行登录,登录方式比如手机登录或者微信登录,然后对商品进行选购下单
展示结果类似于美团外卖(如下图):
图2:客户端计划仿照的美团外卖app页面
实现方案
使用的技术知识
分工层面 | 预期应用到的技术 |
---|---|
前端 | H5,Vue,ElementUI |
后端 | Springboot,springcloud |
运维 | Docker,k8s,jenkins |
数据 | Mysql,redis,mybatis plus |
网络购物平台采用微服务基础,基于springcloud,解决服务与服务之间的解耦,利用h5,vue等作为前端
网络购物平台部署于k8s可以实现容器集群的故障迁移,资源调度等,服务器集群具有很强的可伸缩性。随着需求和负荷的增长,可以向集群系统添加更多的服务器。允许有多台服务器执行相同的应用和数据库操作。
网络购物平台利用了Jenkins实现持续、自动地构建/测试项目,监控软件开放流程,快速问题定位及处理,提高开发效率。
1.实现电商后台网络购物平台基本功能
2.1 Springboot+vue搭建网站,通过网站管理电商商品,数据库在云服务器上
初步需求:
管理端够对员工,商品,品牌分类进行管理与查询。后续可以根据实时需求添加对其余信息的管理
客户端能够进行购物下单,类似于简易版淘宝或者美团外卖。
设计方案:
在云服务器上运行mysql作为云数据库,数据库中含employee员工表,brand品牌表,good商品表;
图3.1:数据库表demo初步设计:
图3.2:数据库表demo初步设计:
本地Springboot+vue框架搭建分为:
(1).登录模块,设定admin管理员,以管理员身份登录index;
(2).index模块,由index模块可以进入员工管理,商品管理,品牌管理三个模块;
(3).员工管理,商品管理,品牌管理,每个模块对自己内容的管理都可以实现增删改查。
图4:管理端初步demo页面设计
(4)客户端模块,用于客户可以访问管理端存储的数据信息并且进行购物下单
2.从单体项目扩展为分布式项目
2.2 将上一个项目加入springcloud扩展为分布式微服务系统
初步需求:将单体项目变为多个微服务,需要有网关,服务注册中心等,有高并发性能
设计方案:
(1).加入Nacos注册服务中心
将之前的项目拆分成多个微服务,比如登录服务,员工管理服务,商品管理服务,品牌管理服务。微服务数据独立,不要访问其它微服务的数据库,微服务可以将自己的业务暴露为接口,供其它微服务调用。各个微服务之间的相互发现和互动都会通过nacos。
(2).加入feign远程调用
利用feign实现在各微服务之间发起远程调用;
在index模块利用feign进行远程调用员工管理服务,商品管理服务,品牌管理服务,实现数据库操作。
(3).加入gateWay网关
网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截,且实现跨域问题;
让员工管理服务,商品管理服务,品牌管理服务等一切请求都必须经过网关,并利用网关实现axios跨域请求问题。
(4).加入Sentinel实现流量控制
微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务;利用sentinel进行流量控制实时监控流量防止雪崩问题的出现。
3.项目部署上云
将项目利用docker进行打包
初步方案:可以利用docker命令打包生成镜像之后上传于dockerHub
部署环境:在本地虚拟机Ubuntu中安装配置docker环境,然后将项目打包发布于个人的docker Hub
- 将项目利用k8s部署到云服务器上,
初步方案:k8s读取dockerHub中的镜像,然后利用deployment部署pod,再利用service发布,并暴露端口供外网访问
部署环境:aliyun三台服务器使用centors系统,利用k8s实现1主2从,能够在云服务器上运行电商后台网络购物平台
4.项目实现自动化部署
将项目通过Jenkins实现CI/CD扩展能力
需求:JenKins实现CI/CD
初步方案:Jenkins服务器安装配置Jenkins,创建任务,配置gitlab仓库地址,测试CI/CD是否成功,即Jenkins能否将Git仓库项目成功编译测试并发布到Tomcat服务器上
3.成员与分工
第一阶段Springboot+vue
分工任务 | 成员 |
---|---|
数据库+后端 | 石卓凡 |
前端 | 艾永亮 |
第二阶段Springcloud
分工任务 | 成员 |
---|---|
数据库+后端 | 石卓凡 |
前端 | 艾永亮 |
第三阶段docker
分工任务 | 成员 |
---|---|
运维 | 石卓凡 |
运维 | 苏泽楷 |
运维 | 艾永亮 |
第四阶段k8s
分工任务 | 成员 |
---|---|
运维 | 石卓凡 |
运维 | 苏泽楷 |
运维 | 艾永亮 |
第五阶段Jenkins
分工任务 | 成员 |
---|---|
运维 | 苏泽楷 |
4.进度计划
1.前后端人员学习知识,Springboot+vue搭建网站通过网站管理电商商品
2022.10.10-2022.10.29
2.将上一个项目加入springcloud扩展为分布式微服务系统
2022.10.29-2022.11.12
3.运维人员学习知识,将项目利用docker进行打包
2022.11.12-2022.11.19
4.将项目利用k8s部署到云服务器上
2022.11.12-2022.11.26
5.运维人员学习知识,将项目通过Jenkins实现CI/CD扩展能力,直接部署在云服务器上
2022.11.26-2022.12.10
6.完善项目,对于项目中可能存在的问题和bug进行调试
2022.12.10-2022.12.20