介绍
本文介绍HZERO 开放应用平台->服务选配功能,快速创建具有DDD模板代码 或者依赖 HZERO 服务的项目。 目前支持三种模式:
- 创建父项目:创建一个新的父项目
- 创建新服务:创建一个新的服务,可选择是否生成DDD模板代码,用于快速创建新项目
- 依赖服务创建:依赖某个服务创建,可选择是否生成DDD模板代码
- 批量创建HZERO服务:可快速批量创建HZERO服务
准备工作
- HZERO 微服务应用开发平台链接:http://hzero.saas.hand-china.com/
点击右上角服务选配按钮,进入服务选配页面
创建父项目
- 服务选配页面,选择"创建父项目"模式,可根据自己需要修改项目的各项配置;
- 点击"打开更多选项"按钮,可查看更多的配置属性;
- 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试。
输入字段:
-
Group:项目GroupId;
-
Artifact:父项目ArtifactId;
-
版本号:父项目版本
-
Hzero服务版本:默认最新版本
- 生成的代码结构
创建新服务
- 服务选配页面,选择"新服务"模式,可根据自己需要修改项目的各项配置;
- 点击"打开更多选项"按钮,可查看更多的配置属性;
- 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试。
输入字段:
-
parentType:父项目类型(使用自定义父项目|使用hzero-parent)
-
parentGroupId:父项目GroupId
-
parentArtifactId:父项目ArtifactId
-
parentVersion:父项目版本号
-
Hzero服务版本:Hzero版本号
-
配置中心:配置中心类型,可选:SpringCloud|Nacos|Formula|Apollo
-
注册中心:注册中心类型,可选:Eureka|Zookeeper|Nacos|Formula
-
Group:项目GroupId;
-
Artifact:项目ArtifactId;
-
组件:项目使用的hzero组件
-
Name:项目名称
-
Package Name:包名
-
Server Port:项目端口
-
projectCode:服务简码
-
projectRoute:服务路由
-
Description:项目描述
-
数据库类型:可选MySql|Oracle|SqlServer
-
数据库Schema:非必输
-
数据库用户名:非必输
-
数据库密码:非必输
-
生成的代码结构
依赖服务创建
- 服务选配页面,选择"依赖服务"模式,可根据自己需要选择对应的Hzero依赖服务;
- 点击"打开更多选项"按钮,可查看更多的配置属性;
- 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试。
输入字段:
-
parentType:父项目类型(使用自定义父项目|使用hzero-parent)
-
parentGroupId:父项目GroupId
-
parentArtifactId:父项目ArtifactId
-
parentVersion:父项目版本号
-
Hzero服务版本:Hzero版本号
-
配置中心:配置中心类型,可选:SpringCloud|Nacos|Formula|Apollo
-
注册中心:注册中心类型,可选:Eureka|Zookeeper|Nacos|Formula
-
Group:项目GroupId;
-
Artifact:项目ArtifactId;
-
Hzero服务:可多选,选择需要依赖的Hzero服务
-
Name:项目名称
-
Package Name:包名
-
Server Port:项目端口
-
是否使用DDD:创建时是否生成DDD模版代码
-
Hzero服务版本:默认最新版本
-
projectCode:服务简码
-
projectRoute:服务路由
-
Description:项目描述
-
数据库类型:可选MySql|Oracle|SqlServer
-
数据库Schema:非必输
-
数据库用户名:非必输
-
数据库密码:非必输
-
生成的代码结构
批量创建HZERO服务
- 服务选配页面,选择"批量HZERO服务"模式,可根据自己需要批量选择对应的Hzero服务;
- 点击"打开更多选项"按钮,可查看更多的配置属性;
- 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试;
- 当勾选的服务过多时,可能会花费较多时间,请耐心等待。
输入字段:
-
parentType:父项目类型(使用自定义父项目|使用hzero-parent)
-
parentGroupId:父项目GroupId
-
parentArtifactId:父项目ArtifactId
-
parentVersion:父项目版本号
-
配置中心:配置中心类型,可选:SpringCloud|Nacos|Formula|Apollo
-
注册中心:注册中心类型,可选:Eureka|Zookeeper|Nacos|Formula
-
项目类型:SAAS版本|OP版本
-
服务前缀:必输
-
Hzero服务:单选,选择需要依赖的Hzero服务
-
Hzero服务版本:默认最新版本
-
生成的代码结构
服务部署
- 服务部署及数据初始化请参考 服务器本地安装
服务快速启停
- 在基于服务器本地部署的情况下,如需快速启停服务,可参考以下脚本
#!/bin/bash
readonly PRODUCT="hzero"
# 服务列表
readonly SERVICE=(
$PRODUCT-register
$PRODUCT-config
$PRODUCT-gateway
$PRODUCT-gateway-helper
$PRODUCT-oauth
$PRODUCT-swagger
$PRODUCT-iam
$PRODUCT-platform
$PRODUCT-asgard
$PRODUCT-file
$PRODUCT-message
)
# 自定义参数
readonly IP="192.168.***.***"
readonly DATABASE_URL="jdbc:mysql://$IP:3306/{databaseName}?useSSL=false&useUnicode=true&characterEncoding=utf-8"
readonly DATABASE_USERNAME="hzero"
readonly DATABASE_PASSWORD="*****"
readonly REDIS_HOST="$IP"
readonly LOGGING_PATH="log"
readonly LOGGING_LEVEL="info"
readonly WAIT=30
readonly JAVA_OPTS="-Xms512m -Xmx1024m"
readonly API_PORT="8080"
# 环境参数
readonly E1="--EUREKA_DEFAULT_ZONE=http://$IP:8000/eureka"
readonly E2="--SPRING_CLOUD_CONFIG_URI=http://$IP:8010"
readonly E3="--CHOERODON_OAUTH_LOGIN_SUCCESS_URL=http://$IP/workplace"
readonly E4="--HZERO_OAUTH_URL=http://$IP:$API_PORT/oauth/oauth/authorize"
readonly E5="--HZERO_GATEWAY_DOMAIN=$IP:$API_PORT"
# 数据源参数
readonly D1="--SPRING_DATASOURCE_URL=$DATABASE_URL"
readonly D2="--SPRING_DATASOURCE_USERNAME=$DATABASE_USERNAME"
readonly D3="--SPRING_DATASOURCE_PASSWORD=$DATABASE_PASSWORD"
readonly D4="--SPRING_REDIS_HOST=$REDIS_HOST"
# 其他参数
readonly O1="--LOGGING_LEVEL=$LOGGING_LEVEL"
function stopService() {
echo "[$$]stop service : $1"
kill -9 $(jps -ml | grep $1 | awk '{print $1}') > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo "[$$]stop success : $1"
else
echo "[$$]stop failed : $1"
fi
}
function startService() {
echo "[$$]start service : $1"
case $1 in
"$PRODUCT-config" | "$PRODUCT-governance" | "$PRODUCT-swagger")
databaseName="hzero_governance"
;;
# 需要启用更多的服务,将服务名称直接追加在后面
"$PRODUCT-asgard" | "$PRODUCT-file" | "$PRODUCT-message")
databaseName="hzero_$(echo $1 | cut -d - -f 2-)"
;;
*)
databaseName="hzero_platform"
;;
esac
startEnv="$E1 $E2 $E3 $E4 $E5 $D1 $D2 $D3 $D4 $O1"
loggingPath="$LOGGING_PATH/$1"
mkdir -p $loggingPath
nohup java $JAVA_OPTS -jar $1.jar ${startEnv//"{databaseName}"/$databaseName} > "$loggingPath/app.log" &
echo "[$$]start success : $1"
}
function restartService() {
stopService $1
startService $1
}
# -----------------------------------------------
# Process options with priority
# -----------------------------------------------
if [[ $1 == '--kill-em-all' ]]; then
jps -ml | grep $PRODUCT | awk '{print $1}' | xargs kill -9
exit $?
fi
if [[ "$#" -gt 0 ]]; then
echo "[$$]Restart : $*"
echo "[$$"
for service in $*
do
restartService $service
echo "[$$]wait $WAIT s to start : $service"
echo "[$$]"
sleep $WAIT
done
else
echo "[$$]Restart : ${SERVICE[*]}"
echo "[$$]"
for service in ${SERVICE[@]}
do
restartService $service
echo "[$$]wait $WAIT s to start : $service"
echo "[$$]"
sleep $WAIT
done
fi
echo "[$$]SUCCESS!"