<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本檔案以Pig 快速開發框架為例,演示如何在Rainbond上部署一套完整的Spring Cloud專案。
Pig Microservice Architecture V2.1.0:
基於 Spring Cloud Finchley 、Spring Security OAuth2 的RBAC許可權管理系統
基於資料驅動檢視的理念封裝 Element-ui,即使沒有 vue 的使用經驗也能快速上手
提供對常見容器化支援 Docker、Kubernetes、Rancher2 支援
提供 lambda 、stream api 、webflux 的生產實踐
pig ├── pig-ui -- 前端工程[80] ├── pig-auth -- 授權服務提供[3000] └── pig-common -- 系統公共模組 ├── pig-common-core -- 公共工具類核心包 ├── pig-common-log -- 紀錄檔服務 └── pig-common-security -- 安全工具類 ├── pig-config -- 設定中心[8888] ├── pig-eureka -- 服務註冊與發現[8761] ├── pig-gateway -- Spring Cloud Gateway閘道器[9999] └── pig-upms -- 通用使用者許可權管理模組 └── pigx-upms-api -- 通用使用者許可權管理系統公共api模組 └── pigx-upms-biz -- 通用使用者許可權管理系統業務處理模組[4000] └── pigx-visual -- 圖形化模組 ├── pigx-monitor -- Spring Boot Admin監控 [5001] └── pigx-codegen -- 圖形化程式碼生成[5003] └── pigx-zipkin -- 微服務鏈路跟蹤[5002]
上述的模組,可以分為類庫與服務兩類,讀者可以對比自己的Spring Cloud專案:
構建後產生jar包,用來實現各種功能的類的集合,即是類庫,如Pig中的pig-common模組
構建後產生jar包或者war包,通過 java -jar 或者tomcat等方式啟動,開放某個埠提供服務的,即是服務,如Pig中的pig-eureka模組
只需要將服務模組在Rainbond中構建出來即可。
經過梳理,該專案需要構建的服務元件包括:
啟動順序 | 服務元件名稱 | 執行埠 | 元件功能 |
---|---|---|---|
1 | pig-eureka | 8761 | spring cloud 服務發現註冊與發現 |
2 | pig-config | 8888 | spring cloud 設定中心 |
3 | pig-gateway | 9999 | spring cloud 微服務閘道器 |
4 | pig-auth | 3000 | 授權服務提供 |
5 | pig-upms-biz | 4000 | 通用使用者許可權管理系統業務處理模組 |
6 | pig-monitor | 5001 | Spring Boot Admin監控 |
7 | pig-codegen | 5003 | 圖形化程式碼生成 |
8 | pig-zipkin | 5002 | 微服務鏈路跟蹤 |
9 | pig-ui | 80 | 前端專案(vue專案) |
部署pig,需要以下環境支援:
中介軟體或環境要求 | 版本要求 | 備註 |
---|---|---|
JDK | 1.8 | 強制要求版本 |
MySQL | 5.7+ | 強制要求版本 |
Redis | 3.2 + | 強制要求版本 |
node | 8.0 + | 用於執行前端專案 |
npm | 6.0 + | 用於構建前端專案 |
新建應用,並命名為 spring-cloud
獲取專案克隆/下載地址: https://gitee.com/log4j/pig
以pig-eureka為例,演示從原始碼開始構建流程:
為 spring-cloud 新增服務元件 —— 從原始碼開始 —— 自定義倉庫:
點選 新建服務,Rainbond會自動拉取程式碼,並根據程式碼根目錄下的 pom.xml 自動將程式碼語言識別為 Java-maven。取消 並構建啟動 選項:
點選 建立,進入服務元件未部署的頁面。編輯 埠 索引標籤,開放 pig-eureka 自身埠 8761:
pig-eureka 需要被其它微服務元件存取以進行註冊,所以開啟對內服務,以便之後建立依賴關係。該元件也提供web頁面,顯示微服務元件的註冊情況與健康情況,所以開啟對外服務,以便外部存取。
編輯 構建源 索引標籤,指定 pig-eureka 構建引數:
由於 Pig 本身是一個多模組的專案,所以需要指定當前服務元件構建的模組。指定的方式是在 構建執行環境設定 中的 Maven構建全域性引數:
clean dependency:list install -pl pig-eureka -am
上述的引數指定了普通的子模組構建方式,對於另一種子模組中的子模組,比如 pig-codegen 模組,引數指定的方式為:
clean dependency:list install -pl pig-visual/pig-codegen -am
在v5.1+版本的Rainbond中,可以指定當前服務元件的啟動命令。指定的方式是在 構建執行環境設定 中的 啟動命令:
web: java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/pig-eureka/target/*.jar
命令格式與 Procfile 一致。
編輯 依賴 索引標籤,指定當前服務元件依賴其它服務元件:
各個服務元件之間的依賴關係,可以在建立時指定。所有的 spring cloud 微服務元件都需要依賴 pig-eureka,以 pig-gateway為例,應新增依賴關係如下:
所有的設定完成後,即可點選 構建 ,構建完成後,服務元件將自動執行起來。
將所有服務元件依次部署完成。
Pig 微服務專案需要部署 Mysql 5.7+ 作為資料來源。並在程式碼倉庫中提供了資料庫初始化指令碼:
https://gitee.com/log4j/pig/blob/master/db/pig.sql
為了能夠在資料庫啟動時即載入初始化指令碼,製作了一份 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 目錄下的指令碼放到對應的初始化目錄下 COPY sql/*.sql /docker-entrypoint-initdb.d/ # change ENTRYPOINT exec some custom command ENTRYPOINT [ "/run/docker-entrypoint.sh" ] CMD [ "mysqld" ]
為 spring-cloud 新增服務元件 —— 從原始碼開始 —— 自定義倉庫:
將服務元件命名為 pig-db,並指定程式碼分支 pig。
在程式碼倉庫地址url的最後新增 ?dir=5.7 可以讓Rainbond將構建目錄指定為程式碼倉庫根目錄下的 5.7 資料夾。
為了讓資料庫正常工作,並且可以被其它依賴的本資料庫的應用獲取連線資訊,需要設定若干環境變數:
環境變數名稱 | 環境變數值 | 設定位置 |
---|---|---|
MYSQL_USER | root | 連線資訊 |
MYSQL_HOST | 127.0.0.1 | 連線資訊 |
MYSQL_PORT | 3306 | 連線資訊 |
MYSQL_ROOT_PASSWORD | mysqlpassword | 連線資訊 |
MYSQL_DATABASE | pig | 連線資訊 |
通過修改 pig-config 中的組態檔,來定義多個微服務元件連線資料庫的設定:
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
修改範例如下:
# 資料來源 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
通過Rainbond應用市場,可以直接安裝 Redis 4.0.13。
該版本Redis預設提供連線資訊:
通過修改 pig-config 中的 pig/pig-config/src/main/resources/config/application-dev.yml 來定義所有服務元件連線Redis的設定:
修改範例如下:
# Spring 相關 spring: redis: password: ${REDIS_PASS} host: ${REDIS_HOST}
pig-ui 是一個由nodejs語言編寫的 vue專案,作為整個系統的前端靜態頁面。Rainbond目前已經支援原始碼構建 nodejs前端 專案,參考檔案:NodeJS前端語言
為了便於改造專案,所以將專案 fork 了一份進行修改,程式碼地址:
https://gitee.com/dazuimao1990/pig-ui
參照Rainbond程式碼支援規範,在程式碼根目錄下新增了識別檔案: nodestatic.json
{"path":"dist"}
並在程式碼倉庫中新增了nginx組態檔: www/web.conf 用於處理代理轉發:
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; } }
利用這份程式碼進行原始碼構建,即可完成 pig-ui 服務元件的部署。
服務元件名稱 | 依賴 | 埠對內服務 | 埠對外服務 |
---|---|---|---|
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 |
完成部署後,拓撲圖如下:
登陸效果:
登陸賬戶密碼:
admin
123456
以上就是Rainbond雲原生部署SpringCloud應用架構實踐的詳細內容,更多關於Rainbond部署SpringCloud架構的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45