日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Rainbond云原生部署SpringCloud應(yīng)用架構(gòu)實(shí)踐_云其它

作者:Rainbond?作者 ? 更新時(shí)間: 2022-06-19 編程語言

示例項(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

欄目分類
最近更新