- B站UP账号:后端研发Marion
- 今日头条账号:后端研发Marion
- CSDN账号:后台研发Marion
- 微信公众号:【后端研发Marion】加微信进JAVA技术交流群
微信公众号 | 微信群(备注:加群) |
---|---|
微服务模版框架
一、目标 1. 作为传统单体服务改造成微服务架构的模板项目 2. 参考目前主流的模板项目开发 3. 技术栈全面可插拔式引入网关、RPC、服务注册发现、链路追踪、ELK、监控告警、定时任务等 4. 多模块开发,领域驱动设计、设计模式 二、技术选型 1. 开发语言:JAVA / JDK11 2. 数据库:MySQL | Redis | ElasticSearch 3. 开发框架:SpringBoot 4. 开发工具:Gradle/Maven私服 5. 项目部署:Docker/Jinkens/K8s 6. 开源组件:SpringCloud Gateway | OpenFeign | Nacos | Apollo | Sentinel | Sleuth + Zipkin | ELK | XXL-Job | Kafka 7. 性能压测:Jemter | 全链路压测 三、项目结构 技术栈-
- maven
-
- gitee
-
父模块定义
-
- 子模块定义
-
- 公用依赖和版本控制
-
- springboot版本
- 2.2.2.RELEASE
-
- lombok版本
- 1.8.22
-
- mysql驱动版本
- 8.0.21
-
- JPA版本或者Mybatis-Plus
- JPA-2.2.2.RELEASE
-
- redis版本
- 2.2.2.RELEASE
-
- spring-cloud版本
- Hoxton.SR1
-
- nacos注册中心版本
- 2.2.1.RELEASE
-
- nacos配置中心版本
- 2.2.1.RELEASE
-
- 微服务端口定义
-
- gatway:10000
-
- amin: 10010
-
- app: 10020
-
- web: 10030
-
-
- 公用模块-common
-
- 目的
- 管理每一个微服务公用的依赖、工具类、错误类、常量、验证错误,方便定位错误项目以及减少工具类的复制粘贴,微服务之间的RPC接口
-
- 依赖
-
- 父子模块依赖如何定义
-
- 父模块定义统一版本,子模块不需要声明版本
-
- 子模块定义
-
- 定义微服务公用的依赖
-
- 子目录
-
- RPC接口
-
- 工具类
-
- 错误类
-
- RPC接口类
-
- 优缺点
-
- 优点:统一管理
-
- 缺点:修改需要更新版本
-
- 核心模块-core
-
- 目的
-
- 参考Spring-Core设计思路,IO *** 作、反射 *** 作
-
- 只有部分微服务项目依赖
-
- 子目录
-
核心工具类
-
- 分布式ID
-
- 加解密算法
-
- Jwt令牌
-
-
- 优缺点
-
- 优点:代码复用
-
- 缺点:新增需要发包,其他包可能不需要
-
- 网关模块-gateway
-
- 目的
-
- 鉴权、限流、负载均衡、统一入口、服务注册发现
-
- 技术选型-SpringCloud Gateway
-
- 问题
-
- 启动依赖报错问题,解决不兼容问题
-
-
依赖说明
Hoxton.SR1 2.2.2.RELEASE
-
-
- 集成nacos注册中心与配置中心
-
- 注册中心
-
- 添加依赖
-
- 在 application.properties 中配置 Nacos server 的地址
- server.port=8070
- spring.application.name=service-provider
- spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
-
- 通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能
-
- 配置中心
-
web和webflux不能一起使用
-
- 添加依赖
-
- 配置nacos sever地址
-
- 定义配置名称
-
- @RefreshScope实现配置自动更新
-
- 测试配置是否生效
-
- 定义controller
-
- curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true”
-
- 定义环境local/dev/prod
-
- 测试路由转发
-
- 转发报错:java.lang.NoClassDefFoundError: reactor/util/retry/Retry
- Hoxton.SR1和2.2.2
-
- 定义路由转发规则
-
- /admin -> marion-micro-admin
-
- 后台管理-admin
-
- 目的
-
- 前后端分离的后台管理项目Vue开发
-
- 依赖说明
- 3. 定义数据库连接和接口
- 4. 引入common模块和core模块,取消多余模块
-
- App接口-app
-
- 目的
-
- 提供给APP端接口
-
- 该模块可以拆分成多个微服务模块替换-api
-
- 依赖说明
-
- Web接口-web
-
- 目的
-
- 提供给Web端接口
-
- 依赖说明
-
- 公用模块
-
- 短信模块-sms
-
- 搜索模块-search
-
- 公用三方服务-third-party
-
- 新建springboot多模块项目,定义父子模块
-
- 接入OpenFeign负载均衡
-
- web请求admin
-
rpc请求错误:Could not extract response
-
- 加入依赖
-
- @EnableFeignClients
-
- 返回String成功
-
- 请求测试
- curl http://localhost:10030/rpc/user
- curl http://localhost:10030/rpc/user/vo
-
- 测试服务注册发现
-
- 赋值一个admin启动10011
-
- 停止10011
-
- 接入降级
-
- 接入Redis
-
- 测试Redis
- curl http://localhost:10030/redis/set?key=user&val=1
- curl http://localhost:10030/redis/get?key=user
-
- 接入链路追踪
-
- 加入依赖
-
- 启动zipkin
-
- 配置yml
-
- 定义日志
-
- 持久化到MySQL
-
- 接入Kafka消息中间件
-
- 接入ELK,做日志系统
-
- 接入Prometheus+Grafana监控告警
-
- 接入xxl-job分布式定时任务框架
-
- @RestControllerAdvice
-
- SpringBoot全局异常,返回JSON数据
-
- @ExceptionHandler
-
- 定义错误类ResponseException
-
- 自定义异常extends RuntimeException
-
- 定义400错误返回,200正常返回
-
- Junit5单元测试和MockMvc测试接口
-
- SpringBoot 测试及 MockMvc的使用
-
【CSDN】java集成Swagger的详细步骤
-
总结错误 No mapping for GET /swagger-ui.html
-
什么是swagger,一篇带你入门
-
【CSDN】springboot配置多个线程池
-
SpringBoot 线程池 配置使用
-
- @EnableAsync
-
- 创建ThreadPoolTaskExecutor
-
- 线程池调优
-
【github】Druid Spring Boot Starter
-
maven配置阿里云镜像的两种方式
-
druid监控配置
-
【CSDN】Springboot整合kafka
-
- kafka启动命令
- zookeeper-server-start -daemon /opt/homebrew/etc/kafka/zookeeper.properties & kafka-server-start /opt/homebrew/etc/kafka/server.properties
-
- kafka控制台创建topic
-
kafka 命令行命令大全
-
- 查看topic
- kafka-topics --bootstrap-server :9092 topic --list
-
- 创建topic
- kafka-topics --bootstrap-server :9092 --create --replication-factor 1 --partitions 1 --topic demo
-
- 删除topic
-
- 参考文档
- sentinel
-
- *** 作流程
-
- 启动sentinel命令:
- nohup java -server -Xms64m -Xmx256m -Dserver.port=8849 -Dcsp.sentinel.dashboard.server=localhost:8849 -Dproject.name=sentinel-dashboard -jar /opt/www/spring-cloud-alibaba/sentinel-dashboard/sentinel-dashboard-1.8.0.jar &
-
- 引入pom
-
- yml配置
-
- 控制台对接口限流测试
-
- 限流规则持久化
-
- 参考资料
-
XXL-JOB中文文档
-
XXL-JOB的使用(详细教程)
-
- *** 作流程
-
- 下载源码
-
- 创建数据库
-
- 启动后台
-
- http://localhost:8000/xxl-job-admin/toLogin
-
- 启动执行器
-
- 子模块不能加
-
- clean and package
-
- 运行测试
-
- 发布到私服
- 2.发布到Gitee
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)