微服务项目-Pig-分析
微服务项目-Pig-分析
目录
[toc]
单体架构与微服务
复杂的单体结构应用拆分成微服务
单体架构 | 应用程序的所有组件都组合在一起。(用户界面,业务逻辑,数据访问)对系统任何部分的更改通常也需要对其他部分进行修改。 在小型项目中优势大: 简单且易于部署。在大型复杂项目中存在一些管理上的劣势。 | 可维护性:随着时间,管理和维护架构变得越来越具有挑战性; 可扩展性:扩展的是整个应用而不是单个组件; 可容错性:其中的组件出现问题会影响整体的服务; |
---|---|---|
微服务架构 | 微服务架构是一种软件开发方法,它将应用程序划分为小型、独立的服务。 | 独立开发、部署、扩展而不影响其他服务; 每个服务都专注于特定的业务功能,并通过 API 或消息传递系统与其他服务进行通信。 |
单体 | 微服务 | |
---|---|---|
架构复杂性 | 更简单、更直接的架构。一切都是统一的,存在于同一个环境中,更容易管理和控制。 | 在处理大型且复杂的应用程序时成为优势,提供更好的灵活性和可扩展性。 |
可扩展性 | 扩展需要复制整个应用程序。占用大量资源且效率低下。 | 仅扩展指定的服务,更高效、更具成本效益的解决方案。支持水平扩展,允许随着业务的增长添加更多机器或资源。 |
开发与部署 | 每次更改或更新都需要完全重新部署应用程序。导致开发周期更长并增加部署失败的风险。 | 对单个服务进行更改或更新,实现更快、更可靠的部署、更短的开发周期并提高生产力。然而,微服务也使部署变得更加复杂,因为需要协调每个微服务的多个部署。 |
技术栈 | 统一的技术堆栈(单一团队) | 为不同服务使用不同技术堆栈的自由。(多技术栈团队) |
总结 :
单体和微服务是两种架构类型,各自有对应的优点和缺点。具体拆分还要以实际的项目评估是否达到了微服务级别,不恰当的拆分可能造成成本增加。
项目简介
- 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台, 同时支持微服务架构和单体架构
- 提供对 Spring Authorization Server 生产级实践,支持多种安全授权模式
- 提供对常见容器化方案支持 Kubernetes、Rancher2 、Kubesphere、EDAS、SAE 支持
来源:https://gitee.com/log4j/pig/blob/jdk17/README.md
官方文档:https://www.yuque.com/pig4cloud/pig/gg3ndm
前端-UI (pig-ui)
后端
核心依赖
依赖 | 版本 |
---|---|
Spring Boot | 3.2.4 |
Spring Cloud | 2023.0.1 |
Spring Cloud Alibaba | 2022.0.0.0 |
Spring Authorization Server | 1.2.4 |
Mybatis Plus | 3.5.6 |
Vue | 3.4 |
Element Plus | 2.6 |
模块说明
bash
pig-ui -- https://gitee.com/log4j/pig-ui
pig
├── pig-boot -- 单体模式启动器[9999]
├── pig-auth -- 授权服务提供[3000]
└── pig-common -- 系统公共模块
├── pig-common-bom -- 全局依赖管理控制
├── pig-common-core -- 公共工具类核心包
├── pig-common-datasource -- 动态数据源包
├── pig-common-log -- 日志服务
├── pig-common-oss -- 文件上传工具类
├── pig-common-mybatis -- mybatis 扩展封装
├── pig-common-seata -- 分布式事务
├── pig-common-security -- 安全工具类
├── pig-common-swagger -- 接口文档
├── pig-common-feign -- feign 扩展封装
└── pig-common-xss -- xss 安全封装
├── pig-register -- Nacos Server[8848]
├── pig-gateway -- Spring Cloud Gateway网关[9999]
└── pig-upms -- 通用用户权限管理模块
└── pig-upms-api -- 通用用户权限管理系统公共api模块
└── pig-upms-biz -- 通用用户权限管理系统业务处理模块[4000]
└── pig-visual
└── pig-monitor -- 服务监控 [5001]
├── pig-codegen -- 图形化代码生成 [5002]
└── pig-quartz -- 定时任务管理台 [5007]
代码库与分支
后端服务
代码库地址:https://gitee.com/log4j/pig 【使用JDK17分支】
- jdk17: java17/21 + springboot 3.2 + springcloud 2023
- master: java8 + springboot 2.7 + springcloud 2021
前端服务
代码库地址:https://gitee.com/log4j/pig-ui 【使用master分支】
编译构建
后端服务: JDK 17 、Apache maven
mvn clean package -pl 指定模块工程名 -am
aliyun镜像源: https://developer.aliyun.com/mirror/
前端服务:node-js-20
notsup Required: {"node":"^18.17.0 || >=20.5.0"}
https://nodejs.org/dist/v20.13.1/node-v20.13.1-linux-x64.tar.xz
npm install --registry=https://registry.npmmirror.com
启动运行
参考docker-compose文件