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

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

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

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

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

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

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

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

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

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

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

ping 127.0.0.1 -n 30

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

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

目录
相关文章
|
4月前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
8月前
|
缓存 前端开发 测试技术
什么是七星创客系统丨七星创客系统开发规则玩法/设计方案/逻辑需求/案例项目/源码功能
七星创客系统开发指南是一个帮助开发人员理解并完成七星创客系统的开发任务的指南。以下是一个简要的开发指南需求:
|
10月前
|
安全
dapp农场养成游戏系统开发规则详细/方案设计/步骤逻辑/源码案例
Developing a decentralized application (DApp) farm development game system based on blockchain technology requires considering various rules and implementation steps. The following are some detailed rules and guidelines for reference:
|
10月前
|
自然语言处理 监控 搜索推荐
佛萨奇2.0/3.0Metaforce原力元宇宙系统开发步骤逻辑丨方案项目丨案例设计丨成熟技术丨源码功能
佛萨奇(VoZaChi)是一个虚拟助手系统,其发展至2.0和3.0版本会有一些特定需求和逻辑
|
监控 安全 数据挖掘
泰山众筹系统开发详细指南丨设计方案丨规则玩法丨逻辑功能丨步骤需求丨源码程序
泰山众筹系统是一个基于区块链技术的众筹平台,旨在为用户提供一个安全、透明和高效的众筹环境。
|
存储 前端开发 安全
dapp矩阵公排互助预约排单抢单项目系统开发指南流程丨案例设计丨功能逻辑丨规则玩法丨项目方案丨源码程序
需求分析:与团队明确系统的需求和目标,包括公排互助预约排单抢单项目系统的功能、规则、奖励机制等方面。
|
存储 安全
DAPP/3M互助拆分公排双轨系统开发详细逻辑/案例分析/方案项目/技术分析/源码平台
 DApp是指基于区块练技术的去中心化应用程序,它的特点是去中心化、透明、安全、不可篡改等特点。
|
人工智能 机器人
AI智能自动交易量化机器人系统开发稳定版丨案例设计丨方案项目丨功能分析丨源码说明
When developing an AI automated quantitative trading robot system, it is first necessary to clarify the system's goals and requirements. Determine key factors such as the market, trading strategy, and risk control methods to be traded. Next, establish the basic framework for data acquisition and pro
|
安全 Go 区块链
区块链游戏链游系统开发功能详情丨方案逻辑丨开发项目丨案例分析丨源码规则
 In recent years, with the continuous development of blockchain technology, NFTs (non homogeneous tokens) and DAPPs (decentralized applications) have emerged in the gaming industry.
|
算法 机器人 区块链
数字货币量化机器人系统开发(项目案例)/功能说明/逻辑方案/源码平台
  简单地说,量化交易机器人就是能够自动执行交易策略的交易软件。它借助于计算机技术和数学模型,对市场行情进行分析预测,并根据程序设定的规则和条件自动执行交易策略,完成交易操作。Compared with traditional manual trading,quantitative trading robots have faster trading speed,lower transaction costs,and higher trading efficiency.