程艳楠
[摘 要]近年来,由于信息技术的不断进步,油田生产设备数量正在迅速增长。文章主要研究了数字油田分布式计算的相关内容,通过协调和管理服务器集群,构建了可处理、高并发、快速响应的高性能分布式应用服务集群。随着数字油田的不断发展,该集群满足未来大数据环境下的油田应用软件开发需求,为采油厂数字化建设提供支持。
[关键词]数字油田;分布式计算;数据
0 引 言
随着数字化油田的不断建设,物联网设备采集的数据量急剧增加,油田各专业数据呈井喷式爆发。随着油田数据量的增长,物联网设备不断投产,给今后的应用软件开发带来了新的挑战,如何处理大数量的数据检索任务,并完成高并发的量的任务请求,已经成为油田企业现阶段需要解决的问题。对此,开展分布式服务器集群研究,利用Zookeeper服务框架,实现分布式服务器集群的任务协调管理,能为大数据环境下的软件开发提供支撑。
1 数字油田分布式计算研究的必要性
1.1 解决数字油田应用中高并发问题
高并发指通过设计保证系统能够同时并行处理很多请求。随着数字化油田的建设,为了快速掌握油井生产情况,相关研究人员应针对自动化设备采集的实时油井参数数据进行分析,但是油井工况种类繁多,每种工况诊断依据的数据都不相同,需要单独分析每种工况。在这种情况下,油田生产中工况分析的计算量非常大,随之产生很高的并发工作量,传统的部署方式可能无法满足处理高并发任务的能力,从而导致服务器高负荷、满负荷运转,甚至使系统崩溃。
1.2 解决海量数据检索性能问题
随着油田信息化的不断发展,油田产生的数据量将急剧增加,例如,油田开发、视频、文档等信息数据。随着数据量的逐渐增多,数据检索的效率将直线下降。在数字油田的建设过程中,相关应用软件必须能够快速查询海量的生产数据,如果无法高效、准确地检索生产数据,将会降低技术人员工作效率,也无法满足在大数据环境下的应用软件业务需求。为了解决以上问题,油田企业可以进行分布式计算研究,通过建立分布式的服务器集群,配合统一的任务调度管理服务,将高并发的任务量分解给多台服务器同时进行处理,采用水平扩展的方式提高集群的整体性能,从而提高整个系统的运行效率。
2 技术原理介绍
构建分布式服务能够满足数字油田产生的高并发量的任务需求。所谓分布式,指数据和程序可以不在一个服务器上,而是分散到多个服务器。利用分布式有利于工作人员在整个计算机系统上分配与优化任务,克服了传统集中式系统可能导致中心主机资源紧张与响应速度慢的缺陷。通过组建高可用性的服务器集群以及提供统一的任务调度管理服务,能够合理分配任务。当有任务需要处理时,业务服务器将与任务调度服务进行通信,并开始处理相关任务,如服务器的上、下线状态以及任务的分配工作。
2.1 服务器集群
服务器集群指将许多服务器集中起来并一起提供同一种服务,从客户端看,好像只有一个服务器工作。集群可以利用多个计算机进行并行计算,从而获得很高的计算速度,以提高计算能力,相互备份数据,使任何一台服务器掉线后,都能保证系统正常运行。
2.2 高可用性
高可用是分布式系统架构设计中非常重要的因素之一,一般指通过设计减少系统不能提供服务的时间。利用监听机制,实时掌握每个服务器的状态,如果集群中的任何一台服务器发生故障,分配给该服务器的任务将由主服务器分配给其他服务器处理,从而提高集群的容错能力,时刻保证服务器的处理能力。
3 技术应用实践
采用ZooKeeper框架搭建任务调度机制,利用机房闲置的服务器搭建服务器集群,依据ZooKeeper框架应用程序编程接口(Application Programming Interface,API),开发客户端注册程序并部署在各台服务器上,当服务器上线后将自动与ZooKeeper服务器通信,并注册上线。
3.1 ZooKeeper集群
ZooKeeper是一个分布式的、开放源码的应用程序协调服务。Zookeeper的工作集群可以简单分成两类:一类是Leader节点,其中,Leader节点是唯一存在的,是在ZooKeeper启动时通过选举机制产生的;另一类是Follower节点。
ZooKeeper的选举机制是保证ZooKeeper分布式数据保持一致的关键,当ZooKeeper集群初始化时会进行选举,必须由两台以上的服务器完成选举,当选举开始时,每个服务器将会投出一票。由于是初始情况,第一个服务器和第二个服务器都会将自己作为Leader服务器进行投票,每次投票會包含所推举的服务器的myid和ZXID,使用(myid,ZXID)表示,此时第一个服务器的投票为(1,0),第二个服务器的投票为(2,0),然后将投票信息发给集群中其他服务器。集群中的每个服务器收到投票信息后,首先判断该投票的有效性。在投票完成后,会进行投票统计,然后确定Leader服务器,然后其他的服务器将会更新状态为FOLLOWING。因此,Zookeeper集群中节点个数一般为奇数个,若集群中Leader节点缺失,剩余节点个数在半数以上时,就可以通过选举机制推举新的Leader节点,继续对外提供服务。Zookeeper的数据结构类似于树形节点,其节点名称叫Znode。其中,Znode有两种类型,即临时节点和持久节点。临时的Znode,客户端和服务器端断开连接后,会自动删除创建的节点;持久的Znode,客户端和服务器端断开连接后,将不删除创建的节点。
当客户端发起事务请求,事务请求的结果在整个Zookeeper集群中所有机器上的应用情况一致,不会出现集群中部分机器应用了该事务,而另外一部分集群中机器没有应用该事务的情况。在Zookeeper集群中的任何一台机器可以看到服务器的数据模型一致。Zookeeper能够保证客户端请求的顺序,每个请求分配一个全局唯一的递增编号,用来反映事务操作的先后顺序。Zookeeper将全量数据保存在内存中,并直接服务于所有的非事务请求,在以读操作为主的场景中性能非常突出。
3.2 分布式计算实现过程
通过建立ZooKeeper服务器集群负责任务服务器任务协调工作,当任务服务器上线后,自动与ZooKeeper集群中的Leader服务器建立客户端连接,并建立一个临时节点,此时ZooKeeper集群视为此任务服务器可以上线工作,并为其分配任务。当有任务请求时,请求服务器会读取ZooKeeper集群中的临时节点数据,把分析任务交给相应的服务器进行处理。当服务器某个节点接受了分析任务时,会在ZooKeeper集群中对应的临时节点下创建一个临时节点,代表该台服务器正在处理一个任务。此时如果该台服务器接受了任务,那么会继续在该台服务器的临时节点下创建相应的临时节点,服务器处理完成任务后就会自动删除这些子临时节点。因此,服务器对应ZooKeeper集群臨时节点下的子临时节点数量就代表该台服务器目前所拥有的任务数量。在集群接收到任务后,会根据各服务器节点的任务数量情况为新任务合理地分配服务器,从而使每个服务器都处在均衡的工作状态,进而大大提高了服务器的工作效率。利用ZooKeeper的短暂节点的特性,客户端和服务器端断开连接后,会自动删除创建的节点。在每台服务器上线后,与ZooKeeper集群建立客户端,这时ZooKeeper集群会为该台服务器创建一个临时节点,当该服务器下线后会自动删除该节点,表示该台服务器下线,之后不会给该服务器分配任务。
4 结 语
目前,各大油田都在进行数字化建设、智能化转型,在未来的工作场景中,采用机器学习、大数据分析等技术,实现生产的智能化管控,经营管理辅助决策,将成为油田发展的趋势。因此,如何有效利用海量油田数据的价值将成为接下来油田企业需要解决的问题。本文通过研究分布式计算,将研究成果逐步应用到采油厂数字化、智能化建设中,助力解决油田大数据应用中的实际问题,为采油厂数字化建设提供技术保障。
主要参考文献
[1]何生厚,毛锋,数字油田的理论设计与实践[M].北京:科学出版社,2001:240.
[2]杨世海,高玉龙,郑光荣,等.长庆油田数字化管理建设探索与实践[J].石油工业技术监督,2011(5):1-4.