Skip to content

ThinkGem 出品必属精品 JeeSite Spring Cloud 是基于 Spring Cloud Finchley 的一个分布式系统套件的整合。特点:用经典开发模式,开发分布式应用,两个字【简单】,一个字【快】。

License

Notifications You must be signed in to change notification settings

thinkgem/jeesite-cloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JeeSite

微服务开发平台 - Spring Cloud 2025

SpringCloud-2025 or 2021 SpringBoot-V3.5 or 2.7 TypeScript-Vue3 JeeSite-V5.x star star star star


如果你喜欢 JeeSite,请给她一个 ⭐️ Star,您的支持将是我们前行的动力。

引言

JeeSite Cloud 具备 JeeSite 5.x 的所有功能,是在 JeeSite 5.x 基础之上,完成的 Spring Cloud 分布式系统套件的整合。它利用 JeeSite 5.x 的开发便利性巧妙地简化了分布式系统开发。

JeeSite Cloud 并没有重复制造轮子,它只是将目前比较成熟的、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,重新了设计架构和新增了很多实用的工具,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发平台。

集成阿里优秀组件 Nacos 服务治理与配置中心、集成 Sentinel 流量卫兵;集成 Zipkin 链路追踪;集成 Seata 分布式事务等,详见技术选型章节。

主要特点:用经典开发模式,开发分布式微服务应用,上手简单,开发快

什么场景下,需要用 JeeSite Cloud 微服务:

  • 微服务化的核心就是将传统的系统,根据业务进行拆分一个个的小服务,一个服务出现问题不会有影响其他服务的运行
  • 某一个服务并发要求比较高时,可单独增加该服务节点(如果传统应用,需要整体增加会浪费资源)提高服务可用性
  • 可直观的看到服务的运行状态,可统一配置各个微服务的配置参数,统一的基础数据管理(人员组织基础架构)

技术交流

JeeSite微信公众号

  • QQ 群:1275158762093304832235077187095342757303900921373527183903863(外包)
  • 微信群:如果无法进入,可添加客服微信 jeesitex 邀请您进群

JeeSite微信群

我们的优势

  1. 在 JeeSite 单应用基础之上,完成的 Cloud 功能,使用经典开发模式,就像开发单应用一样开发分布式应用
  2. 它提供了微服务模块的代码生成工具,快速生成开发微服务功能,包含微服务的发布和调用接口
  3. 我们将 api 和 client 合体为一个工程,自动适应自己调用自己 client 的影响,简化工程数量
  4. 解决 Feign 接口不能多重继承问题,如一些通用操作(增删改查)微服务接口基类实现,这些都不用自己写了
  5. 统一的授权认证、基础数据微服务,都已经提供查询 client 接口,其他微服务应用模块中可直接获取用户、组织、权限、字典等基础数据。微服务之间调用中,出现的会话及缓存的一致性统一得到解决。
  6. 如 UserUtils、EmpUtils、EmpUserService、OfficeService 等等众多的基础服务工具类,都可以直接从基础数据的微服务中获取数据,你不必考虑跨 web 服务的数据交互,我们已经帮你做了。
  7. 微服务组件 Nacos、Sentinel、Zipkin 源码方式启动部署,方便开发调试,无需单独在 IDE 外运行。
  8. 支持 Gateway 网关动态路由,用户可在不重启服务的情况,随时调整路由规则,高度灵活性管理。
  9. 使用 Seata AT 事务管理,入侵性小,跨 web 服务的情况、支持单个微服务独立数据库。
  10. 集成工作流,提供BPM引擎独立的服务,客户端只需调用API,无需加载复杂流程引擎。
  11. 支持两套前端技术选型实现,全栈版(Bootstrap+Beetl)、分离版(TS+Vue3+Antdv)。
  12. 其它优势(按 Ctrl + Shift 点击链接):http://jeesite.com/docs/feature/

技术选型

  • 分布式系统套件版本:Spring Cloud 2025.0 + Alibaba 2023.0
  • 服务治理注册与发现:Spring Cloud Eureka / Consul / Nacos 3.0
  • 分布式统一配置中心:Spring Cloud Config / Nacos 3.0
  • 网关路由代理调用:Spring Cloud Gateway (动态网关)
  • 声明式服务调用:Spring Cloud OpenFeign
  • 客户端负载均衡:Spring Cloud LoadBalancer
  • 阿里流量防卫兵:Sentinel 1.8 (限流、熔断降级、负载保护)
  • 分布式事务框架:Seata 2.3 (可选组件)
  • 分布式链路追踪:Zipkin / SkyWalking (可选组件)
  • 工作流引擎框架:Flowable 7.x (可选组件)
  • 多租户 Saas 架构:表共享、独立模式、独立库方式
  • ShardingSphere 分库分表、读写分离
  • Spring Boot Admin 系统监控管理
  • ELK 日志采集、日志分析和可视化
  • Spring Boot 3.x 版本:https://gitee.com/thinkgem/jeesite-cloud/tree/v5.springboot3.cloud
  • Spring Boot 2.x 版本:https://gitee.com/thinkgem/jeesite-cloud/tree/v5.springboot2.cloud

子项目介绍

  • 服务注册:jeesite-cloud-eureka : http://127.0.0.1:8970
  • 配置中心:jeesite-cloud-config : http://127.0.0.1:8971/project/default
  • 服务注册和配置中心 Nacos 版本(推荐) :http://127.0.0.1:8849/index.html#/login
  • 网关路由:jeesite-cloud-gateway : http://127.0.0.1:8980/js/a/login
  • 核心模块(统一授权认证服务、平台基础数据服务):
    • 核心主项目:jeesite-cloud-module-core : http://127.0.0.1:8981/js
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-core-client
  • 测试模块1(可选,单表增删改查示例):
    • 模块1主项目:jeesite-cloud-module-test1 : http://127.0.0.1:8982/js
    • 模块1客户端项目(提供其它模块调用):jeesite-cloud-module-test1-client
  • 测试模块2(可选,树表增删改查示例):
    • 模块2主项目:jeesite-cloud-module-test2 : http://127.0.0.1:8983/js
    • 模块2客户端项目(提供其它模块调用):jeesite-cloud-module-test2-client
  • 测试模块3(可选,代码生成的模块和代码生成的增删改查,该模块完全没有手写,全部为生成的):
    • 模块3主项目:jeesite-cloud-module-test3 : http://127.0.0.1:8985/js
    • 模块3客户端项目(提供其它模块调用):jeesite-cloud-module-test3-client
  • 业务流程基础服务(可选,流程引擎服务,客户端只需调用接口,无需加载引擎逻辑):
    • 流程主项目:jeesite-cloud-module-bpm : http://127.0.0.1:8990
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-bpm-client
  • 分布式事务 Seata 服务(可选,1.5之后新增监控界面,端口7091):
    • 服务主项目:jeesite-cloud-module-seata : http://127.0.0.1:7091
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-seata-client
  • 消息推送服务(可选,消息接受,消息推送,消息心跳):
  • 文件管理服务(可选,文件上传、文件预览、文件管理):
  • 扩展模块服务(可选,报表,大屏,APP,CMS,ES 等):
  • 熔断限流:jeesite-cloud-sentinel : http://127.0.0.1:9311
  • 链路追踪:jeesite-cloud-zipkin : http://127.0.0.1:9411
  • 解释:主项目为服务提供者、客户端项目为服务消费者

更多介绍

生态系统

快速运行

初始化数据库

JeeSite Cloud 版本的数据库与 JeeSite 单机版数据库相同,您可以 下载最新的mysql脚本(仅适应于社区版),推荐使用 init-data.bat(sh) 命令完成初始化(支持多种类型的数据库)

数据库初始化文档:http://jeesite.com/docs/install-deploy/#初始化数据库

安装 Redis 服务

Redis 是一个缓存数据库,主要用来集中式管理共享会话和系统缓存的,如果您已安装 Redis,可以忽略这个步骤。

由于 Windows 版本的 Redis 安装不太方便,所以我们提供了该版本的安装文件和安装脚本。

下载地址:https://gitee.com/thinkgem/jeesite-cloud/attach_files 找到 Redis-x64-4.0.2.2.zip 下载文件。

解压 Redis-x64-4.0.2.2.zip 压缩包,运行 service-install.bat 安装 Windows 系统服务。

默认地址:127.0.0.1;默认端口:6379;默认密码:1234,可根据自己需要修改 conf 文件。

启动 Nacos 服务

Nacos 致力于帮助您发现、配置和管理微服务。 Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

如果使用 Nacos 就不用部署 jeesite-cloud-eurekajeesite-cloud-config 了。

JeeSite Cloud 提供了 2 种部署方式,你可以 src 直接在 IDE 里启动,也可以下载 jar 运行:

src 方式:

  1. 在 IDEA 或 Eclipse 中 找到 jeesite-cloud-nacos 项目。
  2. 运行 NacosApplication 类的 main 方法,即可启动服务。

jar 方式:

  1. 下载地址:https://github.com/alibaba/nacos/releases/download/3.0.2/nacos-server-3.0.2.zip
  2. 解压 nacos-server-3.0.2.zip 压缩包,运行 /bin/startup.cmd(sh) 启动服务。

配置 mysql 存储:

  1. 按需配置,默认情况 Nacos 采用 Derby 数据库,您也可以将数据库切换到 MySQL 下。
  2. 找到 /nacos/src/main/resources/META-INF/mysql-schema.sql 文件导入数据表。
  3. 找到 Nacos 的配置文件(application.properties 或 application.yml)如下:
spring.sql.init.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=123456

::: tip 注意事项

生产环境,请务必修改 application.properties 配置文件中的秘钥:

# 身份认证秘钥,随便写
nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=
# 生成随机密钥,设置为 Base64 编码,参考命令:openssl rand -base64 32
nacos.core.auth.plugin.nacos.token.secret.key=

更多文档:https://nacos.io/docs/next/plugin/auth-plugin/

:::

启动完成后:

浏览器访问:

初始化用户名和密码均为:nacos

登录后,进入菜单 配置管理 -> 配置列表 点击 导入配置 按钮,选择 /config/src/main/resources/jeesite-cloud-yml.zip 上传文件。

然后编辑 Data Id 为 application.yml 的文件里的 JDBC 和 Redis 信息。

启动微服务项目

  • 在每个微服务中可以找的 application.yml 设置注册和配置服务地址
  • 启动网关和核心基础服务(运行 Application 启动类的main方法)
    • /jeesite-cloud-gateway/../GatewayApplication.java
    • /jeesite-cloud-module-core/../CoreApplication.java
  • 因为服务有直接依赖,请启动完成基础服务后再继续启动下面的服务
    • /jeesite-cloud-module-test1/../Test1Application.java
    • /jeesite-cloud-module-test2/../Test2Application.java
  • 其外一些子微服务模块,可根据需要是否启动,无顺序要求
    • /jeesite-cloud-module-files/../FilesApplication.java
    • /jeesite-cloud-module-msg/../MsgApplication.java
    • /jeesite-cloud-module-bpm/../BpmApplication.java
    • /jeesite-cloud-module-extends/../ExtendsApplication.java
  • 服务启动成功后,浏览器访问网关项目地址即可:
    • 访问地址:http://127.0.0.1:8980/js 用户名密码: system admin
    • 若访问报错,请再等待一会,可能服务未完全启动完成

常见问题

  • 如果提示 获取不到 ${service.core.name} 属性,请检查配置 错误,说明没有从 nacos 或 config 配置中心获取到配置信息。一般有以下原因。1:Nacos 里未导入 jeesite-cloud-yml.zip 配置文件;2:如果您自定义了 Nacos 的 Group Name,请于 application.ymlbootstrap.yml 里的 Group Name 一致;3:如果 Nacos 提示了 yml 读取错误,请在启动参数,配上环境变量 JAVA_OPTS,值为 -Dfile.encoding=UTF-8(不同IDE里的设置方法:IDEA:File->Settings->Editor->FileEncodings->Project Encodeing->UTF-8;Eclipse:Window->Preferences->General->Workspace->Text file encoding->Other->UTF-8)

调用实例演示

网关代理模块调用

模块之间互相调用

  • test2 模块调用 test1 模块(单表):http://127.0.0.1:8980/js/a/test2/testData/list
    • 服务消费者位置:/jeesite-cloud-module-test2/../web/TestData2Controller.java
    • 服务提供者位置:/jeesite-cloud-module-test1/../service/TestDataService.java
  • test1 模块调用 test2 模块(树表):http://127.0.0.1:8980/js/a/test1/testTree/list
    • 服务消费者位置:/jeesite-cloud-module-test1/../web/TestTree1Controller.java
    • 服务提供者位置:/jeesite-cloud-module-test2/../service/TestTreeService.java

快速启用延伸功能

启用分布式事务

1、全局搜索 jeesite-cloud-module-seata-client 开启所有 pom.xml 中的依赖

<!-- 分布式事务 -->
<dependency>
    <groupId>com.jeesite</groupId>
    <artifactId>jeesite-cloud-module-seata-client</artifactId>
    <version>${project.parent.version}</version>
</dependency>

2、进入 Nacos 管理界面,配置 application.yml 开启参数 seata.enabled: true

3、在需要启动事务的 Controller 映射方法上声明 @GlobalTransactional 注解

4、更多参考:请点击进入 Seata 专题文章

启用流量防卫兵

可选组件,随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点, 从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。

1、修改 /jeesite-cloud/parent/web/pom.xml 文件,添加 Sentinel 依赖

<!-- 流量防卫兵 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

2、修改 /jeesite-cloud/gateway/pom.xml 文件,添加 Sentinel 依赖

<!-- 流量防卫兵 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

3、在 IDEA 或 Eclipse 中 找到 jeesite-cloud-sentinel 项目。

4、运行 SentinelApplication 类的 main 方法,即可启动服务。

5、此服务为可选服务,按需启动。

浏览器访问:http://127.0.0.1:9311 用户名密码:sentinel

启用链路追踪服务

可选组件,Zipkin 是一个开放源代码分布式的跟踪系统,每个服务向 Zipkin 报告计时数据,Zipkin会根据调用关系通过 Zipkin UI 生成依赖关系图。

1、修改 /jeesite-cloud/parent/web/pom.xml 文件,添加 链路追踪 依赖

<!-- 链路追踪服务 -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>

2、在 IDEA 或 Eclipse 中 找到 jeesite-cloud-zipkin 项目。

3、运行 ZipkinApplication 类的 main 方法,即可启动服务。

4、此服务为可选服务,按需启动。

浏览器访问:http://127.0.0.1:9411

如果使用 SkyWalking,安装文档见:https://jeesite.com/docs/skywalking/

切换到 Eureka

1、修改 /jeesite-cloud/parent/web/pom.xml 文件,添加 Eureka,注释掉 Nacos、Sentinel 依赖

<!-- 服务发现和配置中心 Eureka、Config -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

<!-- 服务发现 Consul
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency> -->

<!-- 服务发现和配置中心 Nacos
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
</dependency> -->

<!-- <dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency> -->

2、修改 /jeesite-cloud/gateway/pom.xml 文件,注释掉 Sentinel Nacos 依赖

<!-- <dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency> -->

3、全局替换 application.yml 文件的,添加 optional: 注释掉 nacos:

spring:
  # 加载的配置文件
  config:
    import:
      - 'optional:configserver:'
#    import:
#      - 'nacos:application.yml'
#      - 'nacos:application-${spring.profiles.active}.yml'
#      - 'nacos:${spring.application.name}.yml'
#      - 'nacos:${spring.application.name}-${spring.profiles.active}.yml'

4、替换完成。

新增微服务工程

1、新建模块

1)进入菜单:系统管理 -> 系统设置 -> 模块管理,新建一个模块,填写:

  • 模块名称:测试模块
  • 模块编码:test3
  • 生成基础路径:填写新建模块的根目录
  • 代码生成模板:生成微服务模块代码(Cloud)

点击 “保存并生成代码” 按钮,即可完成微服务模块的工程代码新建。

2)新建微服务功能,进入代码生成器功能菜单,生成时选择 Cloud 的代码生成模板,系统会自动生成 test3 的 api 和 clint 工程模块代码。

2、配置服务参数

在 jeesite-config 或 Nacos 的微服务配置文件 application.yml 中,新增微服务:

# 微服务列表
service:
  test3:
    name: jeesite-cloud-module-test3
    path: ${server.servlet.context-path}

3、配置网关映射

在 jeesite-cloud-gateway 配置文件中新增网关路由

spring:
  cloud:
    gateway:
      routes:
        # 测试模块3
        - id: test3
          uri: lb://jeesite-cloud-module-test3
          predicates:
            - Path=/js/a/test3/**,/js/a/jeesite-cloud-module-test3/**,/js/static/modules/test3/**

注意:新增的配置请放到 core 基础权限模块之上。

微服务增删改查

进入 “代码生成器” 菜单,同单机版使用方法,只需在生成代码时,选择 Cloud 版本的生成模板即可。

授权协议声明

  1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。
  2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
  3. 在使用本软件时,由于它集成了众多第三方开源软件,请共同遵守这些开源软件的使用许可条款规定。
  4. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者 规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的Copyright@author信息) 更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
  5. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置 说明出处,举例:本软件基于 JeeSite 快速开发平台,并附带链接:http://jeesite.com
  6. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
  7. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
  8. 本项目已申请软件著作权,请尊重开源,感谢阅读。
  9. 无用户数限制,无在线人数限制,放心使用。

技术支持与服务

  • 本软件免费,我们也提供了相应的收费服务,因为:
  • 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以获得更多回馈,我们会把公益事业做的更好,开放更多资源,回报社区和社会。请给我们一些动力吧,在此非常感谢已支持我们的朋友!
  • 联系我们:请访问技术支持与服务页面:http://s.jeesite.com

Git 全局设置技巧

1、提交检出均不转换换行符

git config --global core.autocrlf false

2、拒绝提交包含混合换行符的文件

git config --global core.safecrlf true

About

ThinkGem 出品必属精品 JeeSite Spring Cloud 是基于 Spring Cloud Finchley 的一个分布式系统套件的整合。特点:用经典开发模式,开发分布式应用,两个字【简单】,一个字【快】。

Resources

License

Stars

Watchers

Forks

Packages

No packages published