基于ZeroMQ与ProtocolBuffer的分布式遥感数据生产系统的制作方法

文档序号:11691084阅读:273来源:国知局
基于ZeroMQ与ProtocolBuffer的分布式遥感数据生产系统的制造方法与工艺

本发明涉及一种基于zeromq与protocolbuffer的分布式遥感数据生产系统,属于分布式遥感影像技术领域。



背景技术:

遥感影像是各种传感器所获信息的产物,是遥感探测目标的信息载体。航天遥感技术经过多年的发展,无论在光谱分辨率、空间分辨率、时间分辨率等方面都有了长足的进步。遥感影像无论在国防安全——如战略规划、军事部署,还是在人民生活——如地图搜索、路线规划中的作用越来越重要。但与此同时,随着国家与人民对遥感影像的需求日益攀升,传统的单机生产系统早已无法满足需求,存在以下不足:

(1)首先单机生产系统的计算能力有限,很难满足日益攀升的需求,单纯地纵向提高计算机的性能,并不能解决根本问题;

(2)如今卫星拍摄的原始数据已经逐步增长到几百gb的数量级,而且还在呈逐步上升的趋势。单机生产系统的存储无法承载如此大规模的影像数据,单机硬盘会很快装满,这使得单机存储系统不易扩展的缺点暴露无遗;

(3)最重要的一点,单机生产系统的可靠性不易保证,当机器出现故障时,当前的计算任务与机器中存储的数据都无法得到保障。

随着大数据时代的到来,分布式计算系统成为了解决超大规模计算的不二选择。分布式计算系统拥有高可靠性、高并发性、易横向扩展等诸多优点。对于以上遥感影像遇到的问题,使用分布式计算系统可以轻松的解决。但分布式计算系统内各个组件间的通信协同问题亟待解决,主要有以下几个问题:

(1)各组件之间需要异步通信,这样可以防止耗时的任务长期占用连接,降低系统的并发度;

(2)上游组件向下游组件下发任务时,当下游组件正忙于其他任务,需要将上游组件的任务缓冲下来,留到下游组件空闲时再做处理,即需要有“削峰”的作用;

(3)可以支持组件的动态加入,即上游组件发布任务时,无需关心下游组件(具体生产者)的数目,下游组件可以动态加入计算系统进行生产工作;

(4)通信方式与消息格式可以支持多种语言、多种平台。

0mq(zeromq)是一个在lgpl许可协议下的轻量级消息内核。它可用于c、c++、python、.net/mono、fortran和java语言。它运行在aix,freebsd的,基于hp-ux,linux和macos下,openbsd系统,openvms,qnxneutrino,solaris和windows操作系统。

作为一种消息内核,zeromq提供了多种模式:

(1)request-reply模式:为应用间提供有序的单点请求与应答通信;

(2)publish-subscribe模式:为应用间提供发布/订阅模式通信;

(3)parallelpipeline模式:专为分布式系统提供并发通信——上游应用负责发布任务,并推送到管道中;下游应用负责从管道中拉去任务,支持下游任务动态加入,易于系统扩展。

protocolbuffer(以下简称pb)是google的一种数据交换的格式,它独立于语言,独立于平台。google提供了多种语言的实现:java、c#、c++、go和python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用xml进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。



技术实现要素:

本发明的目的是克服现有技术中存在的不足,提供一种基于zeromq与protocolbuffer的分布式遥感数据生产系统,主要解决大规模分布式生产遥感影像时分布式计算系统内各个组件的协同与通信问题。

按照本发明提供的技术方案,所述基于zeromq与protocolbuffer的分布式遥感数据生产系统,其特征是:包括卫星原始数据引接组件、共享平台组件、数据生产规划组件、数据生产组件和数据导出组件;

所述卫星原始数据引接组件负责将卫星原始数据存入共享平台组件的云存储当中,并向共享平台组件发送消息,请求共享平台组件存储该原始数据的相关信息;

所述共享平台组件负责将卫星原始数据引接组件发送的原始数据元信息与数据生产规划组件发送的数据产品元信息存入到关系型数据库;向数据生产规划组件提供查询接口,供其查询原始数据元信息;向数据导出组件提供查询接口,供其查询与导出数据产品元信息;

所述数据生产规划组件提供前端界面,向共享平台组件发起原始数据查询请求,并根据查询的返回结果以及操作人员的选择,发起数据生产任务;

所述数据生产组件负责向数据生产规划组件拉取生产任务,负责遥感数据的实际生产;

所述数据导出组件提供前端界面,向共享平台组件发起数据产品查询请求,并根据查询的返回结果以及操作人员的选择,导出数据产品。

进一步的,所述卫星原始数据引接组件、数据生产规划组件、数据生产组件和数据导出组件与共享平台组件进行通信时,均为一次请求与一次响应交替进行。

进一步的,所述共享平台组件与其他组件之间采用zeromq的request-response模式进行通信,以共享平台组件为server端,其他组件为client端。

进一步的,所述数据生产组件动态加入系统,在空闲时向数据生产规划组件拉取任务。

进一步的,所述分布式遥感数据生产系统进行消息传递时,使用protocolbuffer格式。

本发明所述基于zeromq与protocolbuffer的分布式遥感数据生产系统,将遥感影像生产与计算放置于分布式系统中,采用zeromq作为系统内各组件的通信方式,采用protocolbuffer作为数据交换的格式,该分布式遥感数据生产系统拥有易部署、高可靠、高并发、易于横向扩展、通信数据精巧简洁,满足了国家与人民对遥感影像日益增长的需求。

附图说明

图1为本发明所述基于zeromq与protocolbuffer的分布式遥感数据生产系统的框图。

图2为所述共享平台组件的流程图。

图3为与共享平台组件通信的其他组件的流程图。

图4为所述数据生产规划组件的流程图。

图5为所述数据生产组件的流程图。

具体实施方式

下面结合具体附图对本发明作进一步说明。

如图1所示,本发明所述基于zeromq与protocolbuffer的分布式遥感数据生产系统包括卫星原始数据引接组件1、共享平台组件2、数据生产规划组件3、数据生产组件4和数据导出组件5。

所述卫星原始数据引接组件1负责将卫星原始数据存入共享平台组件2的云存储当中,并向共享平台组件2发送消息,请求共享平台组件2存储该原始数据的相关信息;

所述共享平台组件2负责将卫星原始数据引接组件1发送的原始数据元信息与数据生产规划组件3发送的数据产品元信息存入到关系型数据库;向数据生产规划组件3提供查询接口,供其查询原始数据元信息;向数据导出组件5提供查询接口,供其查询与导出数据产品元信息;

所述数据生产规划组件3提供前端界面,可以向共享平台组件2发起原始数据查询请求,并根据查询的返回结果以及操作人员的选择,发起数据生产任务;

所述数据生产组件4负责向数据生产规划组件3拉取生产任务,负责遥感数据的实际生产;

所述数据导出组件5提供前端界面,可以向共享平台组件2发起数据产品查询请求,并根据查询的返回结果以及操作人员的选择,导出数据产品。

其他组件与共享平台组件2进行通信时,均为一次请求与一次响应交替进行,因此可以采用zeromq的request-response模式进行通信,以共享平台组件为server端,其他组件为client端。

如图2所示,所述共享平台组件2的流程为:

(1)启动共享平台组件;

(2)初始化zmq.context;

(3)初始化zmq.socket,socket类型为zmq.rep;

(4)将socket绑定到本机指定的端口;

(5)接收请求;

(6)解析请求;

(7)执行相应操作;

(8)返回响应。

与共享组件平台通信的其他组件流程如图3所示。

数据生产规划组件3与数据生产组件4的通信非常特殊,不能单纯地使用点对点通信。数据生产规划组件3负责发布生产计划,但具体由哪个生产组件、几个生产组件来完成生产计划,不应该由数据生产规划组件3负责。数据生产组件4应该可以动态地加入系统,在空闲时向数据生产规划组件3拉取任务。这种设计可以保证系统的横向扩展能力,在需要扩大生产规模时,只需要加入更多的数据生产组件即可;同时也保证了系统的可靠性,在某个数据生产组件所在机器因为某种原因出现故障时,该任务可以由其他数据生产组件重新拉去,并完成生产。数据生产规划组件的流程图如图4所示。数据生产组件的流程图如图5所示。

本发明进行消息传递时,使用protocolbuffer格式,具有以下优点:

(1)消息精巧简洁——相对于xml、json等序列化中间格式来说,protocolbuffer更加高效;

(2)提供多语言多平台支持:

(3)方便易用,只需要定义.proto文件,并利用自带的编译软件编译成所用语言下的类/结构文件即可。

本发明通过结合zeromq的request-response模式与parallelpipeline模式,将分布式遥感数据生产系统间各个组件连接为一个整体;同时消息格式采用protocolbuffer,消息更加精巧简洁。本发明所述分布式遥感数据生产系统拥有易部署、高可靠、高并发、易于横向扩展、通信数据精巧简洁,满足了国家与人民对遥感影像日益增长的需求。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1