配置管理平台cicd

1 技术栈: vue, nodejs, nginx, nacos, springboot, springcloud, mybatis-plus, redission,kafka, apllo, jenkins, sonarqube(代码规范扫描), iqserver平台(漏洞包扫描), neo4j, mysql, mongodb

 2 后端项目架构: parent(定义依赖包版本和插件版本), model, common, gateway, core(其它数据库放在这里查询), query(查询neo4j数据库)

 3 业务: 模型管理,资源管理,模型关系,资源关系,资源管理角色(是资源角色的父级), 资源角色, 系统角色, 操作日志, 告警模块,报表模块,首页模型资源信息统计展示, 模型资源变更记录等

模型和资源都是动态增删改, 使用mogondb存储资源信息,mysql存储模型信息, 资源关系和模型关系存储在neo4j中, 日志存储在mongodb中

使用ldap域账号登陆, 每天定时同步ad组和ad用户信息过来;

资源管理角色是给部门管理人员使用,拥有资源管理角色才能配置资源增删改导入导出权限给部门人员

事先定义好一些角色模板,以及权限模板,在新增模型时会通过模板初始化一些角色权限信息,比如默认创建资源管理角色给模型负责人; 

资源权限是动态的,所以需要模板表去定义,例如: /${modelCode}/resource/add    当需要添加资源权限时会从模板表获取这些权限code

,然后替换成具体的, 例如: /software/resource/add

redis: dev,sit是单击版,uat和prod采用哨兵模式;

neo4j使用的是单击版(集群版费用太高)

nacos启动后可以访问nacos网站,会看到服务发布端和服务调用端;

4 表:

收藏目录表,模型图标表,模型表,资源表,资源模型关联表,ad用户表,ad组表,ad用户和ad组关联表,角色表

,权限功能code表(系统权限code, 资源权限code, 资源管理权限code, 第三方token权限code),  后端接口表(与功能code多对多关系,  例如: /model/add )

角色与功能关联表(存功能code而非功能表id)

5. 亮点

5.1 通过执行链将资源相关操作的接口进行参数各种校验,例如: 枚举类型值校验,时间格式校验,数字最大最小校验,非空校验,ipv4校验等

5.2 通过redission自带的分布式锁注解功能,对模型新增修改接口加分布式锁,保持数据一致性; 如果超时会自动释放锁

      原因: 模型新增时会发送kafka消息给query服务新增模型数据到neo4j数据库,同时也会新增资源管理角色,模型新增等等操作;

6 在pom文件中,项目接入了cicd配置;可以使用jenkins部署, 通过jenkins安装jdk和nginx; 每次部署之前先进行代码扫描到sonarQube平台; 配置都放在apollo中

,并且对漏洞包使用IqServer平台进行扫描, 一般升级版本或者使用其它方式去实现功能,如果实在解决不了,再发邮件申请安全审批漏洞包

 

posted @ 2023-03-23 22:55  剑阁丶神灯  阅读(127)  评论(0编辑  收藏  举报