面向服务的软件系统-大作业分享

面向服务大作业分享

整体框架

管理员端:前后端资源合并设计

客户手机端:前后端分离设计

数据库

介绍

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
2
3
4
5
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
DruidDataSourceAutoConfigure.class ,
HibernateJpaAutoConfiguration.class})

新增手机客户端后,前端设计要求数据库中的表额外多出good_count,goods_state,且要求某些数据的类型作出调整

因为当时已经完成了管理员端的前后端部分,最后认定不应该再去调整数据库,否则前面的也都得改动

于是只在手机客户端中根据传入的数据,自行作出调整,(新增数据属性,修改数据类型)

由于axios的异步调用,created和mounted无法使用async

于是采用了换函数执行位置

服务器内存问题,导致服务器爆炸

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


面向服务的软件系统-大作业分享
http://yoursite.com/2023/04/21/面向服务大作业分享/
作者
Fars
发布于
2023年4月21日
许可协议