数据采集(获取)
用户本地上传爬虫
数据存储
使用阿里云OSS,可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种结构化或非结构化数据文件。阿里云提供的海量、安全、低成本、高可靠的云存储服务。通过调用API,在任何应用、任何时间、任何地点上传、下载、分享数据,也可以通过Web控制台对数据进行简单的管理。
(图1)阿里云存储服务
(图2)用户随时随地都可以在毫秒级完成数据浏览分享和下载
(图3)提供IMG图像处理功能
(图4)采用KEY-VALUE形式存储非结构化数据
搭建一个基于OSS的移动应用数据直传服务,具有以下优势:
1.安全的上传下载方式(临时、灵活的赋权鉴权)
2.成本低(用户不需要准备很多服务器,因为移动应用直联云存储,只有控制流走用户自己的应用服务器)
3.高并发,支持海量用户(OSS有海量的上传和下载带宽)
4.弹性(OSS有无限扩容的存储空间)
5.方便(可以方便的对接到媒体转码服务-视频多端适配,图片处理服务,CDN加速下载等)
角色解析
1.Android/iOS移动应用,即最终用户手机上的APP。
2.OSS,即阿里云对象存储,负责存储APP上传的数据。
3.RAM/STS负责生成临时上传凭证。
4.用户应用服务器,即提供该Android/iOS应用的开发者开发的APP后台服务,管理APP上传和下载的Token,以及用户在APP上传数据的元数据信息。
数据流解析
1.应用向用户的应用服务器申请一个临时上传凭证。
2.Android/iOS应用不可能直接存储AccessKeyID/AccessKeySecret,这样会存在泄密的风险。所以应用必须向用户的应用服务器申请一个临时上传凭证(下文将此临时上传凭证称为Token),注意这个Token是有时效性的,如这个Token的过期时间是30分钟(这个时间可以由应用服务器指定),那么在这30分钟里面,该Android/iOS应用可以使用这个Token从OSS上传和下载数据,30分钟后再重新获取。
3.用户的应用服务器检测上述请求的合法性,然后返回Token给应用。
4.手机拿到这个Token后就可以将数据上传到OSS,或者从OSS下载数据了。
典型的基于OSS的移动开发的四大组件:
OSS:提供上传、下载、上传回调等功能。
开发者的移动客户端(App或者网页应用),简称客户端:通过开发者提供的服务,间接使用OSS。
应用服务器:客户端交互的服务器。也是开发者的业务服务器。
阿里云STS:颁发临时凭证。
(图5)开发者架构图
获取STS凭证
1、客户端向应用服务器发出上传文件到OSS的请求。
2、应用服务器向STS服务器请求一次,获取临时凭证。
3、应用服务器回复客户端,将临时凭证返回给客户端。
4、客户端获取上传到OSS的授权(STS的AccessKey以及Token),调用OSS提供的移动端SDK上传。
5、客户端成功上传数据到OSS。如果没有设置回调,则流程结束。如果设置了回调功能,OSS会调用相关的接口。
这里有几个要点:
客户端不需要每次都向应用服务器请求授权,在第一次授权完成之后可以缓存STS返回的临时凭证直到超过失效时间。
STS提供了强大的权限控制功能,可以将客户端的访问权限限制到Object级别,从而可以实现不同客户端在OSS端上传的Object的完全隔离,极大的提高了安全系数。
(图6)获取URL凭证
1.客户端向应用服务器发出上传文件到OSS的请求。
2.应用服务器回复客户端,将上传凭证(签名URL或者表单)返回给客户端。
3.客户端获取上传到OSS的授权(签名URL或者表单),调用OSS提供的移动端SDK上传或者直接表单上传。
4.客户端成功上传数据到OSS。如果没有设置回调,则流程结束。如果设置了回调功能,OSS会调用相关的接口。
Web端直传:
客户端用JavaScript直接签名,然后上传到OSS。
(图7)Web端直传
1.采用plupload直接提交表单数据(即PostObject)到OSS;
2.支持html5,flash,silverlight,html4等协议上传;
3.可以运行在PC浏览器、手机浏览器、微信等;
4.可以选择多文件上传;
5.显示上传进度条;
6.可以控制上传文件的大小;
7.可以设置上传到指定目录和设置上传文件名字是随机文件名还是本地文件名。
用户上传时支持断点续传:
一般的流程如下:
将要上传的文件按照一定的大小分片。
初始化一个分片上传任务(InitiateMultipartUpload)。
逐个或并行上传分片(UploadPart)。
完成上传(CompleteMultipartUpload)。
(图8)断点续传流程图
数据管理
按需存放(不同类别的案子,不同时间的案子)
多元异构(数据预处理,不同格式统一存放)
索引
数据处理
实现搜索查找分析,汇总,统计查询
数据挖掘(离线,大数据分析)
流数据挖掘(实时分析)
(图9)流数据处理原理图
数据处理与挖掘使用MaxCompute实现
大数据计算服务( MaxCompute,原名ODPS )是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
MaxCompute主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务。随着社会数据收集手段的不断丰富及完善,越来越多的行业数据被积累下来。数据规模已经增长到了传统软件行业无法承载的海量数据(百GB、TB、乃至PB)级别。
在分析海量数据场景下,由于单台服务器的处理能力限制,数据分析者通常采用分布式计算模式。但分布式的计算模型对数据分析人员提出了较高的要求,且不易维护。使用分布式模型,数据分析人员不仅需要了解业务需求,同时还需要熟悉底层计算模型。
MaxCompute的目的是为用户提供一种便捷的分析处理海量数据的手段。用户可以不必关心分布式计算细节,从而达到分析大数据的目的。
(图10)MaxCompute提供服务内容
其中用户画像可以使用在诉讼云中,对客户进行画像。
(图11)用户画像功能
(图13)用户画像使用流程
(图14)用户画像可得数据
诉讼云资料安全问题:
阿里云OSS提供多用户资源隔离机制,保证安全性
(图15)多用户资源隔离机制