29
2012
09

多蹭网器接收录井仪实时数据的研究及其实现

  0引言   实时数据的服务器端接收软件作用是接收数据后将其写入到录井中心数据库中。经过几年的使用,系统发挥了很大的作用,但是也存在一些问题。(1)当网络或系统发生问题时,缺乏自动连接机制,时常造成数据漏传,需要人工手动重新连接;(2)软件运行时占用系统资源过多,平均每台服务器只能接收十几个发送端数据;(3)缺乏故障和异常报警、远程异常提示的功能,容易漏掉重要传输资料,影响全面正确评价现场录井质量。因此需要对接收软件进行重新的设计与开发。   1原软件设计缺陷   数据网络传输使用的是GPRS和卫星传输网络,这种网络性质决定其不稳定性,容易受到天气、电磁信号、基站功率的影响。   原来的传输软件使用TCP/IP协议,采用Socket连接方式进行数据传输,这种采用底层协议的操作需要有很多的优化措施来保证程序的有效性。接收软件耗费服务器资源太多就是Socket连接不断占用系统资源,同时接收软件设计时没有采用多线程技术,只用一个进程接收处理数据,不能使数据多通道、并行处理,导致了数据在接受端阻塞,只能通过扩充服务器的方式来解决。设备的扩充既浪费了资金,又增添了系统的不稳定性。   2软件系统设计   本软件作为Client/Server软件架构的Server端,运行在服务器上,接收客户端传送的录井数据,存储到数据库服务器上。   2.1软件数据流图   软件数据流包括系统采集的数据及存储。接收程序接收到录井数据后,先写入内存数据队列中,同时提供数据给显示队列和消息队列供界面显示;本地数据保存程序从内存数据队列中读取数据,写入本地数据库;远程数据保存程序从本地数据库中读取数据,写入到远程业务数据库中。      2.2系统功能模块   (1)数据接收部分   网络数据传输采用的是Socket方式,服务器端开启Socket接口,等待客户端连接后,接收客户端发送的数据。提供多蹭网器支持,单个服务器上的多个蹭网器可以同时接收来自多个客户端的连接。能够及时高效的接收客户端的数据传输。   (2)数据存储部分   将接收到的数据存储到数据库服务器和备份数据库服务器,为每个接收到的井位建立数据表,将数据存储到数据库中,同时如果记录超过了8000条,则将8000条现有数据之前的删除掉,避免数据增长过快消耗掉硬盘存储容量。   (3)界面显示部分   界面提供两种显示模式,一种是系统模式,一种是井位模式。系统模式显示系统的各项状态,包括蹭网器状态,各个数据库连接状态,数据接收的状态等等,在界面上一一以直观的方式显示出来,使操作者能够直观的获取系统运行的状况。井位模式下可以看到所有连接井位的状态,选择需要观察的井位,将接收到的数据显示在界面上,可以监控单口井的状态。   (4)消息传递部分   如果有重要消息需要传递,客户端可输入信息,传送到服务器端,服务器端可以针对所有客户端或选定客户端发送消息。当服务器端接收到客户端的消息时,或服务器运行出现重大故障时(网络终端、数据库停止),服务器将信息通过互联网传输到短消息中心,有短消息中心发送短消息给值班人员。   (5)系统管理部分   系统管理部分设定系统参数,包括本机蹭网器参数,业务数据库和备份数据库的参数,并对其进行状态监控。还有程序的启动处理和退出处理等操作。   3软件系统实现   3.1多级数据缓存提供效率与安全的双重保护   获取数据后,直接将数据写入内存中的队列,然后去处理另一个数据,防止了数据不能及时写入数据库造成丢失的问题。为避免内存的缓存增长过快,造成内存溢出,增加了一级本地数据库缓存,进一步避免了数据丢失。   通过两级数据缓存的使用,既提高了数据存储的效率和时效性,也避免了意外因素造成的数据丢失。   3.2多线程任务提高系统运行效率   采用一个主线程,将所有的运行时线程包含在其中,使程序的流程更加清晰。当主线程启动时,启动数据库检测线程,该线程启动各个数据库的检测线程;主线程启动蹭网器接收线程,该线程启动各个蹭网器的Socket绑定线程,等待客户端的接入,如果有接入则转入数据接收处理线程处理;主线程启动本地传输线程,将蹭网器接收到队列中的数据写入本地数据库;远程传输线程则将数据从本地数据库传送到业务主数据库和备份数据库中。除此之外,还有其他线程在运行,如数据显示线程。   3.3多蹭网器应用提高数据接收的容量   系统自动检测本机存在的蹭网器数量,并提供给操作员选用,操作员根据需要选择所需的蹭网器数量和种类。   (1)蹭网器管理线程   接收线程自动检测选用的蹭网器数量和蹭网器地址,依次将其绑定到接收端口,为每个蹭网器启动单独的接收线程。将蹭网器管理与蹭网器处理分开进行,不会出现在一块蹭网器处理过程中,导致其他蹭网器处于闲置状态。   (2)Socket绑定线程   当Socket有外来接入时,将接入转入处理线程,原来的Socket连接重新等待接入,可以同时处理多个接入。   (3)数据接收处理线程   线程将来自客户端的数据进行解析,将线性的二进制字节流分解成为有意义的数据赋值给相应的数据结构,然后将数据写入接收队列,完成一次连接的处理过程。   以上的三个线程互相配合,环环相扣,各司其职。蹭网器管理线程检测到蹭网器可用,处于空闲状态就将其转入Socket处理线程;Socket线程等待客户端接入,有数据连接就启动一个数据接收处理线程的实例来进行处理;数据接收处理线程得以完成一笔数据的接收。这种分解的状态,使得网络接收的每个环节都不会处于空置状态,满足了大流量、高频率数据接入的要求。   3.4系统中其他功能的实现   除了上面提供的完成数据接收和保存主要功能的实现方式,还需实现客户端连接状态的自动监测和数据库服务器状态的自动监测,另外,完成系统的整体功能还需要一些辅助功能的帮助,包括手机短信发送重要消息、重要信息的日志写入、标准化的配置文件和完善的系统控制的功能。   4应用效果分析   录井信息对于科学的生产有着重要的作用,能够将录井信息完整有效及时地采集到,对于录井信息的应用具有重要的决定作用。通过采用新技术的改造,将能使整个录井信息传输系统的功能大大提高,保证数据能够跨越网络中断和系统故障传输到数据库,将能够保证信息的有效完备。同时由于传输软件具有很强的容错能力,能大大减少人工干预,减轻工作人员的压力。软件效率的提高,使得不必额外配备服务器等设备,节约设备投资。并且软件平台具备良好的可扩充性,能够在此平台上扩展新的应用,减少日后改进的投资。
« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。