【研发经验谈】模块间建链失败问题的分析及解决

简介: 很长时间以来,我每天花在地铁上的时间都在一个小时以上。闲来无事,我就在手机上下载了多看阅读,并且购买了很多电子书。

很长时间以来,我每天花在地铁上的时间都在一个小时以上。闲来无事,我就在手机上下载了多看阅读,并且购买了很多电子书。最近,我阅读了《异类》,颇有感触。作者在书中提出了一个“一万小时”的定律,也就是说,当一个人花在某件事情上的时间超过一万个小时之后,就会发生质的改变,就会做到比绝大多数人好。我们耳熟能详的一些天才,像盖茨、乔伊等等,虽然天赋很高,但自身也很勤奋,花了比常人多得多的时间在自己所喜欢的事业上。也就说是,是“一万小时”定律让他们与众不同。

量变引起质变的规律也适用于软件开发领域,本文中提到的问题,即是一例。

问题描述
在某项目进行了长期的自动测试工作之后,我们组建了如下的系统架构:
这里写图片描述
最近,在进行自动测试的过程中,我们发现测试用例的执行总是失败的。更具体地说,就是消息触发脚本无法调用发消息工具,两者之间无法建链。

原因分析
本测试系统已搭建了长达两年,已经累积了上千个测试用例。之前从未遇到过此类消息触发脚本无法调用发消息工具的问题。那么,究竟是什么原因引起的呢?

我们首先检查了自动测试环境,发现一切正常。之后,我们修改了自动测试的调用脚本,变成了手动触发。也就是说,当发消息工具成功启动之后,我们再点击消息触发脚本,发现链路能够正常建立,且消息发送正常。那么,为什么自动测试的时候就不能正常建链呢?

我们再回过头来分析了一下自动测试的整个流程。当自动测试启动之后,消息触发脚本和发消息工具几乎是同时开始运行的,而发消息工具运行起来之后,要先读取配置文件中的测试用例,然后绑定IP和端口号,完成之后再等待和消息触发脚本建链。前期的测试用例比较少,所有当消息触发脚本监测与发消息工具的链路的时候,后者已经成功读取了配置文件,并绑定了IP和端口号。这样,后续的流程就能够正常执行。

但是,随着测试用例的累积,当消息触发脚本开始监测与发消息工具的链路的时候,后者还在读取配置文件,并未绑定IP和端口号。这样,消息触发脚本发现链路还不具备,因此执行就失败了。这也就是我们看到的现象。之所以手动能够执行成功,是因为我们点击消息触发脚本的时候,发消息工具早就完成了读配置和绑定IP与端口号的操作(手动操作要比自动操作慢很多),就不存在建链不成功的问题了。

问题解决
根据以上分析,我们只需要给发消息工具足够的时间,让消息触发脚本晚点与发消息工具建链就可以了。

我们在消息触发脚本中添加了如下语句:

ping 127.0.0.1 -n 30

当消息触发脚本执行了30次ping操作之后,发消息工具早就做好了准备工作,于是建链成功,后续流程顺利执行。

总结
本文中提到的建链失败问题的解决办法虽然简单,但该问题却提醒了我们,在两个模块需要进行消息交互的时候,发送消息的模块一定要等到接收消息的模块“准备好”之后,再发送消息过去。也就说是,软件模块的初始化需要时间,在设计软件的时候,我们一定要将各个模块的初始化时间考虑进去。

目录
相关文章
|
4月前
|
缓存 前端开发 测试技术
什么是七星创客系统丨七星创客系统开发规则玩法/设计方案/逻辑需求/案例项目/源码功能
七星创客系统开发指南是一个帮助开发人员理解并完成七星创客系统的开发任务的指南。以下是一个简要的开发指南需求:
|
6月前
|
自然语言处理 iOS开发
海外短剧系统开发功能指南/案例设计/步骤方案/源码程序
The development of overseas short drama systems needs to consider the following main requirements
|
6月前
|
存储 机器人 区块链
量化交易策略机器人系统开发|成熟案例|详情方案
量化交易策略模型是指用数学模型和计算机程序对市场行情进行分析和预测
|
新零售 人工智能 供应链
链动2+1开发运营版丨链动2+1系统开发案例详情/方案项目/功能说明/逻辑规则/源码程序
新零售是指传统零售业与互联网技术相结合,通过数字化、数据化和智能化的手段,重新定义和升级传统零售业态的模式和经营方式。
|
机器人
量化交易丨交易所系统开发策略规则/逻辑方案/成熟技术/开发案例/源码部署
  “量化交易”有两层含义,一种是从狭义上的讲法,中指量化交易的内容,将交易的条件转变为程序的意思,自动下单。二是从广义上讲,是指系统交易的方法,一个整合交易的系统,按照一系列的交易条件,智能化的辅助决策系统体系,把丰富的从业经验与交易条件相符合,交易过程管理好风险控制。
|
6月前
|
安全
外汇交易所系统开发规则玩法/步骤逻辑/方案项目/教程指南/源码流程
The development of foreign exchange system involves a series of functions and features, aiming to provide a safe, efficient, transparent, and reliable trading platform for foreign exchange trading. The following are the functions that may be involved in the development of the foreign exchange exchan
|
6月前
|
安全
什么是外汇交易所系统开发步骤详细丨案例设计丨需求逻辑丨源码项目
The foreign exchange system is one of the key systems in the financial field, providing investors with foreign exchange trading services. When developing a foreign exchange exchange system
|
6月前
|
自然语言处理 监控 搜索推荐
佛萨奇2.0/3.0Metaforce原力元宇宙系统开发步骤逻辑丨方案项目丨案例设计丨成熟技术丨源码功能
佛萨奇(VoZaChi)是一个虚拟助手系统,其发展至2.0和3.0版本会有一些特定需求和逻辑
|
6月前
|
机器人 TensorFlow 算法框架/工具
量化交易机器人系统开发详细策略/需求步骤/逻辑方案/源码设计
auto nhwc_data = nhwc_Tensor->host<float>(); auto nhwc_size = nhwc_Tensor->size(); ::memcpy(nhwc_data, image.data, nhwc_size);
|
运维 测试技术 区块链
链动2+1模式系统开发指南流程丨成熟案例丨功能设计丨测试部署丨方案项目丨逻辑需求丨源码出售
链动2+1模式系统开发方案是指一个较为复杂的系统开发模式,其中包含两个公链和一个私链的组合。