张 明
中央宣传部电影数字节目管理中心,北京 100866
农村电影放映工程是服务基层群众的文化活动,自1998年提出,即在本世纪在广大农村实现 “一村一月放映一场电影”的目标。此工程是推进文化基本公共服务均等化,加强农村文化建设,丰富农村文化生活的重要手段。随着我国国民经济水平的发展,广大农村群众对于精神层面的需求也相应提高,因此农村公益电影公共服务平台的升级建设也显得尤为重要。为进一步落实公共文化服务建设中百姓“点单”、院线 “派单”、放映队 “接单”、群众 “评单”相贯通的工作模式,电影数字节目管理中心自2020年开展农村电影放映满意度调查工作,从观影行为、观影喜好、观影评价分析等方面入手,通过网络问卷调查的方式获取农村电影观众群体观影体验一手资料,掌握基层放映和观影的实际情况,为下一步工作开展提供借鉴和参考。
移动互联网技术的飞速发展,推动了人民生活方式的改变,传统的问卷调查方式收集率低,统计繁琐,人工成本高。观影群众问卷调查作为农村公益电影放映中的一环,在目前的信息化建设过程中存在以下需求。
(1)结合已有业务,打通数据链路
农村电影放映工程信息化运营已有十多年时间,形成了较为完备的业务流程,而群众观影问卷调查反馈数据是新增的功能点,作为其业务链条上的一环,需结合已积累的生产数据,形成更加全面的数据平台。目前,平台存储了大量业务数据,例如订购数据、放映数据、日志数据等,可以应用这些数据来做运营及战略决策。而新增的数据也需要制定相应的标准和流程,让评价数据成为真正有价值的存在。要解决此类问题常有三个方法:方法一:做数据接口。由各个软件厂商提供数据接口,实现数据汇集,这种方法需要花费大量人力和时间去协调,工作量很大且耗时长。方法二:开放数据库。为实现数据的采集和汇聚,开放数据库是最直接的,但同样也需要协调各软件厂商开放数据库,难度很大。而要同时连接多个软件厂商的数据库,并且实时获取数据,这对平台性能也是个巨大的挑战。方法三,基于底层数据交换的数据直接采集方式。此方式可以独立抓取,不需要软件厂家配合,能够实时采集数据,兼容各种平台软件,配置简单,周期更短。一方面,可以快速自动实现不同系统及软件的数据交互,打通不同平台之间的数据流通;另一方面,还可以最大程度地实现业务流程自动化,解放劳力资源,实现增效降本。
(2)群众填报时间集中,资源动态调配
依据农村电影放映业务的特点,其放映时间大多集中在夜晚时段,观影群众问卷调查的填写也会在此时间段内进行访问与提交,因此会带来短时间内的高并发。高并发会导致站点服务器或者数据库服务器资源被占满崩溃,甚至出现服务器宕机、数据的存储不完整、数据更新异常问题等。而在客户端可能引发的现象是网页卡顿、提交数据失败等,均会给用户带来较差的体验。而在白天时段,填报量较小。因此,需要搭建配套的软硬件资源监控,一方面解决短时间内数据高并发访问带来的影响,另一方面实现 “闲时”资源动态调配。
(3)实时监控数据状态,保证数据质量
数据质量是数据治理中重要的一把标尺,高质量的数据对管理决策、业务支撑都有极其重要的作用。数据质量的关键所在包括完整性、一致性、准确性和及时性。完整性确保数据中应该收集的和实际收集的数据之间没有差距,一致性是指数据类型必须与收集的数据的预期版本一致,准确性是指收集的数据是正确的,相关并准确地表示它应该是什么,及时性要求应在预期时间收到数据,以便有效利用信息。当数据质量出现问题,不能及时地警报通知,只能先发现后治理再进行任务返工,影响数据产出和决策,而对数据质量的实时监控能够第一时间反馈相关责任人相关事件,协助运维人员更精准排查问题。
(4)成熟的问卷产品数据分析维度受限
数据可视化的意义是帮助人更好地分析数据,信息的质量很大程度上依赖于其表达方式。数据可视化的本质就是借助图形化的手段,清晰有效地传达与沟通信息。目前比较成熟的产品,例如问卷星等,依托于自身的分析和展示平台,虽然也能够按照客户需求导出或者下载相应表格或者统计数据,但无法直接做到可视化呈现,更不要说与其他环节的数据进行关联分析及展示了。并且,受限于产品本身,是无法直接连接其数据库的,后期数据分析维度受制于产品开放的权限。因此,如果要从根本上解决这个问题,就需要从源头上掌握数据本身所有权限,然后再在此基础上进行数据分析和展示。
针对以上具体问题,文本介绍了一种基于Flask+Webhook技术的问卷调查数据收集解决方案,旨在搭建一套映后能够自适应题目变化的评价分析系统,及时反馈群众观影意见,整合已有的生产数据进行交叉分析,进行可视化呈现,为运营人员和管理人员提供决策支持。
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。RESTful特点包括:每一个URI代表1种资源;客户端使用GET、POST、PUT、DELETE 4个表示操作方式的动词对服务端资源进行操作,GET用来获取资源,POST用来新建资源或者用于更新资源,PUT用来更新资源,DELETE用来删除资源;通过操作资源的表现形式来操作资源;资源的表现形式是XML或者HTML;客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。从其诞生之日开始,它就因其可扩展性和简单性受到越来越多的架构师和开发者们的青睐。一方面,随着云计算和移动计算的兴起,许多企业愿意在互联网上共享自己的数据、功能;另一方面,在企业中,RESTful API(也称RESTful Web服务)也逐渐超越SOAP成为实现SOA的重要手段之一。时至今日,RESTful架构风格已成为企业级服务的标配。
Webhook是一个API概念,对比于RESTful是一种反向API机制,类似于触发器。近几年,Webhook作为一个轻量的事件处理应用,在前后端对接的开发模式中变得越来越流行。Webhook提供了一种新的前后端交互方式,对于一些没有前端页面的业务场景,例如登录验证、获取反馈数据,或者安全性较高的支付场景等,适合使用Webhook做主动推送。如果客户端要长期监听某个任务的状态,按照正常的API调用的方式去做,就需要不停地轮询服务器来获取当前状态;如果使用Webhook则无需轮询,通过API可以确定是否发生了更改,如果更改了只需要等待服务器推送信息过来,然后客户端更新就可以。
在传统的Web Server设计中,如果客户端需要获取服务器端的最新数据,需要通过RESTful中的GET方法不停询问服务器是否有最新数据,然后等待服务器的反馈。而在Webhook中,客户端无需主动询问服务器,如果服务器端有新数据会主动推送到客户端。由此来看,Webhook方式更加高效。
图1 RESTful与Webhook
通常Webhook请求过来的数据格式为XML和JSON两种,在现代Web应用中,都能很好地解析和对这两种数据进行交互。由于Webhook会向公网上的Hook Url发送数据,这就意味着某些不怀好意的人可能会找到这个Url,从而发送错误数据。可以通过以下一些技术手段来解决这个问题:增加Token机制、增加Auth认证、只接收对应服务端Domain或IP请求、数据签名。
Flask和Django均是当今最流行的Python Web框架。Flask是由Python语言写成的轻量级的Web框架,其最早是由奥地利人Armin Ronacher于2010年发布。Flask最显著的特点是 “微”框架,轻便灵活的同时又易于扩展。默认情况下,Flask只相当于一个内核,不包含数据库抽象层ORM、表单验证、用户认证、发送邮件等其它Web框架经常包含的功能。Flask依赖用一些灵活的扩展,例如邮件Flask-Mail、用户认证Flask-Login、数据库Flask-SQLAlchemy等来给Web应用添加额外功能。Flask没有指定的数据库,既可以是关系型的也可以是非关系型的。Django也是一个开源的Python Web应用框架,最早于2005年发布,其采用了MVT的框架模式,即模型M、视图V和模版T。Django被认为是 “大而全”的重量级 Web框架,其自带大量的常用工具和组件,例如数据库ORM组件、用户认证、权限管理、分页、缓存等,甚至还自带了管理后台Admin,比较适合快速开发功能完善的企业级网站。Django自带免费的数据SQLite,同时支持MySQL、PostgreSQL等其他数据库。
从应用上来说,Flask与Django均广泛用于Web应用开发。Django和Flask各有利弊,如果开发项目目标明确,就是要开发包含各种功能的传统企业级网站,使用Django能节省不少寻找或开发第三方扩展的精力。开发企业级网站通常由一个团队来进行,Django可插拔式的APP设计思想和刚性的项目结构便于团队后期维护项目代码。如果只需要开发一个轻量级网站或者特定的微服务,比如API,Django自带的大而全的网站功能很多用不上,比如缓存和管理后台,此时只需要部署Flask即可。对于本项目而言,需求较为简单,只需搭建一个连接问卷系统与数据库之间的桥梁,无需搭建复杂全面的网站。综合考量,本项目选择Flask框架进行搭建。
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器上,以用来提高网站、应用、数据库或其他服务的性能和可靠性。
一个没有负载均衡的Web架构如图2所示,用户是直连到Web服务器,如果这个服务器宕机了,那么用户也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。
图2 无负载均衡的Web架构
而通过在后端引入一个负载均衡器和至少一个额外的Web服务器,可以缓解这个故障。通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。
从图3可以看到,用户访问负载均衡器,再由负载均衡器将请求转发给后端服务器。在这种情况下,单点故障现在转移到负载均衡器上了。负载均衡器主要为下面四种主要类型的请求设置转发规则:HTTP、HTTPS、TCP、UDP。负载均衡器一般根据两个因素来决定要将请求转发到哪个服务器。首先,确保所选择的服务器能够对请求做出响应,然后根据预先配置的规则从健康服务器池 (Healthy Pool)中进行选择。
图3 有负载均衡的Web架构
因为,负载均衡器应当只选择能正常做出响应的后端服务器,因此就需要有一种判断后端服务器是否 “Healthy”的方法。为了监视后台服务器的运行状况,运行状态检查服务会定期尝试使用转发规则定义的协议和端口去连接后端服务器。如果,服务器无法通过健康检查,就会从池中剔除,保证流量不会被转发到该服务器,直到其再次通过健康检查为止。
ECharts开源来自百度商业前端数据可视化团队,基于Html5 Canvas,是一个纯Javascript图表库,提供直观、生动、可交互、可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。
ECharts提供了丰富的可视化类型,例如常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、Treemap、旭日图,用于多维数据可视化的平行坐标,还有用于BI的漏斗图、仪表盘,并且支持图与图之间的混搭。支持多种数据格式无需转换直接使用,通过增量渲染技术能够展现千万级的数据量,多渲染方案跨平台使用,支持对数据进行多维度数据筛取、视图缩放、展示细节等交互操作等。
系统整体架构如图4所示,用户持有手机扫描二维码进入问卷调查页面,待用户提交答案后,原始数据经过Webhook服务推送至服务器。服务器上部署Flask用来接收数据,使用Python进行数据解析及清理然后存储至数据库MySQL。根据业务需求生成各种报表及可视化展示。
图4 整体架构
当服务端通过Webhook服务推送数据到客户端后,服务器就不再关注这些已发送数据。但是真实情况中因为网络延迟、无法请求成功等情况会导致数据抵达客户端失败。因此,为解决此类问题,需要对所有事件的状态值进行监控,若发现非正常状态,需启动主动发送机制,保证数据的完整性,如图5所示。
图5 Webhook数据监控流程
通过Webhook服务推送的数据格式一般选择JSON,客户端使用Flask接收数据,再使用Python语言进行解析。原始数据中包含系统时间、问卷ID、用户标识等基础信息,另外需要根据不同的答案类型解析答案数据,答案类型包括:单选、多选、下拉选项、填空、矩阵、文本、联动、附件等,每类题目解析格式需匹配相应的格式。
问卷调查的题目不是一成不变的,会根据农村公益电影放映的服务对象、服务内容、服务形式等进行调整,例如每年围绕不同主题的放映推荐活动等,问卷调查题目也需要与之适应改变。为保障某些题目更改后能够快速上线,需制定相应的脚本检测题目ID,判断其题目类型并解析答案格式。如图6所示,题干监控程序负责对问卷题目的实时监控,一旦发现题干有所变化会立刻判断变化类型,根据目标类型修改解析过程和数据格式,然后更新至问卷题目中。
图6 题干自适应流程
在数据来源多样化的情况下,数据的可靠性和实用性直接影响到统计分析是否得到正确的结论,所以说数据的质量尤为重要。数据质量主要分为以下几个方面。
(1)完整性:确保数据中应该收集的和实际收集的数据之间没有差距。如果数据不完整,可以通过暂停提交来解决此问题。通过使用强制字段功能,可以轻松实现数据完整性,比如没有填写必填字段则数据无法提交。数据的完整性也将确保花费更少的时间浪费在修复因数据不完整而导致的错误。
(2)一致性:数据类型必须与收集数据的预期版本一致。可以通过使用数据收集应用程序中的下拉菜单来确保这一点,这将是以预期格式一致的方式收集数据。而不是以自由形式填写,还有一些预先确定的选项可供选择,常用于填写性别、出生年月、省市区县等。
(3)准确性:收集的数据是正确的,相关并准确地表示它应该是什么。准确性比数据完整性和一致性更有难度,但是,仍然存在人为错误的空间。为了减少不准确的可能性,必须实施额外的措施,例如将图片捕获、GPS位置和时间戳添加到记录的事件中。
(4)及时性:应在预期时间收到数据,以便有效利用信息。任何较慢的速度都不能提供足够的信息。有了实时数据和分析,管理者就能更好地做出更有效、更明智的决策。
为保证数据质量,可以通过事先定义好的规则、调度时间、工作流程,自动完成数据的质量检查,极大地减少人力的投入和过程干预,提升效率,减少误差,如图7所示。同时遇到重大问题能够及时警告,对质量检查的结果提供多方式 (界面、邮件、短信)告警,及时了解到系统检查结果,避免重大问题的延误。
图7 数据质量保证
可视化呈现能够从多个角度进行分析展示,现将观影行为、观影喜好、观影评价分析如下。
观影行为分析:从观影场所、获知放映信息渠道及观影频率三个方面调研观影行为,并将这三个方面与受访观众的所在地区与年龄进行交叉分析,以得到不同地区、不同年龄受访观众的观影行为差异 (图8)。
图8 观众性别及年龄分布
观影喜好分析:调研观众的观影需求和喜好,有助于促进更为精准的供需对接。这一部分,从影片题材、片种两个方面收集受访观众的观影需求(图9),为后续影片供应组织和宣传推介工作的开展提供参考。
图9 观众观影偏好
观影评价分析:从受访观众观影评价整体情况、视听效果评价、观众影片质量评价、观影环境评价四个方面进行打分,综合考量对影片内容、放映服务等环节的反馈。
文本介绍了一种基于Flask+Webhook技术的问卷调查数据收集解决方案,结合已有业务,打通了数据链路,能够实现资源动态调配,实时监控数据状态,保证了数据质量。通过实时获取原始数据经数据清洗、加工、存储后,根据不同的业务场景进行不同维度分析及展示。农村观影满意度调查自2020年启动,截至2022年3月31日,已收集问卷调查样本15万余份,整体满意度为98.5%。调查问卷通过网络问卷形式获取农村电影观众群体观影体验一手资料,为了解群众观影需求和意见提供了渠道,建立了与群众沟通的桥梁,促进了公益放映电影市场的蓬勃发展。鉴于各省观影群众行为、偏好、评价会依托当地具体情况有所侧重点,接下来工作目标是在全国数据的基础上根据地理信息进行细化分析,利用数据深化对影片宣发、选片订购的数据服务,进一步促进需求和供给的精准对接、影片资源的进一步利用挖掘。❖