JeeSite Spring Cloud安裝搭建

叫我小鍋鍋發表於2021-12-19

引言

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 幫助了您,請為我們點贊。支援我們,您可以得到一些回報,有了這些我們會把開源事業做的更好,回報社群和社會,請給我們一些動力吧,在此非常感謝已支援我們的朋友!

技術交流方式

JeeSite4微信公眾號

Git 全域性設定技巧

1、提交檢出均不轉換換行符

git config --global core.autocrlf false

2、拒絕提交包含混合換行符的檔案

git config --global core.safecrlf true

相關文章