引言
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
優勢(只寫別人沒有的)
- 在 JeeSite 單應用基礎之上,完成的 Cloud 功能,使用經典開發模式,就像開發單應用一樣開發分布式應用
- 它提供了微服務模塊的代碼生成工具,快速生成開發微服務功能,包含微服務的發布和調用接口
- 我們將 api 和 client 合體為一個工程,自動適應自己調用自己 client 的影響,簡化工程數量
- 解決 Feign 接口不能多重繼承問題,如一些通用操作(增刪改查)微服務接口基類實現,這些都不用自己寫了
- 統一的授權認證、基礎數據微服務,都已經提供查詢 client 接口,其他微服務應用模塊中可直接獲取用戶、組織、權限、字典等基礎數據。微服務之間調用中,出現的會話及緩存的一致性統一得到解決。
- 如 UserUtils、EmpUtils、EmpUserService、OfficeService 等等眾多的基礎服務工具類,都可以直接從基礎數據的微服務中獲取數據,你不必考慮跨 web 服務的數據交互,我們已經幫你做了。
- 微服務組件 Nacos、Sentinel、Zipkin 提供源碼方式啟動部署,方便開發調試。
- 寫一個別人有的,使用柔性事務解決,跨 web 服務的情況,入侵性非常小哦。
- 集成工作流,提供BPM引擎獨立的服務,客戶端只需調用API,無需加載復雜流程引擎。
- 其它優勢(按 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 方式:
- 下載地址:https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.zip
- 解壓
nacos-server-2.0.3.zip壓縮包,運行/bin/startup.cmd(sh)啟動服務。
src 方式:
- 在 Eclipse 或 IDEA 中 找到 jeesite-cloud-nacos 項目。
- 運行 NacosApplication 類的 main 方法,即可啟動服務。
配置 mysql 存儲:
- 默認情況 Nacos 采用 Derby 數據庫,你可以將數據庫切換到 MySQL 下。
- 找到 /nacos/src/main/resources/config/nacos-mysql.sql 文件導入數據表。
- 找到 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 是面向分布式服務架構的流量控制組件,主要以流量為切入點, 從流量控制、熔斷降級、系統自適應保護等多個維度來幫助您保障微服務的穩定性。
- 在 Eclipse 或 IDEA 中 找到 jeesite-cloud-sentinel 項目。
- 運行 SentinelApplication 類的 main 方法,即可啟動服務。
瀏覽器訪問:http://127.0.0.1:9311 用戶名密碼:sentinel
啟動 Zipkin 服務
Zipkin 是一個開放源代碼分布式的跟蹤系統,每個服務向 Zipkin 報告計時數據,Zipkin會根據調用關系通過 Zipkin UI 生成依賴關系圖。
- 在 Eclipse 或 IDEA 中 找到 jeesite-cloud-zipkin 項目。
- 運行 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
- 若訪問報錯,請再等待一會,可能服務未完全啟動完成

調用實例演示
網關代理模塊調用
- 代理 test1 模塊(單表):http://127.0.0.1:8980/js/a/test1/testData/list
- 控制器位置:/jeesite-cloud-module-test1/../web/TestData1Controller.java
- 代理 test2 模塊(樹表):http://127.0.0.1:8980/js/a/test2/testTree/list
- 控制器位置:/jeesite-cloud-module-test2/../web/TestTree2Controller.java
模塊之間互相調用
- 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 版本的生成模板即可。
授權協議聲明
- 您可以免費使用、修改和衍生代碼,但不允許修改后和衍生的代碼做為閉源軟件發布。
- 修改后和衍生的代碼必須也按照當前協議進行流通,對修改后和衍生的代碼必須向社會公開。
- 如果您修改了代碼,需要在被修改的文件中進行說明,並遵守代碼格式規范,幫助他人更好的理解您的用意。
- 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議、版權聲明和其他原作者規定 需要包含的說明(請尊重原作者的著作權,不要刪除或修改文件中的
@author信息)。 - 本項目僅用於學習和交流,未得到官方授權不得用於商業用途。
獲得技術服務支持:http://s.jeesite.com
- 我們深知,沒有資金的支撐就很難得到發展,特別是一個好的產品,如果 JeeSite 幫助了您,請為我們點贊。支持我們,您可以得到一些回報,有了這些我們會把開源事業做的更好,回報社區和社會,請給我們一些動力吧,在此非常感謝已支持我們的朋友!
技術交流方式
- QQ 群號:
127515876、209330483、223507718、709534275、730390092、1373527、183903863(外包) - 問題反饋:https://gitee.com/thinkgem/jeesite4-cloud/issues 【新手必讀】
- 碼雲Gitee:https://gitee.com/thinkgem/jeesite4-cloud
- GitHub:https://github.com/thinkgem/jeesite4-cloud
- 作者博客:https://my.oschina.net/thinkgem
- 官方網站:http://jeesite.com
- 官方論壇:http://jeesite.net
- 微信公眾號:

Git 全局設置技巧
1、提交檢出均不轉換換行符
git config --global core.autocrlf false 2、拒絕提交包含混合換行符的文件 git config --global core.safecrlf true
