原有“饿了吧”项目单体结构微服务化,是原仓库针对“架构驱动的软件开发实践”的分支,主仓库位于 https://gitee.com/dai-mingjing/frontend-comprehension.git
-
/cloud几乎可以直接用于云部署的配置文件和镜像包,具体说明见下面的部署 -
/elm_bk原单体项目后端 -
/elm_cloud微服务后的后端,每个服务是一个模块,还存在公共模块 -
/elmclient适用于微服务项目的前端,适用于单体的前端请看原仓库 -
/documents一些文档,还有一些更为详细的说明在description.md,带*标记的内容只是特定时期的记录
新添技术栈
-
spring cloud
-
gateway
-
nacos
-
openfeign
-
sentinel
-
服务治理一系列
使用的服务/中间件
-
redis
-
mysql
-
rabbitmq
-
nacos
-
sentinel
-
jagger (忘记怎么拼了。。)
-
nginx
-
。。。
主要描述后端不一样的地方,其他细节参照单体时的部署
所有配置文件存放在/cloud/application/下,其中/common下的文件用于不带nacos配置管理的镜像使用,/shared下的文件用于带配置管理的镜像使用(镜像tar包名带2);/nacos下的配置文件为nacos配置中心的文件
所有镜像存放在/cloud/images/下,目录名意义同配置文件目录
每个服务模块目录下的Dockerfile为带配置管理的镜像构建配置,Dockerfile-com为不带配置管理的
步骤
定义各个服务的前缀为order、food等,路由为gateway
1.上传镜像至服务器 (带/不带配置管理)
若自己构建镜像,则cd的对应服务模块的目录下,一般不带配置管理的镜像版本是1.0.0,带配置管理的镜像版本是2.0.0 (当然看你构建的实际情况)
# 构建镜像
docker build -t elm-micro-<服务前缀> .
# 打包镜像
docker save elm-micro-<服务前缀> -o elm-micro-<服务前缀>.tar2.加载镜像
docker load -i <镜像包tar在服务器上的路径>3.创建并运行容器
-
一般创建一个专门存放这个项目的目录
/elm-micro -
在这个目录下创建各个服务专属目录如
/order-service等,路由为/gateway -
在对应目录上传配置文件以及jar包,带配置管理的需要上传相应的
application.yml以及bootstrap,如果是直接使用的/cloud/application中的文件需要去掉文件名的服务前缀;然后jar包需要改名为elm-<服务前缀>-app.jar -
然后对于不支持共享配置的application.yml中会有一些参数
client-ip需要改成所部署的服务器ip,对于共享配置的application.yml则是elm.nacos.server需要改 -
创建并运行容器
如notification-service,容器名一般为
elm-<服务前缀>-app,注意有些服务的配置(可看配置文件)如果存在sentinel等服务治理相关的可能需要映射更多的端口,还是注意要与配置文件一致# 带配置管理 docker run -d --name elm-notification-app \ -p 8884:8884 \ -v $(pwd)/elm-notification-app.jar:/elm-notification-app.jar \ -v $(pwd)/application.yml:/application.yml \ -v $(pwd)/bootstrap.yml:/bootstrap.yml \ elm-micro-notification:2.0.0 # 不带配置管理 docker run -d --name elm-notification-app \ -p 8884:8884 \ -v $(pwd)/elm-notification-app.jar:/elm-notification-app.jar \ -v $(pwd)/application.yml:/application.yml \ elm-micro-notification:1.0.0
还有一些命令,详细的自己查:
# 重启服务
docker restart <容器名>
# 查看容器日志
docker logs -f <容器名> --tail 200一些可访问路径 (路径后跟的是必要的账户密码)
项目访问:http://bobchasm.cn/
nacos:http://bobchasm:8848/nacos nacos 123456
rabbit:http://bobchasm.cn:15672 rabbit rabbit
接口文档:域名+各个服务的端口 (配置文件中有写)
一些测试账户可以直接登录
普通用户:
- username: bob_user
- password: Bobuser123
商家用户:
- username: bob_business
- password: Bobbusiness123
管理员:
- username: bob_admin
- password: Bobadmin123
如有问题或建议,请通过以下方式联系:
后端代码存放目录 /elm_bk
若自己部署请注意:
以下部署说明主要针对win系统,Linux系统部署方法命令行操作类似
可参考 从0开始在linux服务器上部署SpringBoot和Vue_vue项目linux部署-CSDN博客
- 本项目在版本
4eeb319c5eb4eccae252fffdf04004a9eb6daf05 (积分系统开始)后使用了redis、rabbitmq,当前设置均为服务器的配置信息,如需使用自己本地的中间件,请在本地启动相关服务并修改配置文件
技术栈
-
SpringBoot
-
Maven
-
Mybatis
-
redis
-
rabbitmq
JDK 17
SpringBoot 3.4.6
Mybatis 3.0.4
MySQL版本信息:
Source Server : localhost
Source Server Type : MySQL
Source Server Version : 80040 (8.0.40)
Source Host : localhost:3306
Source Schema : elm_v2
Target Server Type : MySQL
Target Server Version : 80040 (8.0.40)
File Encoding : 65001
-
配后端置文件
/elm_bk/src/main/resources/application.yml可修改配置:数据库、redis、rabbitmq,若您想尝试使用这些本地服务
-
数据库
使用本地数据库服务时,请新建一个名为 elm_v2 的数据库,并运行以下路径中的建表语句:
/elm_bk/sql/elm_v2.sql