基于Android的志愿服务管理APP的实现
2019-08-23罗旭芷宋亚威聂成
文/罗旭芷 宋亚威 聂成
1 引言
如今大数据分析与挖掘技术受到了各类生活、电商、社交、影音类应用平台的青睐,并成为实现对客户画像、产品精准营销的重要手段。本志愿服务管理系统集成了分布式数据管理、大数据并行计算技术,是最新的大数据处理技术在志愿服务管理中的一种实践。其相比于传统的数据存储方式更为灵巧轻快,更具安全性,在功能的设计上更提高了组织管理效率和有效信息的利用率。
本文将以郴州福城志愿者协会作为实例,介绍Android平台、Hbase+Spark技术的引入,为志愿服务管理的信息安全化、精准化提供一种新的方式。
2 关键技术介绍
2.1 Hbase+Spack
HBase作为一种分布式的、面向列的开源数据库,可以对实时流入的数据进行处理,并对外提供在线查询功能,它的性能优越性体现在其高吞吐、低延迟、好的随机及范围查询能力上,并能存储海量数据等,同时支持多版本、增量导入和多维删除,是志愿者服务管理系统开发中的不二只选,迎合了志愿者服务过程中的活动信息量大,参与人数多,互动社交性强的特点。但其在流式数据的处理上却存在难以实现复杂分析等功能的缺陷,于是我们采用Spark与其结合。
Spark是基于集群类分布式和内存抽象计算的大数据并行处理框架,可支持构建低延迟、大型的数据分析应用程序。具备着全面、友好的特点,不仅支持流式处理、复杂的SQL分析、图计算等模型,可多模型组合解决场景问题,还支持多种语言多种数据库配合开发。利用Hbase+Spack构建数据仓,既提升性能,更降低了开发成本。
2.2 StackMod后端云
StackMod移动开发云平台是一款基于云计算的后端云服务系统,相比传统服务器它更具可伸缩性、更为便捷、更加安全可靠。它可为移动应用开发者提供存储解决方案、实时分析、消息推送、多种社交网站的集成、并能提供位置信息、广告等服务,通过StackMod可以极大地简化工作,快递构建和部署API架构,并短时间内在云端激活,有助于我们花更多的时间在核心功能的设计开发上。
3 系统总体设计
3.1 系统总体结构
因为涉及客户端的开发,并需要实现APP的个性化设计和安全设计,本系统利用Android Studio开发工具进行开发,采用Client/Serve结构,如图1所示。系统采用StackMod后端云来支持后端发布服务,利用HBase数据库存放用户产生的数据,服务器端与客户端通过移动数据网络进行通信,实现数据交互。
3.2 数据库概念结构E-R图
根据需求分析,设计划分出活动、用户、管理员、数据分析四大主要模块。系统E-R图如图2所示。
3.3 数据库逻辑设计
图1:系统功能结构拓扑图
图2:系统E-R图
图3:注册/登录流程图
使用StackMod后端云创建该系统所需数据库。在数据库表的设计中包括了v_userinfo、a_content、a_record、b_analysls、a_diary、a_theme、a_time等多个表。主要的v_userinfo表用于存放账户基本信息,性别、年龄、地区、头像、登录日志、在线时位置等字段;a_content表用于存放活动的主题、时间、地点、简介、限定人数等信息;a_record表用于存放活动跟帖中的图片、文字、参与活动用户中用户在线异动记录;b_analysls表用于存放数据分析产生的关键字。
4 系统功能设计
4.1 注册登录模块设计
本系统直接通过手机获取验证码登录,第一次登录即默认注册并创建账号,登录时需要用户输入手机号码和验证码,我们直接使用腾讯云的Captcha验证码服务,点击登录按钮后,Android移动端连接Hbase云服务器,服务器对登录信息进行验证检查,验证是否存在实名信息,若已存在,用户可直接登录到主界面,若无认证信息,用户跳转至认证页面,系统调用NCIIC接口进行认证。具体实现流程如图3所示。
4.2 活动管理模块
活动管理模块使用android自带的EditView、TextView、ImageView、ListView控件进行输入,调用setImageResource、setText方法获取数据库图片及文字信息在用户端进行显示。控件绑定相应事件,对管理员及普通用户的点击进行响应。例如,审核界面中的“通过审核”控件绑定onItemClick事件,核心代码如下:
Pass pass = PassList.get(position);String thinkrid = map.get("t_define");//调用Pass类
Toast.makeText(HbaseCRUDActivity.this,Passed+”t_define”,Toast.LENGTH_LONG).show(); //将t_define确定值赋给thinkrid,后台获取确定值的同时反馈给管理员操作成功。
4.3 数据分析应用模块
下载安装并配置好Scala及Spack文件及环境,在Android Studio中导入Spark Jar文件,在scr下建立Spark工程包并创建Scala入口,将类改为对象,并编写主函数入口,导入依赖包,关键词计算核心代码:
conf.setAppName("V_manage_s")//创 建SparkCore的程序入口
valsc = new SparkContext(conf)//读取文件生成RDD
val lines=sc.textFile("hbase://node1:8090/tmp/a_record.txt")//在Hbase中读取数据,通过函数进行处理,对具体数据进行计算
valsortRdd: RDD[(String,Int)]= arecordCount.sortBy(tuple => tuple._2,false)//对数据结果进行保存sortRdd.saveAsTextFile("hbase://node1:8090/tmp/b_analysis.txt")数据与客户端管理界面通过http连接,显示。
5 小结
本文采用Hbase+Spack技术和Android studio平台,实现了以福城志愿者协会为例的志愿服务管理APP的开发。实现在志愿者们使用APP组织管理活动的过程中,对其账户及操作信息进行分析,在主页推荐其感兴趣和适合的公益活动,并在特定的时间周期内生成数据报告,分析志愿者群体们关心的问题和需要改善的方向反馈给组织管理者。验证码动态登录保证了账户的安全,实名认证一定程度上保证了活动的顺利进行,起到痕迹化管理的作用。研发前我们通过社群构建等方式对项目进行了试运营,在研发过程中结合前期的实践设计了APP的功能,在后期我们将不断地优化迭代,并将其投入市场广泛应用,为公益事业的进步添砖加瓦。