面向服务的软件系统-大作业分享
面向服务大作业分享
整体框架

管理员端:前后端资源合并设计
客户手机端:前后端分离设计
数据库

介绍
1.mysql
目前设计了三条表
brand品牌
employee管理员工
good商品

tips1:
如果小组内都想同时开发共用同一个数据库,可以利用云服务器docker部署一个mysql,然后使用这个云服务器上的mysql
tips2:
想要实现数据库里面商品携带商品图片
可以将商品图片转化为url链接存入
然后mysql类型定义为varchar并且长度为2083
tips3唯一索引:
想要解决good的名称唯一可以直接利用mysql的唯一索引

这样就限制了存入数据库的name是唯一的
前后端代码:管理员模块
介绍:
1.采用常见的entity,mapper,service,controller层关系分类设计

2.登录功能

3.管理界面

4.添加员工,商品,品牌

前后端代码:客户手机端模块
介绍:采用的是单页面vue3设计
这里实现前后分离,基本利用vue实现逻辑
整体思路是通过mail_good暴露出来的接口获取到商品数据
然后根据获取到的数据进行页面展示

运维打包放入docker部署k8s模块
docker在虚拟机192.168.217.128配置好了
同时在本机windows也配置了docker
利用idea集成docker来打包
alt+8快捷键打开docker
docker build -t 944613709/mail-employee:3.0 .
docker build -t 944613709/mail-brand:3.0 .
docker build -t 944613709/mail-good:3.0 .
docker build -t 944613709/gateway:3.0 .
docker push 944613709/mail-employee:3.0
docker push 944613709/mail-brand:3.0
docker push 944613709/mail-good:3.0
docker push 944613709/gateway:3.0

sentinel
在云服务器要打开对应的防火墙端口
不然访问不到
后端跨域问题
后端跨域由springcloud组件解决了
SpringCloudApiGateway之支持Cors跨域请求
配置代理可解决使用Axios不能直接进行跨域的问题。
手机端购物车
后端在给定一个接口
localhost:8082/good/list

k8s使用kubesphere
1.直接利用kubesphere进行k8s部署以及管理,这里图形化操作做得比原生的操作界面好
2,在模拟了实际公司开发中,模拟本程序是有wuhan企业空间

3.在wuhan企业空间就有本次项目
QA
遇上的问题1:阿里云经常重启之后失效
发现阿里云重启需要十多分钟
Q2:kubesphere经常忘记密码
直接用命令改密码
kubectl patch users admin -p ‘{“spec”:{“password”:”123456”}}’ –type=’merge’ && kubectl annotate users admin iam.kubesphere.io/password-encrypted-
Q3:前端的手机端跨域问题
由于手机端是localhost3000
所以访问localhost8082时候有cors警告跨域问题
使用前端axios代理服务器解决跨域问题失败
前端要访问localhost10010通过网关解决跨域问题
通过后端springcloud nacos解决了前端跨域问题

A在dev时候利用apifox暂时跳过
Q4:怎么在goods存入对应图片
数据库插入img网址
mysql的img应该设置类型varchar,长度设置为2083
否则会发生过长警告
Q4:虚拟机ifconfig没有出来ip地址
nat切换桥联再切换回nat
gateway网关的使用
http://localhost:10010/backend/index.html
改为访问这个网站
localhost和127.0.0.1虽然都指向本机,但也属于跨域
图片的存放
存放在resource通过浏览器可以直接访问到
resourece/images/goods
短信登录服务

直接用aliyun给出的api

vue可视化推荐
https://vform666.com/vform3.html?from=element_plus



合适的vant组件,已经给定了type=tel自动检验是否为手机号
vue动态引入依赖
https://element-plus.gitee.io/zh-CN/guide/quickstart.html#按需导入

自动引入vant和element plus依赖
非常好用

小心bug

短信登录
watch实现步骤美化

k8s安装jenkins
1.在csdn找非官方教程吃了很多亏
2.我最后在官网教程一下子就搞好了yyds
https://www.jenkins.io/doc/book/installing/kubernetes/
后端接口导出至postman
直接利用easyAPi

部署对接出现问题

管理端前端跨域问题,其实没解决
当时我用了临时解决措施:
就是前端没有跨域,借助了同一个端口的后端接口,后端接口再去调用feign来跨过端口调用真正的后端访存数据库接口
安装nacos
因为安装nacos比较麻烦还需要依赖mysql数据库
官网失败
kubesphere失败
最后用的helm安装一键完成

loginMessage模块不需要连接数据库,但是springboot的druid依赖默认要求连接数据库


由于Springboot我加了druid依赖
最后选择加入
1 |
|
新增手机客户端后,前端设计要求数据库中的表额外多出good_count,goods_state,且要求某些数据的类型作出调整
因为当时已经完成了管理员端的前后端部分,最后认定不应该再去调整数据库,否则前面的也都得改动
于是只在手机客户端中根据传入的数据,自行作出调整,(新增数据属性,修改数据类型)

由于axios的异步调用,created和mounted无法使用async
于是采用了换函数执行位置

服务器内存问题,导致服务器爆炸
在同时部署了多个pods之后,内存又不够了,导致我服务器已经卡死,ssh命令都特别慢