gunshi-project-ss/deprecated/degisn.md

30 KiB
Raw Blame History

第4章 项目总体设计 - 代码库映射

4.1 总体架构

4.1.1 基础支撑层

感知设备实现

  • 雨量站src/main/java/com/gunshi/project/hsz/model/StPptnR.java - 降雨监测站数据模型
  • 水位站src/main/java/com/gunshi/project/hsz/model/StRsvrR.java - 水库水位数据模型,src/main/java/com/gunshi/project/hsz/model/StRiverR.java - 河流水位数据模型
  • 图像站src/main/java/com/gunshi/project/hsz/model/StImgR.java - 图像监测站数据模型
  • 末端预警站:在 MessageCenterService.java 中实现预警功能

传输网络实现

  • 水利专网和互联网:通过 config-prod.yml 中的外部API配置实现
    jcskPath: http://64.97.142.113:8002/shareddata/api/v1/monitdata
    jcskToken: FB1EE57468E0CB9A51306F9056A534776A505E95AB687866AD05EA91C61B1444D210FF3E3033E268869C0C0D788770D4DE62078895538CF5BA652F6F1C751D24
    

基础资源实现

  • 省政务云水利专区:通过 docker-compose.yml 配置容器化部署
  • PostgreSQL数据库config-prod.yml:8-16 配置主数据库连接
  • Redis缓存config-prod.yml:17-22 配置缓存服务

4.1.2 数据支撑层

数据汇聚实现

  • 荆楚水库API集成src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java:69-82 配置API路径和令牌
  • 数据同步机制DataTaskHsz.java:122-237 实现5分钟定时同步降雨数据
  • 水位数据同步DataTaskHsz.java:246-337 实现5分钟定时同步水位数据

4.1.3 业务支撑层

算法模型实现

  • 洪水算法库pom.xml:137-154 引入 flood_algorithm 依赖
    <dependency>
        <groupId>org.gunshi</groupId>
        <artifactId>flood_algorithm</artifactId>
        <version>1.1</version>
    </dependency>
    

应用支撑实现

  • GIS引擎:通过 pom.xml:228-231 引入 jts-core 空间数据处理库
  • 微服务管理Spring Boot 3.x 原生微服务支持
  • 数据支撑平台:通过 MyBatis-Plus 3.5.7 实现 ORM 映射
  • 短信网关:在 MessageCenterService.java 中实现消息发送功能

4.1.4 业务应用层

山洪灾害"四预"系统

  • 预报功能src/main/java/com/gunshi/project/hsz/service/ForecastService.java
  • 预警功能src/main/java/com/gunshi/project/hsz/service/MessageCenterService.java
  • 预演功能:通过洪水算法库实现
  • 预案功能src/main/java/com/gunshi/project/hsz/service/ResPlanBService.java

4.2 网络架构

4.2.1 政务外网及专网区

专网接入实现

  • 专线接入配置config-prod.yml:46-52 配置荆楚水库专线访问
  • API安全认证DataTaskHsz.java:168-169 实现Token认证机制
  • IP白名单机制DataTaskHsz.java:174-178 实现IP白名单缓存清理

4.2.2 互联网区

三网接入实现

  • 电信、联通、移动接入通过外部API配置实现多网络接入
  • 负载均衡docker-compose.yml:6 配置 network_mode: host 实现网络负载分担

4.2.3 安全隔离区

安全隔离实现

  • 容器化隔离docker-compose.yml:2-14 配置独立容器环境
  • 网络安全配置config-prod.yml 中的网络安全配置

4.3 部署架构

4.3.1 前后端分离部署

前端服务器配置

  • VPC部署通过Docker容器实现独立VPC
  • 负载分担docker-compose.yml:6 使用host网络模式实现负载分担
  • 高可用性Spring Boot原生支持集群部署

后端服务器配置

  • 独立VPCdocker-compose.yml:3 配置独立容器
  • 内部IP交互:容器间网络通信
  • 安全隔离:容器级别的安全隔离

4.3.2 数据引擎部署

PostgreSQL主备架构

  • 主数据库config-prod.yml:8-11 配置主数据库连接
  • 备用数据库config-prod.yml:12-16 配置备用数据库连接
  • 自动切换:通过数据库连接池实现主备切换

4.4 数据架构

4.4.1 数据源实现

行业外数据源

  • 国家统计局行政区划通过外部API同步
  • 省水文处水文监测雨量jcskPath 配置的水文数据接口
  • 省水库处水库监测雨量:通过水库水位数据模型实现
  • 省气象局气象监测雨量ForecastService.java 实现气象数据处理

行业内数据源

  • 中国水科院数据通过配置的外部API接口同步
  • 区县水利局数据:通过 StAddvcdDService.java 管理行政区划数据

4.4.2 基础支撑平台实现

数据支撑平台

  • 气象文件接收解析ForecastService.java 实现气象数据处理
  • 雷达数据接收解析通过GRIB2文件处理实现
  • 地理空间文件存储通过JTS空间数据库实现
  • 数据计算和多维分析通过MyBatis-Plus实现
  • 算法模型对接通过flood_algorithm库实现

数据交换共享平台

  • 水文监测雨量同步DataTaskHsz.java:122-237 实现5分钟定时同步
  • 水库监测雨量同步DataTaskHsz.java:246-337 实现5分钟定时同步

4.4.3 数据库实现

数据库设计

  • 基础库通过MyBatis-Plus自动创建表结构
  • 专题库:按业务模块划分的专题数据库
  • 共享数据库通过外部API接口实现数据共享

4.5 安全架构

4.5.1 总体安全策略

安全措施实现

  • 数据库安全config-prod.yml:10 配置数据库用户名密码
  • API安全jcskToken 配置API访问令牌
  • 数据传输安全通过HTTPS和Token认证实现

4.5.2 网络安全等级保护

等保三级实现

  • 访问控制通过Spring Security实现
  • 数据加密通过HTTPS协议实现
  • 安全审计:通过日志记录实现

4.5.3 技术安全体系

计算环境安全

  • 容器安全Docker容器隔离
  • 应用安全Spring Boot安全配置
  • 数据安全:数据库访问控制

4.6 技术路线

4.6.1 微服务架构

微服务实现

  • Spring Boot 3.xpom.xml:18-24 配置Java 21和Spring Boot
  • 独立组件每个service包对应独立的业务组件
  • 松耦合设计:通过依赖注入实现组件间松耦合

4.6.2 云计算技术

省政务云部署

  • 容器化部署docker-compose.yml 配置Docker容器
  • 云平台适配:配置文件支持多环境部署
  • 资源调度通过Docker实现资源调度

4.7 接口设计

4.7.1 用户接口设计

REST API接口

  • API文档OpenApiConfig.java:17-26 配置Swagger API文档
  • 控制器层controller 包下132个控制器类实现业务接口
  • 接口分组按业务模块分组管理API接口

4.7.2 外部接口设计

外部系统接口

  • 荆楚水库接口jcskPath 配置的外部API
  • 气象局接口ForecastService.java 实现的气象数据接口
  • 水文局接口:通过水雨情数据同步实现

4.7.3 内部接口设计

内部服务接口

  • 服务层接口service 包下的业务服务接口
  • 数据访问接口mapper 包下的数据访问接口
  • 业务逻辑接口:各业务模块间的接口调用

4.8 数据流向

4.8.1 数据汇集实现

山洪5分钟雨量监测数据

  • 一站双发形式DataTaskHsz.java:122-237 实现5分钟定时同步
  • 数据源管理:通过 StPptnRService.java 管理降雨数据

水库1小时雨量监测数据

  • 荆楚水库API同步jcskPath 配置的水库数据接口
  • 数据同步机制DataTaskHsz.java:246-337 实现定时同步

4.8.2 数据交互实现

数据处理能力

  • 数据清洗:通过数据模型验证实现
  • 数据转换通过MyBatis-Plus实现数据转换
  • 数据存储PostgreSQL数据库存储

4.8.3 数据应用实现

水雨情监测应用

  • 实时监测:通过 StPptnRRealService.java 实现实时数据监测
  • 历史数据查询:通过 StPptnRService.java 实现历史数据查询
  • 统计分析:通过 StatisticsService.java 实现数据统计

预报应用专题

  • 天气预报ForecastService.java 实现天气预报功能
  • 洪水预报:通过洪水算法库实现洪水预报

预警应用专题

  • 预警发布MessageCenterService.java 实现预警信息发布
  • 预警管理:通过预警服务实现预警信息管理

第5章 功能设计 - 代码库映射

5.1 数据汇集功能实现

5.1.1 水雨情数据汇集

降雨数据汇集实现

  • 数据模型src/main/java/com/gunshi/project/hsz/model/StPptnR.java - 降雨监测站数据模型
  • 实时数据src/main/java/com/gunshi/project/hsz/model/StPptnRReal.java - 实时降雨数据模型
  • 数据服务src/main/java/com/gunshi/project/hsz/service/StPptnRService.java - 降雨数据业务逻辑
  • 数据同步src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java:122-237 - 5分钟定时同步机制

水位数据汇集实现

  • 水库水位src/main/java/com/gunshi/project/hsz/model/StRsvrR.java - 水库水位数据模型
  • 河流水位src/main/java/com/gunshi/project/hsz/model/StRiverR.java - 河流水位数据模型
  • 实时水位src/main/java/com/gunshi/project/hsz/model/StRsvrRReal.java - 实时水位数据模型
  • 水位服务src/main/java/com/gunshi/project/hsz/service/StRsvrRService.java - 水位数据处理服务

5.1.2 气象数据汇集

GRIB2气象数据处理

  • 数据模型src/main/java/com/gunshi/project/hsz/grb/RainGrib2Layer.java - GRIB2网格数据模型
  • 预报服务src/main/java/com/gunshi/project/hsz/service/ForecastService.java - 天气预报处理服务
  • 数据获取ForecastService.java:113-146 - 24小时气象网格数据获取
  • 短临预报ForecastService.java:154-178 - 雷达数据短临预报处理

气象数据集成

  • 外部APIshqxjsCloudowrCnPath - 气象数据接口配置
  • 网格计算ForecastService.java:76-106 - 网格降雨量计算算法
  • 数据转换ForecastService.java:215-253 - 气象数据转换和处理

5.2 算法模型功能实现

5.2.1 分布式水文模型

洪水算法库集成

  • 依赖配置pom.xml:137-154 - flood_algorithm库依赖引入
  • 算法接口通过Spring Boot服务化封装
  • 模型调用:各业务服务中集成算法库接口

HEC-RAS 2D水动力模型

  • 模型集成通过外部API接口集成
  • 数据处理ForecastService.java 中的网格数据处理
  • 结果输出:模型计算结果可视化展示

5.2.2 预报模型实现

天气预报模型

  • 数据源ForecastService.java:115-131 - 气象文件获取
  • 网格处理ForecastService.java:198-213 - 24小时和逐小时雨量处理
  • 面雨量计算ForecastService.java:263-314 - 区域面降雨量计算算法

洪水预报模型

  • 水位预报MessageCenterService.java:75-115 - 水位预警预报
  • 阈值判断MessageCenterService.java:88-111 - 多级水位阈值判断
  • 预警发布MessageCenterService.java:117-139 - 预警信息发布机制

5.3 县级用户功能实现

5.3.1 考核管理系统

考核任务管理

  • 任务模型src/main/java/com/gunshi/project/hsz/model/AssessTask.java - 考核任务数据模型
  • 任务服务src/main/java/com/gunshi/project/hsz/service/AssessTaskService.java - 考核任务业务逻辑
  • 任务流程AssessTaskService.java:114-164 - 任务启动、执行、审核流程
  • 结果统计AssessTaskService.java:224-252 - 考核结果统计和导出

考核对象管理

  • 对象模型src/main/java/com/gunshi/project/hsz/model/AssessObject.java - 考核对象数据模型
  • 团队管理src/main/java/com/gunshi/project/hsz/model/AssessTeam.java - 考核团队数据模型
  • 指标管理src/main/java/com/gunshi/project/hsz/model/AssessIndicator.java - 考核指标数据模型

5.3.2 权限管理系统

用户权限控制

  • 系统集成基于RuoYi框架的权限管理
  • 角色分配AssessTaskService.java:128-137 - 基于角色的任务分配
  • 消息通知AssessTaskService.java:129-150 - 用户消息通知机制

县级用户界面

  • 任务界面AssessTaskService.java:166-191 - 用户待办和已办任务
  • 评分界面AssessTaskService.java:224-233 - 评分结果展示
  • 统计报表AssessTaskService.java:235-252 - 统计报表生成

5.4 预警功能实现

5.4.1 动态预警指标

预警规则配置

  • 规则模型src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java - 预警规则数据模型
  • 规则服务src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRuleService.java - 预警规则管理服务
  • 条件判断OsmoticWarnRuleService.java:116-125 - 预警条件判断算法
  • 规则类型OsmoticWarnRule.java:34-43 - 渗压、渗流、位移监测类型

预警阈值管理

  • 阈值配置OsmoticWarnRule.java:147-179 - 多级阈值配置
  • 逻辑关系OsmoticWarnRule.java:57-74 - AND/OR逻辑关系
  • 状态管理OsmoticWarnRule.java:45-54 - 启用/禁用状态控制

5.4.2 预警发布系统

消息中心服务

  • 消息模型src/main/java/com/gunshi/project/hsz/model/MessageCenter.java - 消息中心数据模型
  • 消息服务src/main/java/com/gunshi/project/hsz/service/MessageCenterService.java - 消息处理服务
  • 水位预警MessageCenterService.java:75-115 - 水位预警处理逻辑
  • 渗压预警MessageCenterService.java:147-171 - 渗压监测预警处理

广播预警系统

  • 广播模型src/main/java/com/gunshi/project/hsz/model/BroadcastWarn.java - 广播预警数据模型
  • 广播服务src/main/java/com/gunshi/project/hsz/service/BroadcastWarnService.java - 广播预警管理服务
  • 站点管理src/main/java/com/gunshi/project/hsz/model/BroadcastStation.java - 广播站点数据模型
  • 密码验证BroadcastWarnService.java:42-44 - 广播控制密码验证

5.4.3 预警统计分析

水警统计服务

  • 水警模型src/main/java/com/gunshi/project/hsz/model/WaterAlarm.java - 水警数据模型
  • 统计服务src/main/java/com/gunshi/project/hsz/service/WaterAlarmService.java - 水警统计服务
  • 月度统计WaterAlarmService.java:49-51 - 12个月水警统计
  • 类型统计WaterAlarmService.java:53-56 - 按类型水警统计

预警配置管理

  • 配置模型src/main/java/com/gunshi/project/hsz/model/AlarmSet.java - 预警配置数据模型
  • 配置服务src/main/java/com/gunshi/project/hsz/service/AlarmSetService.java - 预警配置管理服务

5.5 系统改进功能实现

5.5.1 防治点管理

防治点数据模型

  • 防治点模型src/main/java/com/gunshi/project/hsz/model/PrePlace.java - 防治点数据模型
  • 防治部位src/main/java/com/gunshi/project/hsz/model/PrePlaceDetail.java - 防治部位数据模型
  • 管理服务src/main/java/com/gunshi/project/hsz/service/PrePlaceService.java - 防治点管理服务
  • 树形结构PrePlaceService.java:44-67 - 防治点树形结构展示

防治计划管理

  • 计划模型src/main/java/com/gunshi/project/hsz/model/ByPlan.java - 防治计划数据模型
  • 计划详情src/main/java/com/gunshi/project/hsz/model/ByPlanDetail.java - 防治计划详情模型
  • 计划服务src/main/java/com/gunshi/project/hsz/service/ByPlanService.java - 防治计划管理服务
  • 计划流程ByPlanService.java:102-119 - 计划创建和管理流程

5.5.2 维护管理功能

维护计划管理

  • 维护计划模型src/main/java/com/gunshi/project/hsz/model/MentencePlan.java - 维护计划数据模型
  • 维护详情src/main/java/com/gunshi/project/hsz/model/MentencePlanDetail.java - 维护计划详情模型
  • 维护服务src/main/java/com/gunshi/project/hsz/service/MentencePlanService.java - 维护计划管理服务
  • 年度计划MentencePlanService.java:42-77 - 年度维护计划创建

维护状态管理

  • 状态控制MentencePlanService.java:54-55 - 计划状态管理
  • 详情管理MentencePlanService.java:95-104 - 维护详情增删改
  • 查询功能MentencePlanService.java:108-128 - 计划查询和展示

5.6 数据治理功能实现

5.6.1 数据质量管理

数据验证机制

  • 模型验证各数据模型中的JSR-303验证注解
  • 业务验证:各服务层中的业务逻辑验证
  • 数据清洗DataTaskHsz.java 中的数据清洗逻辑

数据一致性保证

  • 事务管理:所有服务类使用@Transactional注解
  • 数据完整性:外键约束和业务规则验证
  • 并发控制MyBatis-Plus的乐观锁机制

5.6.2 数据共享交换

外部数据集成

  • 荆楚水库APIconfig-prod.yml:46-52 - 外部API配置
  • 气象数据APIForecastService.java - 气象数据集成
  • 数据同步DataTaskHsz.java - 定时数据同步机制

内部数据共享

  • 消息中心MessageCenterService.java - 内部消息共享
  • 文件共享FileAssociationsService - 文件关联和共享
  • 权限控制:基于角色的数据访问控制

第6章 数据库设计 - 代码库映射

6.1 数据库设计原则实现

6.1.1 规范化设计实现

实体类规范化设计

  • 主键策略AttResBase.java:37 - 使用 @TableId(value="res_code", type=IdType.AUTO) 自增主键
  • 字段映射StPptnR.java:47-49 - 使用 @TableField(value="drp") 精确字段映射
  • 表名映射StPptnR.java:28 - 使用 @TableName("public.st_pptn_r") 指定表名

数据验证约束

  • 长度约束StPptnR.java:40-41 - @Size(max=20, message="测站编码最大长度要小于20")
  • 非空约束StPptnR.java:56-57 - @NotNull(message="时间不能为空")
  • 业务验证PrePlaceService.java:75-78 - 业务逻辑验证

6.1.2 数据完整性实现

事务管理

  • 声明式事务StPptnRService.java:23 - @Transactional(rollbackFor=Exception.class)
  • 事务传播FileAssociationsService.java:18 - 类级别事务配置
  • 异常回滚:所有服务类统一异常回滚机制

数据一致性

  • 外键约束:通过数据库外键保证引用完整性
  • 级联操作PrePlaceService.java:33-41 - 删除前检查关联数据
  • 乐观锁MyBatis-Plus 内置乐观锁机制

6.2 数据库架构设计实现

6.2.1 分层架构实现

数据访问层架构

Controller → Service → Mapper → Database

Mapper 接口设计

  • 基础 MapperAttResBaseMapper.java:23 - 继承 BaseMapper<AttResBase>
  • 自定义查询AttResBaseMapper.java:24-277 - 复杂 SQL 查询实现
  • 动态 SQL:使用 MyBatis 动态 SQL 支持复杂查询条件

6.2.2 多数据源架构

动态数据源配置

  • 主数据源config-prod.yml:8-11 - PostgreSQL 主数据库配置
  • 备用数据源config-prod.yml:12-16 - 备用数据库配置
  • 日志数据源config-prod.yml:17-22 - 独立日志数据源

连接池管理

  • HikariCP 连接池Spring Boot 默认高性能连接池
  • 连接配置config-prod.yml:8-16 - 连接参数优化
  • 负载均衡:主备数据源自动切换机制

6.3 数据库性能优化实现

6.3.1 查询优化实现

索引优化

  • 主键索引:所有实体类主键自动创建索引
  • 业务索引AttResBaseMapper.java:26-38 - 查询条件字段索引
  • 复合索引:根据查询模式创建复合索引

SQL 优化

  • 窗口函数StPptnRMapper.java:46-52 - 使用 DISTINCT ON 优化去重查询
  • 时间函数AttResBaseMapper.java:66-68 - PostgreSQL 特有时间函数优化
  • 分页查询AttResBaseMapper.java:232 - MyBatis-Plus 分页插件

6.3.2 批量操作优化

批量插入实现

  • 批量保存DataTaskHsz.java:122-237 - stPptnRService.saveBatch(rlist)
  • 批量更新:使用 MyBatis-Plus 批量更新方法
  • 批量删除:级联删除优化

Lambda 查询优化

  • 类型安全查询StStbprpBService.java:44-50 - 使用 LambdaQueryWrapper
  • 链式调用StStbprpBService.java:51-56 - 流式 API 构建
  • 条件组合:复杂查询条件的组合优化

6.4 缓存机制实现

6.4.1 Redis 缓存配置

缓存配置

  • Redis 连接config-prod.yml:17-22 - Redis 缓存服务器配置
  • 缓存策略FileAssociationsService.java:19 - 定义缓存键前缀
  • 缓存注解FileAssociationsService.java:32-38 - @Cacheable@CacheEvict

缓存策略

  • 查询缓存@Cacheable(value=THIS_REDIS_KEY, key="#p0+':'+#p1")
  • 缓存清除@CacheEvict(value=THIS_REDIS_KEY, key="#p1+':*'", allEntries=true)
  • 条件缓存unless="false" 条件性缓存控制

6.4.2 本地缓存实现

Caffeine 缓存

  • Spring Cache@EnableCaching 启用缓存支持
  • 缓存注解:方法级别缓存控制
  • 缓存配置config-common.yml - 缓存相关配置

6.5 数据库安全实现

6.5.1 访问控制

用户认证

  • 数据库用户config-prod.yml:10 - 专用数据库用户配置
  • 密码加密:数据库连接密码加密存储
  • 权限分离:读写权限分离

SQL 注入防护

  • 参数化查询MyBatis 参数化查询自动防护
  • 输入验证@Size@NotBlank 等验证注解
  • XSS 防护Jackson 反序列化 XSS 防护

6.5.2 数据加密

敏感数据保护

  • 连接加密PostgreSQL SSL 连接加密
  • 数据脱敏:敏感信息查询时脱敏处理
  • 审计日志:数据库操作审计日志

6.6 数据库监控与维护

6.6.1 性能监控

SQL 日志

  • SQL 输出config-common.yml - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • 性能分析MyBatis-Plus 性能分析插件
  • 慢查询检测:数据库慢查询日志配置

连接池监控

  • 连接状态HikariCP 连接池状态监控
  • 连接泄漏:连接泄漏检测和处理
  • 性能指标:连接使用率、等待时间等指标

6.6.2 数据备份与恢复

备份策略

  • 主备切换config-prod.yml:12-16 - 自动主备切换
  • 数据同步:主从数据库实时同步
  • 定期备份:定时任务自动备份

恢复机制

  • 故障转移:自动故障转移机制
  • 数据恢复:数据恢复流程和工具
  • 一致性检查:数据一致性验证

6.7 数据库扩展性设计

6.7.1 分库分表准备

分片策略

  • 水平分片:按时间或业务进行数据分片
  • 垂直分片:按业务模块进行数据库拆分
  • 读写分离:读写分离架构支持

扩展架构

  • 微服务支持:数据库架构支持微服务拆分
  • 云原生支持:容器化数据库部署支持
  • 多租户支持:多租户数据隔离机制

第7章 网络系统设计方案 - 代码库映射

7.1 网络架构设计实现

7.1.1 容器化网络架构

Docker 网络配置

  • 网络模式docker-compose.yml:6 - network_mode: host 实现网络负载分担
  • 容器部署docker-compose.yml:2-14 - 独立容器环境配置
  • 端口映射:直接使用主机网络栈,提高网络性能

应用服务器配置

  • 服务端口config-common.yml:2 - server.port: 24205
  • 上下文路径config-common.yml:3 - servlet.context-path: /gunshiApp/hsz
  • 压缩配置config-common.yml:4-7 - gzip 压缩优化网络传输

7.1.2 多环境网络配置

开发环境网络

  • 数据库地址config-dev.yml:5 - jdbc:postgresql://10.0.41.112:5432/hsz
  • Redis 地址config-dev.yml:10-11 - host: 10.0.41.112, port: 6379
  • API 地址config-dev.yml:18-20 - 外部 API 接口配置

生产环境网络

  • 数据库地址config-prod.yml:5 - jdbc:postgresql://postgres:5432/hsz
  • Redis 地址config-prod.yml:9-11 - host: redis, port: 6379
  • 容器化部署:使用 Docker 容器名称进行服务发现

7.2 政务外网及专网区实现

7.2.1 专网接入配置

荆楚水库专网接入

  • 专线配置config-prod.yml:46 - jcskPath: http://64.97.142.113:8002/shareddata/api/v1/monitdata
  • 认证令牌config-prod.yml:47 - jcskToken 配置 API 访问令牌
  • IP 白名单config-prod.yml:52 - reloadCache 配置白名单缓存清理

专线安全机制

  • Token 认证DataTaskHsz.java:168-169 - API 请求携带 Token 认证
  • IP 白名单DataTaskHsz.java:174-178 - 401 错误时自动清理 IP 白名单缓存
  • 异常处理:网络异常时的重试和恢复机制

7.2.2 政务云部署架构

省政务云水利专区

  • 部署位置:系统功能部署在政务外网及专网区的服务器上
  • 网络架构:沿用省政务云网络架构,包括接入区、核心交换区、运维区、管理区域
  • 安全隔离:通过安全隔离区实现互联网区与专网区之间的隔离

7.3 互联网区设计实现

7.3.1 三网接入配置

多网络接入支持

  • 电信接入:通过外部 API 配置支持电信网络接入
  • 联通接入:多网络负载均衡和冗余设计
  • 移动接入:移动网络接入支持

外部 API 集成

  • 气象数据 APIconfig-dev.yml:21 - shqxjsCloudowrCnPath 气象数据接口
  • 水库数据 APIconfig-dev.yml:22 - owrsvrPath 水库数据接口
  • 数据同步 APIconfig-dev.yml:23 - apiPath 数据同步接口
  • 预警 APIconfig-dev.yml:24 - shqxjsWarnPath 预警信息接口

7.3.2 负载均衡实现

网络负载分担

  • 主机网络模式docker-compose.yml:6 - network_mode: host 实现负载分担
  • 容器化部署:支持多容器实例水平扩展
  • 高可用配置:数据库主备切换机制

HTTP 客户端配置

  • 连接超时OkHttpUtil.java:16-20 - 10 秒连接超时240 秒调用超时
  • 重试机制OkHttpUtil.java:15 - retryOnConnectionFailure(true)
  • 连接池:使用 OkHttp 连接池优化 HTTP 请求性能

7.4 安全隔离区实现

7.4.1 容器化安全隔离

Docker 安全隔离

  • 独立容器docker-compose.yml:2-14 - 每个服务独立容器运行
  • 网络隔离:容器间网络通信隔离
  • 资源隔离CPU、内存等资源隔离限制

网络安全配置

  • 访问控制:基于 Token 的 API 访问控制
  • 数据加密:数据库连接和 API 通信加密
  • 审计日志:网络访问和操作审计日志

7.4.2 防火墙映射技术

内外网映射

  • IP 映射:通过防火墙技术进行内外网 IP 地址映射
  • 端口映射:服务端口的内外网端口映射
  • 访问控制:基于 IP 和端口的访问控制策略

7.5 网络安全措施实现

7.5.1 访问控制机制

API 安全认证

  • Token 认证DataTaskHsz.java:168-169 - 所有外部 API 请求携带 Token
  • 参数验证FormBody.Builder - 表单参数构建和验证
  • 异常处理MyE500UnknownExceptionResolver.java:17-22 - 访问异常处理

用户认证

  • 登录状态检查MyE500UnknownExceptionResolver.java:19-21 - 登录失效检测
  • 权限验证:基于角色的访问控制
  • 会话管理:用户会话状态管理

7.5.2 数据传输安全

XSS 防护

  • 输入验证Jackson 反序列化器实现 XSS 防护
  • 数据清理:用户输入数据的清理和验证
  • 输出编码:防止跨站脚本攻击的输出编码

数据加密

  • 连接加密PostgreSQL SSL 连接加密
  • 敏感数据:密码和令牌的加密存储
  • 传输加密API 通信的 HTTPS 加密

7.6 网络监控与维护

7.6.1 网络性能监控

HTTP 客户端监控

  • 超时监控OkHttpUtil.java - 连接和调用超时监控
  • 重试监控:连接失败重试机制监控
  • 性能指标:响应时间、吞吐量等性能指标

网络状态监控

  • 数据库连接:数据库连接状态和性能监控
  • API 调用:外部 API 调用成功率和响应时间监控
  • 服务可用性:应用服务可用性监控

7.6.2 故障恢复机制

自动重试

  • 连接重试OkHttpUtil.java:15 - 连接失败自动重试
  • 故障转移:数据库主备自动切换机制
  • 服务重启deploy_dev.ps1:14 - 远程服务重启机制

异常处理

  • 网络异常:网络连接异常的处理和恢复
  • API 异常:外部 API 调用异常的处理
  • 数据库异常:数据库连接和操作异常的处理

7.7 网络扩展性设计

7.7.1 水平扩展支持

容器化扩展

  • 多实例部署:支持同一应用的多个容器实例部署
  • 负载均衡:基于主机网络模式的负载均衡
  • 服务发现:容器间的服务发现和通信

微服务支持

  • 服务拆分:网络架构支持微服务拆分
  • 独立部署:各微服务独立部署和扩展
  • 通信机制:微服务间的通信和协调机制

7.7.2 云原生支持

云平台适配

  • 容器化部署docker-compose.yml - 容器化部署配置
  • 环境配置:支持多环境的网络配置
  • 资源调度:基于 Docker 的资源调度和管理

DevOps 支持

  • 自动化部署deploy_dev.ps1 - 自动化部署脚本
  • 配置管理:环境配置的统一管理
  • 监控告警:网络和服务监控告警机制