引言

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

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

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

特点:用经典开发模式,开发分布式应用,两个字【简单】,一个字【快】。

源码仓库地址:https://gitee.com/thinkgem/jeesite4-cloud

优势(只写别人没有的)

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

技术选型

  • 分布式系统套件版本:Spring Cloud 2020.0.4 + Alibaba 2021.1
  • 服务治理注册与发现:Spring Cloud Eureka / Consul / Nacos 2.0
  • 分布式统一配置中心:Spring Cloud Config / Nacos 2.0
  • 网关路由代理调用:Spring Cloud Gateway (动态网关)
  • 声明式服务调用:Spring Cloud OpenFeign
  • 客户端负载均衡:Spring Cloud LoadBalancer
  • 阿里流量防卫兵:Sentinel 1.8 (限流、熔断降级、负载保护)
  • 分布式事务框架:Seata 1.4 / TX-LCN 5.0 (可选组件)
  • 分布式链路追踪:Zipkin 2.23 (可选组件)
  • 工作流引擎框架:Flowable 6.6 (可选组件)

子项目介绍

  • 服务注册: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:8848/nacos/index.html
  • 网关路由: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 服务(推荐):
    • 服务主项目:jeesite-cloud-module-seata : http://127.0.0.1:8091
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-seata-client
  • 分布式事务 LCN 服务:
    • 服务主项目:jeesite-cloud-module-txlcn : http://127.0.0.1:7970
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-txlcn-client
  • 熔断限流: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) 命令完成初始化(支持多种数据库)。

安装 Redis

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

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

下载地址:https://gitee.com/thinkgem/jeesite4-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-eureka 和 jeesite-cloud-config 了。

JeeSite Cloud 提供了 2 种部署方式,你可以下载 jar 也可以 src 方式运行:

jar 方式:

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

src 方式:

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

配置 mysql 存储:

  1. 默认情况 Nacos 采用 Derby 数据库,你可以将数据库切换到 MySQL 下。
  2. 找到 /nacos/src/main/resources/config/nacos-mysql.sql 文件导入数据表。
  3. 找到 Nacos 的配置文件(application.properties 或 application.yml)如下:
spring.datasource.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&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user: root
db.password: 123456 # 如果是 application.properties 文件,将 key 后的冒号换为等号即可。
 

启动完成后:

浏览器访问:http://127.0.0.1:8848/nacos/index.html 用户名密码:nacos

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

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

启动 Sentinel 服务

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

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

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

启动 Zipkin 服务

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

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

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

启动微服务项目

  • 在每个微服务中可以找的 config/bootstrap.yml 配置服务注册和配置中心地址。
  • 按顺序运行以下启动类的main方法:(因为服务直接有依赖,请启动完成一个再启下一个)
    • /jeesite-cloud-gateway/../GatewayApplication.java
    • /jeesite-cloud-module-core/../CoreApplication.java
    • /jeesite-cloud-module-test1/../Test1Application.java
    • /jeesite-cloud-module-test2/../Test2Application.java
  • 以上都启动成功后,浏览器访问网关项目地址即可:
    • 访问地址:http://127.0.0.1:8980/js 用户名密码: system admin
    • 若访问报错,请再等待一会,可能服务未完全启动完成

调用实例演示

网关代理模块调用

模块之间互相调用

  • 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、新建模块

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

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

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

2)新建微服务功能,进入代码生成器功能菜单,生成时选择 Cloud 的代码生成模板即可。

v4.2.2之前版本:

由于之前版本没有微服务模块生成器功能,所以需要参考其它模块。举例新增一个微服务模块模块叫 test3,该模块的所有映射地址均在 ${adminPath}/test3/** 这个路径下,该模块可以参照 test1 进行,步骤如下:

拷贝 jeesite-cloud-module-test1 项目为 jeesite-cloud-module-test3 文件夹:

1)修改 pom.xml 中的应用名:

<artifactId>jeesite-cloud-module-test1</artifactId>
替换为:
<artifactId>jeesite-cloud-module-test3</artifactId>
 
<artifactId>jeesite-cloud-module-test1-client</artifactId>
替换为:
<artifactId>jeesite-cloud-module-test3-client</artifactId>
 

2)修改 application.yml 中的应用名:

spring:
application:
name: jeesite-cloud-module-test3
 

3)修改 *Client.java 里的应用名:

service.test1 替换为 service.test3
 

4)修改 *Controller.java 里的映射路径:

${adminPath}/test1 替换为 ${adminPath}/test3
 

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/js/a/test3
predicates:
- Path=/js/a/test3/**
# 测试模块3(系统监控)
- id: test3_def
uri: lb://jeesite-cloud-module-test3/js/a/jeesite-cloud-module-test3
predicates:
- Path=/js/a/jeesite-cloud-module-test3/**
 

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

微服务增删改查

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

授权协议声明

  1. 您可以免费使用、修改和衍生代码,但不允许修改后和衍生的代码做为闭源软件发布。
  2. 修改后和衍生的代码必须也按照当前协议进行流通,对修改后和衍生的代码必须向社会公开。
  3. 如果您修改了代码,需要在被修改的文件中进行说明,并遵守代码格式规范,帮助他人更好的理解您的用意。
  4. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者规定 需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的@author信息)。
  5. 本项目仅用于学习和交流,未得到官方授权不得用于商业用途。

获得技术服务支持:http://s.jeesite.com

  • 我们深知,没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以得到一些回报,有了这些我们会把开源事业做的更好,回报社区和社会,请给我们一些动力吧,在此非常感谢已支持我们的朋友!

技术交流方式

Git 全局设置技巧

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

git config --global core.autocrlf false

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

git config --global core.safecrlf true

JeeSite Spring Cloud安装搭建的更多相关文章

  1. SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心

    目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...

  2. spring cloud config搭建说明例子(四)-补充配置文件

    服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</groupId> ...

  3. spring cloud config搭建说明例子(三)-添加actuator

    添加心跳 服务端 ConfigServer pom.xml添加actuator包 <dependency> <groupId>org.springframework.cloud ...

  4. spring cloud config搭建说明例子(二)-添加eureka

    添加注册eureka 服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</ ...

  5. spring cloud 专题一 (spring cloud 入门搭建 之 Eureka注册中心搭建)

    一.前言 本文为spring cloud 微服务框架专题的第一篇,主要讲解如何快速搭建spring cloud微服务及Eureka 注册中心 以及常用开发方式等. 本文理论不多,主要是傻瓜式的环境搭建 ...

  6. spring cloud 专题二(spring cloud 入门搭建 之 微服务搭建和注册)

    一.前言 本文为spring cloud 微服务框架专题的第二篇,主要讲解如何快速搭建微服务以及如何注册. 本文理论不多,主要是傻瓜式的环境搭建,适合新手快速入门. 为了更好的懂得原理,大家可以下载& ...

  7. Spring Cloud 如何搭建Config

    利用spring cloud 的 spring-cloud-config-server 组件 搭建自己的配置中心 config-server 配置文件可以存放在 github ,gitlab 等上面, ...

  8. Spring Cloud 如何搭建eureka

    Eureka Server 的搭建 eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能. 利用idea 快速创建一个eureka应用File - NewProject ...

  9. spring cloud oauth2搭建认证中心与资源中心

    一 认证中心搭建 添加依赖,如果使用spring cloud的话,不管哪个服务都只需要这一个封装好的依赖即可 <dependency> <groupId>org.springf ...

随机推荐

  1. layui的入门使用

    1.如果使用单独的layui插件的话需要先引入jquery的插件,官方建议1.8+的版本. 2.引入后就能根据规则正常使用了.

  2. Redis、Zookeeper实现分布式锁——原理与实践

    Redis与分布式锁的问题已经是老生常谈了,本文尝试总结一些Redis.Zookeeper实现分布式锁的常用方案,并提供一些比较好的实践思路(基于Java).不足之处,欢迎探讨. Redis分布式锁 ...

  3. BehaviorTree.CPP行为树BT的装饰器节点(五)

    Decorators 装饰器是只能有一个子项的节点. 由装饰者来决定是否,何时以及对子节点进行tick. InverterNode tick子节点一次,如果子节点失败则返回SUCCESS,如果孩子成功 ...

  4. 洛谷 P6222 - 「P6156 简单题」加强版(莫比乌斯反演)

    原版传送门 & 加强版传送门 题意: \(T\) 组数据,求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n(i+j)^k\mu^2(\gcd(i,j))\g ...

  5. SUNTANS 及 FVCOM 对流扩散方程求解简介[TBC]

    最近接到一个任务,就是解决FVCOM中对流扩散计算不守衡问题.导师认为是其求解时候水平和垂向计算分开求解所导致的,目前我也没搞清到底有什么问题,反正就是让把SUNTANS的对流扩散计算挪到FVCOM中 ...

  6. tensorboard No dashboards are active for the current data set.

    修改一下启动命令时的路径 位置示例: 命令为   E:\PYTHON_PROJECT\testTF\inceptionV1_net\log>tensorboard --logdir=TEC4FN ...

  7. 学习Java的第三天

    一.今日收获 1.今天家里有白事,忙了一整天,也没有看更多的资料 二.今日问题 无 三.明日目标 补全今天耽误的功课,继续学习java!

  8. A Child's History of England.52

    'Arthur,' said the King, with his wicked eyes more on the stone floor than on his nephew, 'will you ...

  9. day08 Nginx模块

    day08 Nginx模块 lnmp架构 l :Linux n :Nginx m :MySQL p :Python/PHP lnmp架构:是最简单的架构 Nginx中的模块(Python模块):前提是 ...

  10. 12. Fedora 中文乱码问题

    1. Rhythmbox(音乐播放器乱码) yum install python-mutagen mid3iconv -e GBK *.mp3 2. totem电影播放机播放列表乱码解决1).修改to ...