个人技术分享

项目集介绍

在这里插入图片描述

父模块

SpringbootSeries

此模块中只有一个pom.xml文件,是后面所有模块的父模块,主要功能有两个:子模块管理和依赖管理。

类别 必选 可选
基础框架 jdk 17+
spring-boot-starter 3.2.4
spring-boot-starter-web 3.2.4
spring-cloud 2023.0.1
spring-cloud-alibaba 2023.0.1.0
数据库 mybatis-plus-spring-boot3-starter 3.5.6
druid-spring-boot-starter 1.2.22
mysql-connector-java 8.0.33
工具包 cn.hutool 5.8.27
org.projectlombok 1.18.30
org.mapstruct 1.5.5.Final
mapstruct-processor 1.5.5.Final
framework-commons 1.0-SNAPSHOT
日志 slf4j 2.0.12
logback 1.4.14
测试 spring-boot-starter-test 3.2.4
springdoc-openapi-starter-webmvc-ui 2.4.0
spring-boot-starter-actuator 3.2.4 : runtime
spring-boot-devtools 3.2.4

子模块

Framework子工程组

这个工程组中一共包含两个子模块,framework-commons可以单独引用, 其中framework-persistence依赖了framework-commons

  • framework-commons:springboot框架底层功能封装;
  • framework-commons:mybatis数据库操作相关底层功能封装;
  • framework-springboot-starter:开发自己的springboot starter;

SpringBoot子工程组

表格中,启动方法列中run jar表示运行模块下相应的SpringbootXxxxxApplication.java 文件,另外sh startup.sh -m standalone 是Nacos启动命令

功能说明 涉及模块和软件 启动方法
Springboot基础工程 springboot-base:18080 run jar
Springbootweb基础工程 springboot-web: 18081 run jar
Springboot常用功能 springboot-common-config:17000 run jar
Springboot集成mybatisplus springboot-mybatisplus:18086 run jar
Springboot集成redis springboot-redis:18087 consul agent -dev
brew services start redis
run jar
Springboot集成Kafka springboot-kafka:15002 consul agent -dev
brew services start zookeeper
brew services start kafka
run jar
发布Springboot应用服务Docker镜像 springboot-docker:19508 sh startup.sh -m standalone
mvn -clear package
docker build -t springbootapp:lecture .
docker run -it -d springbootapp:lecture /bin/bash
docker logs containerId

SpringCloud子工程组

表格中,启动方法列中run jar表示运行模块下相应的SpringbootXxxxxApplication.java 文件

功能说明 涉及模块和软件 启动方法
Consul 注册中心 springcloud-consul-server:18093 consul agent -dev
run jar
Consul配置中心 springcloud-consul-config:18087 consul agent -dev
run jar
Netflix-ribbon+Consul负载均衡 springcloud-consul-server :18093, 18094 provider服务提供者
springcloud-consul-client :18095 consumer服务消费者
consul agent -dev
run springcloud-consul-server
run springcloud-consul-client
Gateway+Consul服务网关 springcloud-api-gateway:19000,服务网关
springcloud-gateway-server:18096,被代理的应用
Consul agent -dev
run springcloud-api-gateway
run springcloud-gateway-server
Enreka注册中心 springcloud-eureka-server:18082,18083
springcloud-eureka-client:18084
springcloud-eureka-server-with-security:18085
run springcloud-eureka-server
run springcloud-eureka-client
Netflix-ribbon+Enreka负载均衡 springcloud-eureka-server :18082,注册中心
springcloud-ribbon-server:18091, 18092, provider服务提供者
springcloud-ribbon-client:18090, consumer服务消费者
run springcloud-eureka-server
run springcloud-ribbon-server
run springcloud-ribbon-client
SpringbootAdmin服务监控 springcloud-admin-server:19888,图形化配置中心
springcloud-client-server:19889,被管理的测试应用
consul agent -dev
run springcloud-gateway-server
run springcloud-client-server

Alibaba SpringCloud子工程组

表格中,启动方法列中run jar表示运行模块下相应的SpringbootXxxxxApplication.java 文件

功能说明 涉及模块和软件 启动方法
Nacos配置中心 alibaba-nacos-config:19500 sh startup.sh -m standalone
run jar
Nacos注册中心 alibaba-nacos-client:19503 sh startup.sh -m standalone
run jar
Nacos+OpenFeign负载均衡 alibaba-nacos-server:19501,19502 provide服务端
springboot-openFeign-client : 19506, consumer客户端
sh startup.sh -m standalone
run alibaba-nacos-server
run springboot-openFeign-client
Nacos+Sentinel服务治理 alibaba-sentinel-client:19504
alibaba-sentinel-server:19505
sh startup.sh -m standalone
sh sentinel
run alibaba-sentinel-server
run alibaba-sentinel-client
Nacos+Sentinel+OpenFeign服务降级 alibaba-sentinel-client:19503
alibaba-sentinel-server:19504
alibaba-sentinel-openFeign-client:19508
sh startup.sh -m standalone
sh sentinel
run jar
Nacos+dubbo实现RPC调用 alibaba-dubbo-api
alibaba-dubbo-provider:16000 provide服务端
alibaba-dubbo-consumer:16001 consumer客户端
sh startup.sh -m standalone
run jar

模块服务启动方法

java jdk最低版本17

因采用了父子结构,所以在本地运行相应模块的SpringbootXxxxApplication.java启动类之前,首先:

install 基础模块

  1. 先在springbootSeries模块(即最外层的父工程)中执行mvn install,把pom.xml缓存到本地maven缓存库中;
  2. 再依次在framework-commonsframework-persistence模块中执行mvn install,缓存通用jar包到本地maven缓存库中;
    在这里插入图片描述

如果不需要修改上述三个模块的源码,则在本地只需执行一次mvn install命令即可,需要注意的是以上三个模块的执行顺序不能弄错,先springbootSeries–>framework-commons–>framework-persistence

start 三方服务

  • 某些模块需要其它三方插件来辅助运行,现把启动方式罗列在些,以方便查找:
# 启动Nacos,访问地址:http://localhost:8848/nacos
sh startup.sh -m standalone  

# 启动Consul,访问地址:http://127.0.0.1:8500/
consul agent -dev

# 启动Redis
redis server

# 启动sentinel dashboard,访问地址 http://localhost:9999
java -Dserver.port=9999 -Dcsp.sentinel.dashboard.server=localhost:9999 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.7.jar

可以能用到的命令

  • HomeBrew服务启动
    • 安装的软件位置:/usr/local/Cellar/
    • 安装的软件配置文件位置:/usr/local/etc/
brew search softName
brew services start/stop/list
  • Linux后台启动nohup linuxCommand [> info.log] &,其中 nohup表示不挂断的运行, &表示后台运行
nohup python -u test.py > test.log 2>&1 &
# 1>&2 意思是把标准输出重定向到标准错误
# 2>&1 意思是把标准错误输出重定向到标准输出
# > filename 意思是把标准输出和标准错误输出都重定向到文件filename中

lsof -i :15001
ps -ef | grep java
kill -9 pid    
killall pid
cat resources/.yml application.yml #合并文件,但文件之间不会自动换行

run Springboot服务

一般只需要执行位于`com.korgs.SpringbootXxxxxApplication.java’路径下的SpringbootApplication启动类,即可运行相应模块服务。
在这里插入图片描述

模块服务测试方法

单模块测试

在这里笔者建议采用 Swagger3 来进行测试,因为 Swagger3 服务已事先集成到了framework-commons模块中,同时为了方便,在每个模块的SpringbootXxxxxApplication.
java类中都定义了一个名为 http://localhost:18080/helloworld 的测试Restful接口。Swagger-UI访问地址如下:

18080是应用开放的端口,通过application.properties文件的server.port=18080属性定义
在这里插入图片描述

集群模块测试

如果涉及多个springboot配置文件的模块,在Idea中可以在启动配置对话框中添加Springboot类型。

然后在配置界面勾选程序实参,最后配置–spring.profiles.active=serverBackup,以指定不同springboot的profile配置文件,serverBackup为自定义的springboot配置文件名称。
在这里插入图片描述