跳到主要内容

1、微服务项目-Pig-分析

微服务项目-Pig-分析

目录

[toc]

单体架构与微服务

img

复杂的单体结构应用拆分成微服务

单体架构应用程序的所有组件都组合在一起。(用户界面,业务逻辑,数据访问)对系统任何部分的更改通常也需要对其他部分进行修改。
在小型项目中优势大: 简单且易于部署。在大型复杂项目中存在一些管理上的劣势。
可维护性:随着时间,管理和维护架构变得越来越具有挑战性;
可扩展性:扩展的是整个应用而不是单个组件;
可容错性:其中的组件出现问题会影响整体的服务;
微服务架构微服务架构是一种软件开发方法,它将应用程序划分为小型、独立的服务。独立开发、部署、扩展而不影响其他服务;
每个服务都专注于特定的业务功能,并通过 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://pig4cloud.com/

官方文档:https://www.yuque.com/pig4cloud/pig/gg3ndm

img

前端-UI (pig-ui)

img

后端

img

img


核心依赖

依赖版本
Spring Boot3.2.4
Spring Cloud2023.0.1
Spring Cloud Alibaba2022.0.0.0
Spring Authorization Server1.2.4
Mybatis Plus3.5.6
Vue3.4
Element Plus2.6

模块说明

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

img

前端服务

代码库地址:https://gitee.com/log4j/pig-ui 【使用master分支】

img

编译构建

后端服务: JDK 17 、Apache maven

mvn clean package -pl 指定模块工程名 -am

aliyun镜像源: https://developer.aliyun.com/mirror/

JDK17: https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jdk/x64/linux/OpenJDK17U-jdk_x64_linux_hotspot_17.0.11_9.tar.gz

前端服务: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文件