该项目主要聚焦于初级程序员技术start up,新手学习,并且采用个人认为不错的技术栈来编写一套高可用的CMS 基于 Spring Boot/Spring Cloud 前后端分离的分布式微服务架构,并使用Kubernetes进行容器编排,弹性伸缩,实现高可用的微服务集群。目标代码不重复(DRY),关注点分离(Soc),无状态(stateless)
-
为了为此项目建立可行的生产环境,对技术架构有一些要求。其中大多数在其他项目中也经常需要。
-
后端采用Spring Boot、Spring Cloud,技术语言使用Kotlin/Java 21
-
无注册中心、配置中心,使用Kubernetes的Service、ConfigMap、Secret等资源来实现服务注册、配置中心、服务发现等功能
-
日志追踪使用OpenTelemetry + Jaeger,使用ELK(Elasticsearch、Logstash、Kibana)做日志存储
-
Metrics: 传入 HTTP 请求率、请求处理时间、错误率、每个 HTTP 状态代码的响应数量、运行状况、内存使用情况可视化使用OpenTelemetry + Prometheus + Grafana。
-
使用响应式编程(Reactive Programming)
-
依赖包管理使用Gradle,并且使用libs.versions.toml来做版本管理
-
支持Oauth2登录(Microsoft,Google),JWT 用作无状态授权,权限认证视需求用db或redis实现
-
使用Flyway做数据库迁移,数据库使用Mysql
-
使用kafka做消息推送服务
-
环境搭建
-
docker compose 运行环境搭建
-
kubernetes 运行环境搭建
-
-
基础架构搭建
- 引入Gradle
- Spring Cloud
- Dockerfile
- 引入SpringCloud gateway
- 建user等模块
- 引入ORM(Jooq)
- OpenFeign
- 引入MySQL/PostgreSQL/MongoDB
- 引入Oauth2,Adfs等login方式,权限认证
- 服务间追踪和指标
- 基本定时任务实现和分布式锁
-
测试
- 单元测试
- 集成测试
- 端到端测试
- 并发测试
- 压力测试
- 负载测试
-
文档
- Spring Doc