424 lines
11 KiB
Plaintext
424 lines
11 KiB
Plaintext
文昕
|
||
开发指南-后端
|
||
2024年7月4日创建
|
||
1.环境介绍
|
||
1.应用对外域名https://www.dev.ic
|
||
deas.cnpo
|
||
2.应用线上部署环境是瑞道云容器平台,点击这里访问
|
||
3.JDK版本要求:jdk17,点击这里下载
|
||
5.本地开
|
||
需要将kt-co
|
||
nect启动,才可以访问数据库
|
||
redis等线上中间件,同时也可以访问线上部署的微
|
||
服务。下图是访问应用的3种方式,第一种适合服务间相互调用,第二种适合前后端联调,第三种适合最终用户
|
||
瑞道云(容器平台)
|
||
例后端应用
|
||
本机开发环境
|
||
端道云域名网关
|
||
2.私服地址
|
||
<settings
|
||
(mlns:xsi="http: //www.w3.org/2001/XMLSch
|
||
xsi:schema
|
||
<mirrorof>cent
|
||
梦想云Maven私服地址:https://dev.epaio/nexus/content/groups/public/
|
||
阿里云Maven私服地址:https:/maven.aliyun.com/repository/public/
|
||
3.常用服务
|
||
名称
|
||
地址
|
||
说明
|
||
配置中心服务
|
||
htt:/springclo
|
||
配置中心地址
|
||
http://gitea:3000
|
||
配置中心存储仓库,存放配置文件
|
||
注册用户需要开启二次认证
|
||
网关地址
|
||
http://gateway:4000
|
||
这个是在kt-connect环境下访问的地
|
||
外部网关地址
|
||
4.脚手架
|
||
4.1生成项目代码
|
||
etype:generate
|
||
Di
|
||
DarchetypeGroupId=cnpc.ide
|
||
DarchetypeArtifactId=ideas-arch
|
||
8 -DartifactId=example \
|
||
chetype:
|
||
nerate\
|
||
-Dgrou
|
||
on=1.0.0
|
||
-Scan应及时修改为正确的mapper目录,如下图
|
||
4.2非WEB运行
|
||
一些应用只是用于执行一次性任务,不需要启动WEB监听端口,则可以将Appjava的代码更改为如下格式;
|
||
cnpc.ideas.example.serv
|
||
vice.ConfigService;
|
||
org.springframework.boot.au
|
||
11 @slf4j
|
||
public static void main(String[] args) [
|
||
15
|
||
ApplicationType.NONE);
|
||
builder.run(args);
|
||
19
|
||
ru(写t业逻
|
||
Foo() ;
|
||
5.输入输出
|
||
5.1响应结构
|
||
code":0,// 业务响应码。默认值为0,表示正常。
|
||
处理成功"
|
||
"data":null // 业务数据
|
||
5
|
||
5.2响应编码
|
||
值说明
|
||
示例
|
||
请求被正常处理
|
||
{"code": 0,"me
|
||
"操作处理成功",,"data":null
|
||
通用异常值,在异常信息没有被明确归类
|
||
:"这是一个测试错误","data":nul
|
||
5.3分页请求
|
||
参数名称
|
||
参数值
|
||
pageNo
|
||
页码,从1开始
|
||
pageSize
|
||
每页显示记录数
|
||
是否检索总记录数,如果是 false,则 totai 为 null,在全量同步数据时,建议设置为 false,以加快检索速度
|
||
5.4分页响应
|
||
'message":"操作处理成功",//结果描述信息
|
||
码,从1开始
|
||
pageSize": 2,
|
||
total":3220,//总记录数
|
||
List":[],//
|
||
业务数据
|
||
6.命名规则
|
||
6.1后端应用
|
||
假如要开发后端 example 应用,那么命名中涉及到:数字编码、应用名称、系统编码、lapi 前缀
|
||
分类
|
||
应用名称
|
||
示例应用后端
|
||
说明
|
||
开发平台
|
||
应用编码
|
||
4201example
|
||
数字编码+应用名称,数字编码规则参考
|
||
系统
|
||
ideas2
|
||
开发的应用所属子系统的编码
|
||
负戴名称
|
||
mx-4201example
|
||
格式为:系统编码+应用编码
|
||
瑞道云-服务名称
|
||
mx-4201example
|
||
服务名称不带数字
|
||
后端服务访问地址
|
||
http://mx
|
||
微服务互访使用的地址,本质就是通过
|
||
4201example:8080/api/example
|
||
k8s的serviceName访问
|
||
前端用户访问地址
|
||
http://wv
|
||
路径格式:"/api"+服务名称
|
||
应用
|
||
路径前缀
|
||
代码仓库
|
||
ttp://der
|
||
示例后端
|
||
下载4201example.zip
|
||
代码示例中有两个分支:
|
||
分支
|
||
此分支不依赖外部服务,可以下载后可以直接启动,以便快速体验代码效果
|
||
6.2前端应用
|
||
假如要开发前端example 应用
|
||
那么命名中涉及到:数字编码、应用名称、系统编码、-front后缀
|
||
分类
|
||
应用名称
|
||
示例应用后端
|
||
说明
|
||
开发平台
|
||
应用编码
|
||
5201example-front
|
||
数字编码规贝
|
||
参考目工程命名规范
|
||
系统编码
|
||
ideas2
|
||
开发的应用所属子系统的编码
|
||
瑞道云
|
||
负载编码
|
||
mx-5201example-front
|
||
格式为:系统编码+应用编码
|
||
服务名称
|
||
服务名称不带数字
|
||
用户访问地址
|
||
http://www.
|
||
路径格式:服务名称去除-front 后缀
|
||
路径前缀
|
||
应用
|
||
/example/*
|
||
路径格式:服务名称去除-front 后缀
|
||
代码仓库
|
||
->协同开发子系统->应
|
||
01exampl
|
||
6.3单体应用
|
||
当前的“单体应用”是相对狭义的,指的是前后的都在一
|
||
体应用的命名规则如下:
|
||
分类
|
||
应用名称
|
||
示例应用后端
|
||
说明
|
||
应用编码
|
||
4201example-app
|
||
后缀必须是-app 结尾,
|
||
数字编码规则
|
||
参考目工程命名规范
|
||
系统编码
|
||
开发的应用所属子系统的编码
|
||
瑞道云
|
||
负载编码
|
||
ideas2-5201example-app
|
||
格式为:系统编码+应用编码
|
||
服务名称
|
||
example-app
|
||
服务名称不带数字
|
||
用户访问地址
|
||
http://ww.c
|
||
pc/exmaple
|
||
路径格式:服务名称去除-app 后缀
|
||
?
|
||
应用
|
||
路径前缀
|
||
路径格式:服务名称去除-app 后缀
|
||
后端地址通常为:/example/api/**
|
||
前端地址通常为:/exam
|
||
6.4 GIT
|
||
在简单场景下,可以只有两个分支:develop和 master
|
||
以下是环境和代码分支的关系,制品晋级方式参考目应用部署手册:
|
||
环境
|
||
分支
|
||
说明
|
||
开发环境
|
||
develop、feature/xxx、 hotfxxx
|
||
不稳定分支
|
||
测试环境
|
||
master、标签 V1.x.X
|
||
稳定分支或标签
|
||
预生成环境
|
||
从测试制品库晋级过来
|
||
生产环境
|
||
从预生产制品库晋级过来
|
||
全局配置
|
||
6.5数据库
|
||
1.常用的数据库字段命名参考
|
||
字段编码
|
||
字段类型
|
||
描述
|
||
create_ time
|
||
update_time
|
||
timestamp
|
||
##date
|
||
date
|
||
日期相关命名,格式:yy-M-dd
|
||
create_user_id
|
||
varchar
|
||
创建用户Id
|
||
varchar
|
||
创建用户姓名
|
||
Varchar
|
||
创建用户##
|
||
p!lisn-ajepdn
|
||
varchar
|
||
最后更新用户Id
|
||
aweu lasn-alepdn
|
||
varchar
|
||
最后更新用户姓名
|
||
###JasnTajepdn
|
||
varchar
|
||
最后更新用户##
|
||
2.常用的字段取值参考
|
||
字段名
|
||
字段类型
|
||
参考值
|
||
启用状态
|
||
int
|
||
启用=0
|
||
字典启用状态
|
||
停用=1
|
||
管理员类型
|
||
int
|
||
应用管理员=0
|
||
文件服务管理员类型
|
||
系统管理员=1
|
||
6.6 Redis命名
|
||
Redis 的键必须添加应用前缀标识,比如 4205govern 项目要缓存用户信息到 Redis,则命名规则如下:
|
||
应用名
|
||
Redis 的键前缓
|
||
键示例
|
||
4205govern:
|
||
4205gov
|
||
Isers:(用户ID}
|
||
6.7API参数命名
|
||
参数名
|
||
说明
|
||
##Like
|
||
模糊查询时使用,比如 nameLike
|
||
keyword
|
||
进行多个字段检索时使用,比如使用keywrd同时检索名称和编码
|
||
7.配置中心
|
||
详细说明文档 目udp-config-encryption-startr 配置文件加解密(已经合并到web-starter)
|
||
7.1配置中心
|
||
配置中心的技术栈是 springcloudconfig+git,使用这个技术栈的原因可以参考目配置中心选型,项目使用配置中
|
||
心进行开发,需要以下步骤:
|
||
1.启动安全桌面
|
||
2.启动 kt-connect
|
||
3.访问配置中心 http://itea:3000
|
||
4.注册账号
|
||
7.2加密数据
|
||
: static void main(String[] args) throw
|
||
String base64Key = "xx"
|
||
System.out.println(m
|
||
7.3密文配置
|
||
配置文件中心配置加密后的敏感
|
||
包取
|
||
q:5672
|
||
wpe :aweu
|
||
password: KLldCipher[这里写密文]
|
||
7.4 IDEA配置
|
||
将密钥信息添加到 JVM Options中, 格式为: -Dkld.cofigalgrithm=sma -Dkld.configkey×x
|
||
在启动kt-connect 后,可以从系统环境变量KLD_cONFIG_KEY中获取到 kld.config.key
|
||
密钥配置方式如下图:
|
||
1.编辑配置
|
||
spriAgtiv
|
||
3.输入密钥信息
|
||
Run/Debug Configurations
|
||
ApP
|
||
CApP
|
||
Run on:
|
||
Local
|
||
Manage trgets.
|
||
8.健康检查
|
||
健康检查一般用于应用滚动更新,具体配置参考 目容器探针设计
|
||
9.常见问题
|
||
9.1 容器中访问HTTPS域名
|
||
1. 针对 springboot 项目,将此 Dockefile文件放到项目根目录下
|
||
注意:执行 import-jidk-certs.sh 必须使用 root 权限,不要添加 USER app 指令
|
||
a. JDK17
|
||
ENV JAVA_OPTS=-XX:+UseCon
|
||
ENV
|
||
RUN_ARGS="
|
||
duse
|
||
6.JKD8
|
||
ENV JAVA_OPTS=
|
||
ENV RUN_ARGS=I
|
||
COPY ta
|
||
CMD ["sh",
|
||
-c 'java -jar ${
|
||
2.编辑负载配置,添加JDK_CERT_URLS变量,指向证书下载地址,多个地址使用逗号分割,比如
|
||
JDKCERU=htp//:0/share/mis/deapccrt,t:/s:0/share/is/devidea
|
||
9.2 本地开发访问HTTPS域名
|
||
1.下载以下三个证书文件到任意目录
|
||
集成开发应用支撑系统的HTTPS域名证书
|
||
说明
|
||
dev.ideas.cnpc.crt
|
||
这个是开发环境的证书
|
||
ideas.cnpc.crt
|
||
测试、预生产、生产环境使用的是同一
|
||
_.ideas.cnpc.crt
|
||
这个是MinlO的证书
|
||
2.在证书下载目录下执行导入命令-JDK17
|
||
"d:\jdki7\lib\security\cacerts" -storepass changeit -noprompt
|
||
4导入集成开发应用支撑系统的测试、预生产、生产环境证书
|
||
5 keytool -import -alias ideas.cnpc -file "ideas.cnpc.crt
|
||
"d:\jdk17\lib)security\cacerts" -storepass changeit -noprompt
|
||
注意:1、执行命令前检查环境变量Path中需包含你现使用idk的bin目录
|
||
2、d:jidk17是本文档编辑人本机的JDK地址,实际操作时使用你本地的JDK地址
|
||
3、JDK 密钥库口令是 changeit
|
||
3. 在证书下载目录下执行导入命令 - JDK8
|
||
"d:\jdk8\jre\lib\security\cacerts" -storepass changeit -noprompt
|
||
4#导入集成开发应用支撑系统的测试、预生产、生产环境证书
|
||
5 keytool -import -alias ideas.cnpc -file "ideas.cnpc.crt
|
||
"d:\jdk8\jre\lib\security\cacerts" -storepass changeit -noprompt
|
||
注意:1、执行命令前检查环境变量Path中需包含你现使用idk的bin目录
|
||
2、d:Vidk8是本文档编辑人本机的JDK地址,实际操作时使用你本地的JDK地址
|
||
3、libsecuritylcacerts 是jdk下的jre目录,不是单独的jre
|
||
4、JDK 密钥库口令是 changeit
|
||
9.3 git报ssl错误
|
||
?
|
||
禁用 ssl验证
|
||
9.4变更git地址
|
||
:通过更新配置文件变更指向的远程git仓库地址
|
||
第一
|
||
种方式:
|
||
第二种方式:通过命令行变更
|
||
9.5配置数据库schema
|
||
pguse
|
||
nection-in
|
||
Kt-connect 启动后,会自动将配置文件密钥信息写入到系统环境变量中,变量名称是:
|
||
KLD_CONFIG_ALGORITHM、KLD_CONFIG_KEY,变量写入后,IDE需要重启,才能读取到环境变量,如果不想重
|
||
启,可以将密钥信息添加到 JVMOptions 中,格式为:-Dkld.cofigalgorthm=x-Dkd.configkey=x,如下图:
|
||
编辑配置
|
||
?
|
||
2.显示 VM Optoins 输入框
|
||
√ Active
|
||
3.输入密钥信息
|
||
ApP
|
||
Local
|
||
Manage targets.
|
||
Build and run
|
||
9.7 redis 连接失败
|
||
问:在jvm中设置kt的socks代理,连接依然失败
|
||
答:springcloud中的redis默认不会使用jvm中设置的代理,需要手动读取,以下是4201example 中配置的代码
|
||
io.lettuce
|
||
io.lettuce.core
|
||
11l import javanet.InetSocketAddess;
|
||
16
|
||
@0verride
|
||
public void customize(ClientResources.Builder builder)
|
||
socksProxyPort = Integer
|
||
channel.pipeline();
|
||
pipeline .addFirst(handler);
|
||
需要在 pom.xml中添加这个依赖,Socks5ProxyHandler在此依赖中:
|
||
versi
|
||
5 </dependency>
|
||
9.8找不到这样的主机:redis或sql-proxy
|
||
问:连接了kt,并在jvm中设置了kt的socks代理,但是启动时找不到这样的主机:redis或sql-proxy
|
||
答:修改本地host文件,增加以下配置
|
||
211.96.135.145 sql-pre
|
||
9.9 信任 nexus 证书
|
||
安全桌面访问htps:/dvcloud.cnpc:8081私服下载不了jar包的一个解决办法,自己测试有效
|
||
注意:所有操作都在安全桌面外操作!!
|
||
(1)首先浏览器访问htp:/devcloud.cnpc:8081,参看下图点击浏览器安全设置图标,找到【导出】按钮,导出
|
||
devcloud.cnpc.crt证书文件
|
||
(2)将证书导入jdk的证书库
|
||
会提示输入密钥库
|
||
默认changeit
|
||
会提示是否信任此证书,输入是
|
||
9.10 maven 忽略https验证
|
||
环境变量方式
|
||
命令行方式
|
||
9.11maven构建报错
|
||
可以尝试以下几个步骤修复:
|
||
1.通过环境变量忽略 https 验证
|
||
2.设置.m2/settings.xml 文件
|
||
3.在命令行执行n
|
||
nvn cleanpackage-e-U
|
||
ERROR
|
||
import POM:The
|
||
o.prc
|
||
ERROR
|
||
org.sp
|
||
for cnpc.kld.fr
|
||
10.相关文档
|
||
目后端高码框架用户手册说明文档
|
||
目应用部署手册
|
||
目工程命名规范
|
||
回工程台账
|
||
目数据变更通知服务
|
||
建设中。。。
|
||
建设中。
|
||
建设中。.。
|
||
建设中。。。
|
||
反向引用(2)@
|
||
本文引用(9)
|
||
需求调研清单
|
||
需求调研清单
|
||
?
|