index.md 8.0 KB

MES项目常见问题解答

尚未解答问题

前端开发环境

Q: NetAdvantage_WinForms_20092安装后,LC错误,怎么获得授权?

NetAdvantage_WinForms_20092 LC错误截图

A: 待解答

Q: UI设计页面怎么设计页面,比如增加这套控件什么的?

主要是这套自定义控件怎么使用,注意事项。冲突。

.

A: 待解答

Q: 设计模式中的设计向导你们使用么?

A: 待回答

Q: VS2019打开设计页面后,为什么要在C盘写日志,为了避免这个我必须以管理员身份启动VS2019吗?

A: 待解答

Q: 前端似乎有实体对象, 表象是生成,能提供对应生成工具么?

PS 后端也应该有套生成工具

A: 待解答

后端问题

Q: 后端业务如何进行单元测试

A:

接口问题

开发环境问题

Q: 开发环境需要哪些软件?

A: 开发环境需要以下软件:

  • 客户端开发:Visual Studio (支持C#)
  • 服务端开发:IntelliJ IDEA 或 Eclipse (支持Java)
  • 数据库工具:SQL Developer 或 PL/SQL Developer
  • 版本控制:Git
  • 构建工具:Maven (Java项目)
  • 网络调试工具:Fiddler (抓包工具)

Q: 如何使用Fiddler抓包工具?

A: Fiddler是一款常用的网络抓包工具,使用步骤如下:

  1. 下载并安装Fiddler软件
  2. 启动Fiddler,默认会自动捕获所有HTTP/HTTPS流量
  3. 配置浏览器或应用程序使用Fiddler作为代理
  4. 在Fiddler界面中查看捕获的网络请求和响应
  5. 使用Fiddler的过滤器功能过滤特定的请求
  6. 使用Fiddler的断点功能修改请求或响应
  7. 使用Fiddler的自动响应功能模拟服务器响应

Q: Fiddler如何捕获HTTPS流量?

A: 要使用Fiddler捕获HTTPS流量,需要以下步骤:

  1. 启动Fiddler
  2. 点击"Tools" -> "Options" -> "HTTPS"
  3. 勾选"Decrypt HTTPS traffic"
  4. 点击"Yes"安装Fiddler根证书
  5. 在浏览器中导入Fiddler根证书(如果需要)
  6. 重启浏览器,Fiddler就可以捕获HTTPS流量了

Q: 如何搭建开发环境?

A: 搭建开发环境的步骤如下:

  1. 安装必要的开发工具
  2. 从版本控制系统中获取代码
  3. 配置数据库连接
  4. 配置服务端运行环境
  5. 配置客户端运行环境
  6. 启动服务端和客户端进行测试

Q: 开发环境常见问题有哪些?

A: 开发环境常见问题包括:

  • 数据库连接失败:检查数据库服务是否启动,连接字符串是否正确
  • 服务端启动失败:检查端口是否被占用,配置文件是否正确
  • 客户端无法连接服务端:检查网络连接,服务端是否正常运行
  • 代码编译错误:检查依赖是否正确,代码是否有语法错误

Q: 如何解决开发环境中的依赖问题?

A: 解决依赖问题的方法:

  • 客户端:使用NuGet管理依赖包
  • 服务端:使用Maven管理依赖包
  • 确保所有依赖包版本兼容
  • 定期更新依赖包以修复安全漏洞

系统架构

Q: MES系统的技术栈是什么?

A: MES系统采用C#客户端和Java服务端的混合架构,数据库使用多账号多表空间的设计。具体包括:

  • 客户端:C# (9641个cs文件)
  • 服务端:Java (3094个java文件,1763个xml文件)
  • 数据库:多账号多表空间,表数量多且列数大

Q: 系统的主要组件有哪些?

A: 系统主要组件包括:

  • 客户端:C#开发的桌面应用
  • 服务端:多个Java服务,如CoreFS.Authentication、CoreUpLoadApp、ServiceMesToJh等
  • 数据库:多个数据库账号和表空间
  • 告警系统:包含nacos注册器、告警规则服务器、告警后端、告警vue前端、告警观察员

系统问题

Q: 系统常见的故障有哪些?

A: 系统常见故障包括:

  • 事务死锁:大量操作下容易出现死锁,导致系统卡住
  • 性能问题:业务逻辑全部放在SQL中,性能差
  • 维护困难:缺乏核心维护人员,外包人员不可靠
  • 代码管理混乱:大量代码在封装文件里,暴露出的文件不是最新代码
  • 文档缺失:完全没有任何可读文档

Q: 如何避免事务死锁?

A: 避免事务死锁的策略有:

  1. 串行处理(上策)
    • 业务服务端不执行代码,只是把代码发队列
    • 队列服务器串行消费
    • 消费完成后结果写入redis,由业务服务端轮询拉取
    • 用户无感知
  2. 缓存锁(中策)
    • 每次执行前,锁住主表对应行
    • 发现锁不住时,业务终止,并提示用户等下再试
    • 用户偶尔被打扰,无法保证锁干净
  3. 完全由告警系统兜底(下策)
    • 让系统继续这样
    • 告警不停刷出问题所在
    • 将常见问题模式化

系统翻新

Q: 为什么系统需要翻新?

A: 系统需要翻新的原因包括:

  1. 旧系统故障严重
  2. 旧系统不必要复杂度太高
  3. 旧系统缺乏核心维护人员
  4. 旧系统缺乏代码
  5. 旧系统缺乏文档
  6. 旧系统页面隔离(可逐个页面替换)

Q: 系统翻新的策略是什么?

A: 系统翻新的策略包括:

  1. 架构重构:采用串行处理策略,引入消息队列,解决事务死锁问题
  2. 代码优化:将业务逻辑从SQL中迁移到代码中,提高可维护性和可测试性
  3. 文档建设:建立完善的文档体系,包括架构文档、API文档、操作手册等
  4. 团队建设:培养核心维护人员,建立知识传承机制
  5. 告警系统完善:扩展告警规则,实现故障自动修复机制
  6. 逐步替换:利用页面隔离的特点,逐个页面进行翻新替换,降低风险

告警系统

Q: 告警系统的组成是什么?

A: 告警系统由以下组件组成:

  1. nacos注册器
  2. 若干告警规则服务器
  3. 告警后端
  4. 告警vue前端
  5. 告警观察员

Q: 告警系统的工作原理是什么?

A: 告警系统的工作原理如下:

  • 需要的告警往nacos上注册
  • 告警后端轮询执行这些注册
  • 告警结果按照扫描批次写入数据库中
  • 告警vue来进行紧急扫描以及观察扫描结果

技术问题

Q: 前端代码的主要问题是什么?

A: 前端代码的主要问题是:

  • 前端主要工作是拼装SQL,逻辑分散
  • 前后端参数是魔法约定,缺乏标准化接口
  • 难以理解和测试

Q: 后端代码的主要问题是什么?

A: 后端代码的主要问题是:

  • 复杂的业务逻辑,大量的SQL操作和事务处理
  • 缺乏模块化设计,代码冗余度高
  • 难以维护和扩展

数据库

Q: 数据库的结构是怎样的?

A: 数据库采用多账号多表空间的设计,具体包括: | 账号 | 表空间 | 表/视图 数量 | 存储过程 | | ---------- | ------- | ------- | ---- | | core | CX_DB | 49 | 0 | | CG_DLINK | PMS_DB | 0 | 0 | | cxmeter | CX_DB | 0 | 0 | | CXUSER | CX_BIG | 1337 | 257 | | LIMSUSER | LIMS_DB | 100 | 4 | | cx_mes | | 1/70 | 13 | | CXREADONLY | | 2 | 0 |

Q: 数据库的主要问题是什么?

A: 数据库的主要问题是:

  • 表的数量很多,表列数非常大
  • 建表随意,缺乏规范化设计
  • 存储过程当作定时任务在做,逻辑混乱

项目管理

Q: 项目的体量如何?

A: 项目体量较大,具体包括:

  • 客户端:9641个cs文件
  • 服务端:3094个java文件,1763个xml文件
  • 数据库:多个账号和表空间,大量表和存储过程

Q: 项目的复杂度如何?

A: 项目复杂度较高,主要体现在:

  • 链路复杂度:前后端参数是魔法约定,缺乏标准化接口
  • 代码复杂度:业务逻辑全部放在SQL中,难以理解和维护
  • 架构复杂度:混合架构,组件众多,集成复杂