停课铃桌面插件系统的设计与实现
2016-06-21殷美祥罗曼宁林江陈万里
殷美祥,罗曼宁,林江,陈万里
(广东省气象服务中心,广东广州 510080)
停课铃桌面插件系统的设计与实现
殷美祥,罗曼宁,林江,陈万里
(广东省气象服务中心,广东广州 510080)
摘 要:为了在PC端建立一个可实现“主动推送”停课消息和预警信息的服务渠道,开发停课铃桌面插件系统。停课铃桌面插件系统采用模块化低耦合架构设计,其推送网关运用Node.js平台,与突发公共事件预警信息发布系统建立TCP长连接,实时接收预警、停课消息,并向客户端推送,使其成为气象部门一个新的应急气象高效服务渠道。停课铃桌面插件还拥有天气实况、逐天预报、逐时预报、空气质量等多个功能模块,是公众安排工作生活事宜的参考“利器”。
关键词:计算机技术与应用;停课铃;预警;气象服务
资金项目:广东山洪地质灾害防治气象保障工程服务管理系统之山洪预警信息推送系统
殷美祥,罗曼宁,林江,等.停课铃桌面插件系统的设计与实现[J].广东气象,2016,38(3):77 -80.
随着广东社会经济的快速发展,公众对应急气象服务的关注度越来越高,需求日益增多[1 -4]。应急气象服务同时也是气象现代化建设的重要组成部分,省委省政府对气象灾害预警和突发事件预警信息发布工作高度重视。目前,PC端的气象服务渠道主要是微博、网站。微博、网站与用户之间是一种“弱关系”[5 -8],若用户不主动关注实时消息,气象信息往往被“消息海洋”所淹没,气象部门难以根据用户的特定需要,进行主动的,点对点的推送消息服务。《广东省气象灾害防御条例》2015年3月1日起正式施行,明确规定气象部门发布的台风黄色、橙色、红色预警信号和暴雨红色预警信号为停课信号。停课消息作为与公众生活密切相关的消息,需要及时有效地推送给公众。开发“停课铃”桌面插件系统,可在PC端建立一个新的应急气象服务渠道,借助其高效的“主动推送”功能,开展基于地理位置精细化的气象服务和应急气象服务,有利于扩大公共气象服务覆盖面,加强服务渠道响应和传播能力,提高气象服务靶向性,从而有利于推进公众认知“感觉到是”的气象现代化建设[8 -10]。
1 系统架构
停课铃系统采用模块化低耦合架构设计,分为管理平台、数据存储、推送网关、软件开发工具包(SDK)和桌面客户端5个模块,各模块之间通过松耦合连接,如图1。系统采用Socket进行数据通信,使用自定义协议进行数据封装。该系统采用分层设计,分为接口层、应用层、支撑层和数据层4层结构。各层之间的通讯以及底层的服务是企业应用服务器构建的SOA架构,以企业服务总线(ESB)的方式对外提供服务。企业服务总线是SOA参考架构的核心。它为整个架构范围内所有服务提供相互通讯的能力。
各层划分和功能模块如,图1所示。
图1 系统架构图
应用层:包括天气实况、逐天预报、逐时预报、空气质量、预警数据功能模块。
接口层:为外部终端及第三方接入商,提供多种接口方式,通过接口实现气象数据交互与通信。
推送网关:与接口层进行通信,解析各类请求并通过解密程序实现参数传递与数据交互。监控各socket接口、服务器状态等信息,结合业务调度模块实现资源的合理性分配。
数据层:基于腾讯云的云服务器、云数据技术。腾讯云具备主从备份的数据库服务、负载均衡等有效增强底层可靠性及稳定性。
2 关键技术
2.1推送网关架构
由于在有灾害天气过程时,可能需要接受大量公众同时请求连接。推送网关是作为整个客户端的后端服务器架构存在,必须能够支撑用户客户端的各项数据请求。如果使用Java?和PHP语言,每个连接都会生成一个新线程,每个新线程可能需要2 MB的配套内存。在一个拥有8 GB RAM的系统上,理论上最大的并发连接数量是4 000个用户。随着客户群的增长,Web应用程序需要支持更多用户,需要通过添加更多服务器来解决这一问题,从而增加服务器成本、流量成本和人工成本等。另外,用户可能针对每个请求使用不同的服务器,任何共享资源只能在所有服务器之间共享,所以整个Web应用程序架构(包括流量、处理器速度和内存速度)中硬件资源很可能会出现瓶颈。停课铃推送网关采用Node.js平台进行开发,基于事件驱动及异步I/ O,处理庞大的并且高吞吐量的并发连接,使得单机数十万级能同时在线,推送消息秒级可达[11 -14]。另外,推送网关根据突发公共事件预警信息交互协议(CAP),通过socket与突发中控建立TCP长连接,当接收到突发中控平台预警数据后,通过VPN网络安全连接到腾讯云的推送集群,推送集群按照用户订阅的位置以及预警类别、等级,发布相应预警信息。
推送网关的数据库采用MongoDB,数据库之间进行主从备份,每天各集群间的数据实时同步,以保证数据的统一性和完整性。这样便于在后续的扩容阶段,直接通过增加服务器即可满足扩容要求。
采用上述机制,一个组件负责推送数据的发送,一个组件负责推送数据的写入,一个组件负责整个过程的监控与异常处理,在整个推送过程中,如果某条数据发送失败,组件根据返回的结果状态,决定是否再次发送或者写入内存的虚拟库中,使得预警信息和停课消息推送更加及时可靠,让停课铃桌面插件成为气象部门新的一个应急气象服务高效渠道。
2.2自动更新
随着业务发展,停课铃可能调整或增加各项功能模块,包括后台接口参数变更、页面布局调整、功能增强与优化、网关服务器配置信息变更等,所以必须能够自动更新。通过管理后台发布客户端整体版本与客户端阶段性的补丁版本,然后客户端与管理后台进行通信,当发现管理后台的客户端版本出现变化时,及时通知客户端进行版本升级,为后期维护以及提升服务打下基础(图2)。
图2 自动更新机制示意图
3 功能模块
3.1天气实况模块
天气实况模块,包含当前的气温、相对湿度、风力风向、空气质量、天空状况。用户不仅可以方便地查询当地的天气情况,还可以查询全国其它地区的天气信息(图略)。
由于实况数据具有实时性、时效性、及时性、地区性等特点,需要根据用户所设点的位置及当前的时间不停地变化。为了满足这些要求,客户端的实况数据模块,采用守护进程和心跳的方式,每6 min与推送网关进行一次通信,满足与推送网关的最新数据交互,最大程度地确保实况数据及时、准确。
3.2逐天预报模块
由于如今人们对预报,尤其是未来多天的预报要求越来越高,停课铃设置逐天预报模块。逐天预报数据基于用户所设置的位置,显示6d的天气情况,包括气温、风力风向、天空状况。每天预报数据分栏显示,清晰直观地体现天气趋势变化。
3.3逐时预报模块
对于广东省内各个地区,设置了逐时预报模块,显示当前位置的24 h精细化预报。从当前时间开始,提供每小时的气温和天气状况,从中可以清晰地显示出降雨加强或减弱、气温上升或下降的变化趋势,方便用户安排穿衣、出行、洗车、运动等各项事宜。
3.4空气质量模块
停课铃的空气质量模块,不仅提供AQI大小、等级、全国城市排名,还提供了PM2.5、PM10、SO2、NO2、CO、O3数据。同时界面上,突出AQI指数,使界面不至于因为数据的繁多而显得杂乱无章,同时让用户能清晰形象地了解自己所处地区的空气质量和其在全国城市的排名情况。
3.5预警订阅与推送模块
用户基本只关心当地的气象预警消息,为了让气象服务更具针对性,停课铃只向用户推送其预订位置与类别的预警。广东气象预警类型有10种,大部分预警种类还包含多个级别,而且深圳、珠海两市预警与其它地市还有所不同。为了让用户体验更佳,停课铃设有“自定义预警设置”功能,还提供一键订制的“推荐预警”按钮,包含有预先筛选过的对生活影响较大的预警种类和级别,整个预警订制流程清晰明了,方便操作(图3)。
气象预警存在有效性和突发性特点,故预警功能模块与负责发布广东气象预警的中控平台进行不间断通信,随时接受来自中控平台的预警数据并加以解析,判断预警消息发生的时间、地点与用户所订阅的预警位置和类别之间的关系,进行预警消息的推送。
不同级别的预警,客户端的显示效果有差异。所有的预警推送,都在PC端桌面右下角进行弹窗,并显示在停课铃主界面上。当预警模块接收到台风黄色、台风橙色、红色预警和暴雨红色预警时,根据《广东省气象灾害防御条例》规定,达到停课标准,停课铃主界面上将显示通知栏,通知用户所关注地区的停课消息。
图3 预警订制流程图
3.6勿扰功能
停课铃能够设置避免打扰的功能,满足不同用户的差异化需求。在系统托盘图标右键菜单“勿扰模式”,开启后所有的消息不再弹出,再次点击关闭。在预警订阅页设置“勿扰时段”设置,设置后,在设定的时间段内不进行消息弹出。当停课铃开启“勿扰模式”,“勿扰时段”设置将暂时无效,当“勿扰模式”关闭后,将遵循“勿扰时段”设置开启免打扰功能。
3.7其它功能
1)悬浮小窗。
用户一般不会都停留在停课铃主界面,工作时候,可能关闭主界面。为了在用户关闭主界面时,仍能方便地了解当前天气,开发了悬浮小窗口,并在上面显示当前的天气状况、气温、风力风向,以及日期。单击悬浮窗,主窗口立即弹出,也可以通过隐藏功能,关闭悬浮窗,让用户拥有更多的选择空间。
2)交互式功能。
分享消息功能能使用户很方便地在微信、新浪微博、腾讯微博分享停课铃天气信息,同时也促进品牌口碑传播,提高停课铃的知名度。考虑到观测站数量和分布,以及下垫面等因素的影响,观测站所处的位置天气情况和用户实际位置的天气可能存在较大的区别,甚至每个用户所认为的天气也是有所不同,例如实况中的“多云”往往给用户认为是晴天,因此停课铃中的纠错功能给予用户反馈的机会,用户可将自己认为的“天气实况”发送给停课铃,参与纠正实况。
4 结论
1)由于在有灾害天气过程时,可能需要接受大量公众同时请求连接,停课铃桌面插件系统采用模块化低耦合架构设计,与突发公共事件预警信息发布系统建立实时连接,其推送网关运用Node.js平台,使得单服务器支持数十万级公众同时在线,确保预警、停课消息推送及时可靠。停课铃桌面插件是气象部门新的一个应急气象服务高效渠道。
2)停课铃桌面插件系统具有自动更新功能,可通过管理后台发布客户端的整体版本或补丁版本,并与客户端进行通信,进行版本升级,为后期维护以及提升服务打下基础。
3)停课铃桌面插件系统接入百度地图,并调用气象局内部逐时预报和逐天预报数据接口,实现广东范围内精细至街道级别的天气信息查询,成为公众安排工作生活事宜的参考“利器”。
4)停课铃系统具备多样式的预警订制、用户主动纠正天气、“勿扰”模式、空气质量排名等功能模块,满足用户的个性化需求。
参考文献:
[1]贾子冰,李娜.突发灾害事件的应急气象短信服务策略[J].广东气象,2008,30(6):48 -50.
[2]俞宙,陆文,郭鹏.基于气象服务渠道的定位及研究[J].广东气象,2015,37(1):55 -58.
[3]王磊.新媒体在公共气象服务领域中的应用——以微博、微信为例[J].西部广播电视,2013(20):41.
[4]张丽,朱芙蓉,江海萍,等.微信平台在气象信息传播中的应用[J].安徽农业科学,2015,43(10):387 -388.
[5]朱定真.董丽丽.气象服务信息有效传播能力探讨[J].气象科学,2010,30(4):522 -525.
[6]陈静,梁宏升.自媒体时代的气象服务[J].广东气象,2013,35(6):52 -55.
[7]张哲睿,丘良.中国气象网站的现状与未来发展趋势[J].气象研究与应用,201435(1):122 -124.
[8]高迎新,史天宇.气象微博在公共气象服务中的作用[J].学会,2014(4):62 -64.
[8]许永锞.改革开放狠抓落实全面推进气象现代化[J].广东气象,2013,35(1):1 -5.
[10]俞宙,林江.基于微信开展应急气象服务[C]/ /第30届中国气象学会年会论文集,2013.
[11]陈苏婷,张燕,张艳艳.气象预警信息智能接收处理系统的设计与实现[J].计算机工程与设计,2014,35(1):338 -343.
[12]王金龙,宋斌,丁锐.Node.js:一种新的Web应用构建技术[J].现代电子技术,2015,38(6):70 -73.
[13]沈昕.基于Node.js及Mongodb的在线学习测试系统设计[J].无线互联科技,2015,(4):30 -32.
[14]黄经赢.基于Socket.io + Node.js + Redis构建高效即时通讯系统[J].现代计算机(专业版),2014,(13):62 -64.
中图分类号:TP38
文献标识码:A
doi:10.3868/ j.issn.1007 -6180.2016.03.021
收稿日期:2015 -10 -15
作者简介:殷美祥(1881年生),男,助理工程师,学士,主要从事气象服务工作。E - mail:646343261@qq.com