LAMOST异构环境信息检索系统的设计与实现*

2021-01-19 00:25赵永恒
天文研究与技术 2021年1期
关键词:望远镜代理客户端

王 政,王 锋,田 园,李 建,赵永恒

(1. 中国科学院国家天文台,北京 100101;2. 中国科学院光学天文重点实验室,北京 100101;3. 中国科学院大学,北京 100049;4. 广州大学物理与材料科学学院,广东 广州 510006)

郭守敬望远镜是我国自主研制的大口径兼具大视场的反射式施密特光学望远镜,安置于中国科学院国家天文台兴隆观测站。该望远镜可以同时观测4 000个目标,是世界上单次观测获取光谱数最多的望远镜[1]。到目前为止,郭守敬望远镜已观测、生产、发布了超过1 000万条天文光谱。

除了生产天文光谱之外,郭守敬望远镜各子系统每天生成数百万条实时状态信息,并存储在不同类型的数据库中[2]。如图1,郭守敬望远镜运行环境是多个子系统状态信息数据的集合,提供各种环境信息,包含气象子系统(Weather)中的气象信息和差分图像运动测量仪(Differential Image Motion Monitor, DIMM)信息、望远镜控制系统 (Telescope Control System, TCS)中的主动光学和机架风速信息、导星系统(Guiding)中的导星信息、设备控制系统(Instrument Control System, ICS)中的相机温度信息、战略巡天系统(Survey Strategy System, SSS)中的观测目标信息以及观测控制系统(Observation Control System, OCS)的信息,是一个由MySQL, SQLite, PostgreSQL等多种数据库组成的异构存储系统[3-4]。

环境信息为望远镜的观测、维护以及后期数据处理提供重要的参考信息。根据信息的应用和重要性,可分为以下几种类型:

(1)致命提醒:影响望远镜安全的突发事件。观测时,如遇湿度过大、大风等突发状况,以声音、醒目频闪颜色等方式提醒观测者立刻停止观测,关闭望远镜,以保护望远镜的安全。

(2)辅助观测:以视觉形式显示观测天区和观测目标的关系,辅助驻站天文学家选择最佳的观测目标。

(3)故障报警:望远镜子系统故障提醒信息。观测时,提醒观测者故障位置,便于及时维修。在日常维护中,现场维护人员需快速检索望远镜各子系统的状态信息,如有异常,立刻锁定问题,及时维修,确保望远镜处于最佳运行状态。非现场维护人员通过远程检索各子系统的状态信息,协助现场工作人员维护望远镜。维护人员通过统计长期的环境信息,结合维护日志以及观测中遇到的问题,提出望远镜维护方案,降低维护成本,提高观测效率。

(4)问题回溯:在后期数据处理过程中,数据处理人员对争议光谱可回溯观测时的环境信息,确定问题导向。

(5)环境展示:通过大屏幕集中展示当前观测及运行状态。

图1 郭守敬望远镜环境信息存储结构图Fig.1 The storage structure of environmental information

当前,郭守敬望远镜运行环境中的各种状态信息相互孤立,只能在局域网内以复杂的检索语句对同一种数据库进行检索,非现场工作人员只能通过多个代理跳转入内网才可以检索信息,操作复杂,且存在暴露内网的安全隐患。检索语句因数据库不同而存在差异,输入出错率高,工作效率低。检索内容涉及多个异构数据库时,无法实现跨数据库检索,只能通过终端检索信息,方式单一,在实际操作过程中存在误删和修改数据的安全隐患,急需一种异构信息检索的方法。

异构信息的存取有多种方法,目前有基于Luene开发的Solr, ELK, Kata等开源检索工具,通过分析和整理信息,建立统一的索引数据库用于数据的检索。但这些工具需要经过长期的专业学习才可熟练应用,且使用复杂,开发周期长[5-6],不适合郭守敬望远镜当前迫切的数据检索需求。结合实际,本文提出了一种异构环境信息快速检索方法。

1 系统功能及设计

异构环境信息检索系统通过对异构数据库中环境信息的整理、归纳,可以屏蔽内部信息的复杂性,统一并简化检索语句,减少数据读取的出错概率。本系统的研发旨在保证原有数据安全的基础上,开发多种检索途径,快捷、精准地获取数据,提高工作效率。

郭守敬望远镜异构环境信息检索系统根据不同检索需求分为3部分:信息资源层、服务层以及应用层,如图2。

信息资源层(Information Layer)包含数据库代理对象工厂模块和数据库异步代理模块。数据库代理对象工厂模块负责维护现有的数据库以及可检索信息,数据库异步代理模块负责MySQL, PostgreSQL等多种数据库的代理。

应用层(Application Layer)为环境信息检索请求者,分为终端客户端和网络客户端两种。终端客户端通过命令行检索,网络客户端通过浏览器检索和展示结果。

服务层(Server Layer)为环境信息检索服务器,用于接收客户端的检索请求,并根据请求内容转换为指定数据库类型的检索语法,最后将整合后的结果返回请求者。

图2 系统架构图Fig.2 The system architecture

2 系统实现

在研发过程中,根据功能分工,系统划分为数据库代理工厂模块、接收模块、命令检查模块、命令解析模块、结果汇总模块以及应用模块。各模块间互相解耦,简化了逻辑控制。

2.1 系统研发及运行环境

郭守敬望远镜异构环境检索系统在Python3.7环境下开发,可在多种Linux操作系统上运行。经过多方调研,根据实际工程需求,主要采用的Python第三方资源库包括:

Asyncio:Python3.7的异步协程标准库,为大量第三方资源库提供异步协程支持。协程是由程序开发人员自主调度和控制,在用户态执行的一段代码,具有极高的执行效率,非常适合高并发型的网络通信[7-8]。

Aiomysql, aiopg, aiosqlit:Python3.7中3个支持数据库异步操作的资源库,分别用于支持MySQL, PostgreSQL, SQLite数据库的异步操作。

Pyzmq: ZeroMQ在Python中的开发库。作为一种高性能开源的消息中间件,ZeroMQ具有丰富的通信资源库,且提供多种通信模式,可以满足多种通信业务的需求[9]。

2.2 接收模块

接收模块是一个异步协程服务器,负责接收客户端的检索请求,并将检索结果返回请求者。根据请求来源,检索分为望远镜内网、国家天文台内网及广域互联网3种方式,其中,望远镜内网检索是最主要的工作方式。为确保系统提供稳定的环境信息,系统对外网检索请求数量进行了限制,一旦检索请求到达限制数量,则拒绝新的请求连接。

2.3 数据模块

数据模块分为数据库代理对象工厂模块和异步数据代理模块两部分。

郭守敬望远镜的观测和维护对环境数据检索需求基本固定,综合常见的检索需求,系统设置了数据库代理对象工厂模块。如图3,该模块为自定义虚拟数据库,对当前所有数据库进行编号,以自定义检索数据名为关键字,映射检索数据相对应的数据库及字段名称。

图3 数据库和命令映射Fig.3 The map of database and command

数据库异步代理模块是数据库在系统中的代理,负责具体的数据检索和结果接收。根据数据库类型,数据库异步代理模块分为MySQL异步代理(MySQL Agent)、PostgreSQL异步代理(PostgreSQL Agent)以及SQLite异步代理(SQLite Agent)。为提高数据库利用率,每个代理模块维护一个有多个数据库连接的连接池,确保多个客户端的实时检索。

2.4 命令检查模块(Command Check Module)

命令检查模块负责命令格式、内容和权限的审核。由于数据库检索需求多样化,检索者身份权限也不相同,因此,数据库检索的便携性和安全性尤为重要。表1为自定义简化检索命令格式,只有符合格式的命令才可进行下一步的操作。为提高数据的安全性,系统对用户提交的检索请求进行安全性检查,仅允许对数据库进行检索操作。

表1 自定义检索命令格式Table 1 Custom search command format

2.5 命令解析模块(Command Parse Module)

命令解析模块负责对检索命令的解析、转换及异步数据库代理的选择。数据库代理对象工厂模块中没有具体的望远镜运行环境信息。根据检索内容,解析模块在数据库代理对象工厂模块中获取数据所在的数据库信息及对应的字段名,重新构造检索语句后,根据数据库信息选择异步数据库代理,将检索语句提交给代理进行具体检索操作。

2.6 结果汇总模块(Result Module)

结果汇总模块负责对检索结果的整理和转换。异步数据代理模块将检索结果返回后,结果汇总模块将其转化为统一的自定义结构,便于应用层数据的接收和整理。

2.7 应用模块

应用模块主要用于检索命令的提交和检索结果的展示,根据作用可分为命令客户端和网络客户端两种方式。

郭守敬望远镜内部有数百台计算机,操作系统种类繁多,为每台计算机安装一个客户端,工作量非常大,不合实际。由于工作人员在望远镜维护中只需检索环境数据,无需进一步的分析和记录,利用Linux和MacOS操作系统自带的NetCat工具包实现环境数据的检索。Windows系统可以通过网络下载NetCat工具包,经过简单的系统设置即可使用。NetCat用命令行方式检索环境信息如图4。

超文本传输协议(HyperText Transfer Protocol, HTTP)代理模块为外部检索访问提供网络服务,使用apache httpd作为网络服务器。如图5,超文本传输协议代理接收浏览器发送的请求后,将其转化成自定义检索命令发送至服务层,并将服务层的检索结果转化成HTTP后返回浏览器,由浏览器展现。

图4 命令客户端检索Fig.4 Search data through command client

图5 网络检索界面Fig.5 Search data though Web client

3 系统测试

为验证系统是否满足郭守敬望远镜运行环境信息的检索需求,将其部署于一台多网段服务器上,为不同网域提供检索服务。图6为系统部署网络拓扑图,该系统可同时向郭守敬望远镜内网、国家天文台内网以及外部互联网提供检索服务。

多网段服务器配置为Intel Xeon 处理器(4个中央处理器,每个14核),128 G内存,同数据库一起部署在望远镜内部。郭守敬望远镜内网(LAMOST IntraNet)测试电脑配置为Intel Core i3-2100(双核),4 G内存。国家天文台内网(NAOC IntraNet)和外网(ExtraNet)测试电脑配置为Intel Core i7-4790(双核),16 G内存。由于该服务器承担着其他网络传输及数据处理任务,为了不影响服务器的正常使用,每个网段由100个客户端同时检索,每个客户端执行3 000次检索请求。

如图7,检索30万次,172个网段总用时9.936 s,平均耗时0.033 ms;10个网段总用时14.448 s,平均耗时0.048 ms;外网总用时21.155 s,平均耗时0.071 ms。在此期间服务器的中央处理器占用率为43.5%,内存消耗可忽略不计。虽然外网平均检索用时最多,但是0.071 ms的检索速度完全满足工作需求,服务器资源消耗低,不影响其他应用的正常运行。

图6 系统部署网络拓扑图Fig.6 The network topology of system

图7 三网段检索性能测试Fig.7 Search performance of three network segments

4 总结和展望

本系统利用Python3.7的异步协程特性降低了信息的获取难度,提高了系统的吞吐能力;通过数据库代理对象工厂模式整合多种数据库,增强了系统的可扩展性;使用自定义检索命令的方式简化了用户检索接口,方便工作人员及时掌握望远镜运行环境信息;使用命令筛查制度,确保大型望远镜内部运行时细节不暴露,提高了服务精度,并维护了数据的安全性。

本系统为将来对郭守敬望远镜所有数据库统一管理提供了基础框架,设置了多种数据库接口,方便信息资源的后期扩展。

猜你喜欢
望远镜代理客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
望远镜的发明
超级望远镜头
“赶紧送几架望远镜过来!”等7则
复仇代理乌龟君
新华社推出新版客户端 打造移动互联新闻旗舰
108名特困生有了“代理妈妈”
胜似妈妈的代理家长