網(wǎng)站首頁 編程語言 正文
示例項(xiàng)目詳情
本文檔以Pig 快速開發(fā)框架為例,演示如何在Rainbond上部署一套完整的Spring Cloud項(xiàng)目。
Pig Microservice Architecture V2.1.0:
基于 Spring Cloud Finchley 、Spring Security OAuth2 的RBAC權(quán)限管理系統(tǒng)
基于數(shù)據(jù)驅(qū)動(dòng)視圖的理念封裝 Element-ui,即使沒有 vue 的使用經(jīng)驗(yàn)也能快速上手
提供對(duì)常見容器化支持 Docker、Kubernetes、Rancher2 支持
提供 lambda 、stream api 、webflux 的生產(chǎn)實(shí)踐
模塊說明:
pig
├── pig-ui -- 前端工程[80]
├── pig-auth -- 授權(quán)服務(wù)提供[3000]
└── pig-common -- 系統(tǒng)公共模塊
├── pig-common-core -- 公共工具類核心包
├── pig-common-log -- 日志服務(wù)
└── pig-common-security -- 安全工具類
├── pig-config -- 配置中心[8888]
├── pig-eureka -- 服務(wù)注冊(cè)與發(fā)現(xiàn)[8761]
├── pig-gateway -- Spring Cloud Gateway網(wǎng)關(guān)[9999]
└── pig-upms -- 通用用戶權(quán)限管理模塊
└── pigx-upms-api -- 通用用戶權(quán)限管理系統(tǒng)公共api模塊
└── pigx-upms-biz -- 通用用戶權(quán)限管理系統(tǒng)業(yè)務(wù)處理模塊[4000]
└── pigx-visual -- 圖形化模塊
├── pigx-monitor -- Spring Boot Admin監(jiān)控 [5001]
└── pigx-codegen -- 圖形化代碼生成[5003]
└── pigx-zipkin -- 微服務(wù)鏈路跟蹤[5002]
上述的模塊,可以分為類庫與服務(wù)兩類,讀者可以對(duì)比自己的Spring Cloud項(xiàng)目:
構(gòu)建后產(chǎn)生jar包,用來實(shí)現(xiàn)各種功能的類的集合,即是類庫,如Pig中的pig-common模塊
構(gòu)建后產(chǎn)生jar包或者war包,通過 java -jar 或者tomcat等方式啟動(dòng),開放某個(gè)端口提供服務(wù)的,即是服務(wù),如Pig中的pig-eureka模塊
只需要將服務(wù)模塊在Rainbond中構(gòu)建出來即可。
經(jīng)過梳理,該項(xiàng)目需要構(gòu)建的服務(wù)組件包括:
啟動(dòng)順序 | 服務(wù)組件名稱 | 運(yùn)行端口 | 組件功能 |
---|---|---|---|
1 | pig-eureka | 8761 | spring cloud 服務(wù)發(fā)現(xiàn)注冊(cè)與發(fā)現(xiàn) |
2 | pig-config | 8888 | spring cloud 配置中心 |
3 | pig-gateway | 9999 | spring cloud 微服務(wù)網(wǎng)關(guān) |
4 | pig-auth | 3000 | 授權(quán)服務(wù)提供 |
5 | pig-upms-biz | 4000 | 通用用戶權(quán)限管理系統(tǒng)業(yè)務(wù)處理模塊 |
6 | pig-monitor | 5001 | Spring Boot Admin監(jiān)控 |
7 | pig-codegen | 5003 | 圖形化代碼生成 |
8 | pig-zipkin | 5002 | 微服務(wù)鏈路跟蹤 |
9 | pig-ui | 80 | 前端項(xiàng)目(vue項(xiàng)目) |
部署環(huán)境說明:
部署pig,需要以下環(huán)境支持:
中間件或環(huán)境要求 | 版本要求 | 備注 |
---|---|---|
JDK | 1.8 | 強(qiáng)制要求版本 |
MySQL | 5.7+ | 強(qiáng)制要求版本 |
Redis | 3.2 + | 強(qiáng)制要求版本 |
node | 8.0 + | 用于運(yùn)行前端項(xiàng)目 |
npm | 6.0 + | 用于構(gòu)建前端項(xiàng)目 |
模塊構(gòu)建
新建應(yīng)用,并命名為 spring-cloud
獲取項(xiàng)目克隆/下載地址: https://gitee.com/log4j/pig
以pig-eureka為例,演示從源碼開始構(gòu)建流程:
為 spring-cloud 添加服務(wù)組件 —— 從源碼開始 —— 自定義倉庫:
點(diǎn)擊 新建服務(wù),Rainbond會(huì)自動(dòng)拉取代碼,并根據(jù)代碼根目錄下的 pom.xml 自動(dòng)將代碼語言識(shí)別為 Java-maven。取消 并構(gòu)建啟動(dòng) 選項(xiàng):
點(diǎn)擊 創(chuàng)建,進(jìn)入服務(wù)組件未部署的頁面。編輯 端口 選項(xiàng)卡,開放 pig-eureka 自身端口 8761:
pig-eureka 需要被其它微服務(wù)組件訪問以進(jìn)行注冊(cè),所以打開對(duì)內(nèi)服務(wù),以便之后創(chuàng)建依賴關(guān)系。該組件也提供web頁面,顯示微服務(wù)組件的注冊(cè)情況與健康情況,所以打開對(duì)外服務(wù),以便外部訪問。
編輯 構(gòu)建源 選項(xiàng)卡,指定 pig-eureka 構(gòu)建參數(shù):
由于 Pig 本身是一個(gè)多模塊的項(xiàng)目,所以需要指定當(dāng)前服務(wù)組件構(gòu)建的模塊。指定的方式是在 構(gòu)建運(yùn)行環(huán)境設(shè)置 中的 Maven構(gòu)建全局參數(shù):
clean dependency:list install -pl pig-eureka -am
上述的參數(shù)指定了普通的子模塊構(gòu)建方式,對(duì)于另一種子模塊中的子模塊,比如 pig-codegen 模塊,參數(shù)指定的方式為:
clean dependency:list install -pl pig-visual/pig-codegen -am
在v5.1+版本的Rainbond中,可以指定當(dāng)前服務(wù)組件的啟動(dòng)命令。指定的方式是在 構(gòu)建運(yùn)行環(huán)境設(shè)置 中的 啟動(dòng)命令:
web: java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/pig-eureka/target/*.jar?
命令格式與 Procfile 一致。
編輯 依賴 選項(xiàng)卡,指定當(dāng)前服務(wù)組件依賴其它服務(wù)組件:
各個(gè)服務(wù)組件之間的依賴關(guān)系,可以在創(chuàng)建時(shí)指定。所有的 spring cloud 微服務(wù)組件都需要依賴 pig-eureka,以 pig-gateway為例,應(yīng)添加依賴關(guān)系如下:
所有的設(shè)置完成后,即可點(diǎn)擊 構(gòu)建 ,構(gòu)建完成后,服務(wù)組件將自動(dòng)運(yùn)行起來。
將所有服務(wù)組件依次部署完成。
部署 Mysql
Pig 微服務(wù)項(xiàng)目需要部署 Mysql 5.7+ 作為數(shù)據(jù)源。并在代碼倉庫中提供了數(shù)據(jù)庫初始化腳本:?
https://gitee.com/log4j/pig/blob/master/db/pig.sql
為了能夠在數(shù)據(jù)庫啟動(dòng)時(shí)即加載初始化腳本,制作了一份 Dockerfile:
FROM percona:5.7.23-stretch
LABEL creater="barnett"
ENV MYSQL_VERSION=5.7.23
ENV TZ=Asia/Shanghai
ADD docker-entrypoint.sh /run/docker-entrypoint.sh
ADD ./run/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
ADD ./run/mysqld.cnf /etc/mysql/percona-server.conf.d/mysqld.cnf
RUN fetchDeps=' \
ca-certificates \
wget \
'; \
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
rm -rf /var/lib/apt/lists/*; \
wget -O /usr/local/bin/env2file -q https://github.com/barnettZQG/env2file/releases/download/v0.1/env2file-linux; \
chmod +x /run/docker-entrypoint.sh && chmod +x /usr/local/bin/env2file; \
apt-get purge -y --auto-remove $fetchDeps
EXPOSE 3306
VOLUME ["/var/lib/mysql", "/var/log/mysql"]
# 將代碼倉庫中 sql 目錄下的腳本放到對(duì)應(yīng)的初始化目錄下
COPY sql/*.sql /docker-entrypoint-initdb.d/
# change ENTRYPOINT exec some custom command
ENTRYPOINT [ "/run/docker-entrypoint.sh" ]
CMD [ "mysqld" ]
為 spring-cloud 添加服務(wù)組件 —— 從源碼開始 —— 自定義倉庫:
將服務(wù)組件命名為 pig-db,并指定代碼分支 pig。
在代碼倉庫地址url的最后添加 ?dir=5.7 可以讓Rainbond將構(gòu)建目錄指定為代碼倉庫根目錄下的 5.7 文件夾。
為了讓數(shù)據(jù)庫正常工作,并且可以被其它依賴的本數(shù)據(jù)庫的應(yīng)用獲取連接信息,需要設(shè)置若干環(huán)境變量:
環(huán)境變量名稱 | 環(huán)境變量值 | 設(shè)置位置 |
---|---|---|
MYSQL_USER | root | 連接信息 |
MYSQL_HOST | 127.0.0.1 | 連接信息 |
MYSQL_PORT | 3306 | 連接信息 |
MYSQL_ROOT_PASSWORD | mysqlpassword | 連接信息 |
MYSQL_DATABASE | pig | 連接信息 |
通過修改 pig-config 中的配置文件,來定義多個(gè)微服務(wù)組件連接數(shù)據(jù)庫的配置:
pig/pig-config/src/main/resources/config/pigx-auth-dev.yml
pig/pig-config/src/main/resources/config/pigx-upms-dev.yml
pig/pig-config/src/main/resources/config/pigx-codegen-dev.yml
pig/pig-config/src/main/resources/config/pigx-zipkin-dev.yml.yml
修改示例如下:
# 數(shù)據(jù)源
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
username: ${MYSQL_USER}
password: ${MYSQL_ROOT_PASSWORD}
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
部署 Redis
通過Rainbond應(yīng)用市場(chǎng),可以直接安裝 Redis 4.0.13。
該版本Redis默認(rèn)提供連接信息:
通過修改 pig-config 中的 pig/pig-config/src/main/resources/config/application-dev.yml 來定義所有服務(wù)組件連接Redis的配置:
修改示例如下:
# Spring 相關(guān)
spring:
redis:
password: ${REDIS_PASS}
host: ${REDIS_HOST}
部署 pig-ui
pig-ui 是一個(gè)由nodejs語言編寫的 vue項(xiàng)目,作為整個(gè)系統(tǒng)的前端靜態(tài)頁面。Rainbond目前已經(jīng)支持源碼構(gòu)建 nodejs前端 項(xiàng)目,參考文檔:NodeJS前端語言
為了便于改造項(xiàng)目,所以將項(xiàng)目 fork 了一份進(jìn)行修改,代碼地址:
https://gitee.com/dazuimao1990/pig-ui
參照Rainbond代碼支持規(guī)范,在代碼根目錄下添加了識(shí)別文件: nodestatic.json
{"path":"dist"}
并在代碼倉庫中添加了nginx配置文件: www/web.conf 用于處理代理轉(zhuǎn)發(fā):
server {
listen 80;
root /app/www;
location ~* ^/(code|auth|admin|gen) {
proxy_pass http://127.0.0.1:9999;
proxy_connect_timeout 15s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
利用這份代碼進(jìn)行源碼構(gòu)建,即可完成 pig-ui 服務(wù)組件的部署。
依賴與端口梳理
服務(wù)組件名稱 | 依賴 | 端口對(duì)內(nèi)服務(wù) | 端口對(duì)外服務(wù) |
---|---|---|---|
pig-ui | pig-gateway | off | on |
pig-gateway | pig-eureka Redis | on | off |
pig-monitor | pig-eureka Redis | off | off |
pig-config | pig-eureka | off | off |
pig-upms-biz | pig-eureka pig-db Redis | off | off |
pig-zipkin | pig-eureka pig-db Redis | off | on |
pig-auth | pig-eureka Redis | off | off |
pig-codegen | pig-eureka pig-db Redis | off | off |
最終成果
完成部署后,拓?fù)鋱D如下:
登陸效果:
登陸賬戶密碼:
admin
123456
原文鏈接:https://blog.csdn.net/zqg5258423/article/details/88963207
相關(guān)推薦
- 2022-07-10 table列表中輸入框input與文本span切換的實(shí)現(xiàn)
- 2022-10-31 Kotlin協(xié)程開發(fā)之Flow的融合與Channel容量及溢出策略介紹_Android
- 2023-11-19 Linux虛擬機(jī)VMware的Ubuntu使用vi指令的方向鍵和backspace空格鍵亂碼
- 2022-01-08 解決npm install報(bào)錯(cuò)問題--npm install xxx npm ERR! code E
- 2022-10-31 Kotlin中Object關(guān)鍵字的使用示例介紹_Android
- 2022-07-11 spring boot + shiro 無需redis自定義token生成
- 2022-04-06 Pandas使用query()優(yōu)雅的查詢實(shí)例_python
- 2022-08-15 如何實(shí)現(xiàn)響應(yīng)式(自適應(yīng))網(wǎng)頁
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支