基于TableStore的数据采集分析系统介绍

摘要: 摘要 在互联网高度发达的今天,ipad、手机等智能终端设备随处可见,运行在其中的APP、网站也非常多,如何采集终端数据进行分析,提升软件的品质非常重要,例如PV/UV统计、用户行为数据统计与分析等。虽然场景简单,但是数据量大,对系统的吞吐量、实时性、分析能力、查询能力都有较高的要求,搭建起来并不容易。

摘要

在互联网高度发达的今天,ipad、手机等智能终端设备随处可见,运行在其中的APP、网站也非常多,如何采集终端数据进行分析,提升软件的品质非常重要,例如PV/UV统计、用户行为数据统计与分析等。虽然场景简单,但是数据量大,对系统的吞吐量、实时性、分析能力、查询能力都有较高的要求,搭建起来并不容易。今天我们来介绍一下基于阿里云表格存储,以及相关的大数据产品来采集与分析数据的方案。

TableStore

TableStore(表格存储)是阿里云自主研发的专业级分布式NoSQL数据库,是基于共享存储的高性能、低成本、易扩展、全托管的半结构化数据存储平台,支撑互联网和物联网数据的高效计算与分析。

目前不管是阿里巴巴集团内部,还是外部公有云用户,都有成千上万的系统在使用。覆盖了重吞吐的离线应用,以及重稳定性,性能敏感的在线应用。表格存储的具体的特性可以看下面这张图片。

基于TableStore的数据采集分析系统

一个典型的数据采集分析统计平台,对数据的处理,主要由如下五个步骤组成: 

对于上图流程的具体实现,网上有许多可以参考的案例,数据在客户端采集完以后,如果量比较小,我们可能直接在后端的API上做一次透传,然后持久化到RDBMS类型的数据库中就好了,通过Sql可以进行数据分析。如果数据量很大,就需要一些中间件来辅助收集和上传,然后分别将数据写入到在线和离线的系统中,比如先上传到Flume,Flume可以做数据的采集与聚合,再将Flume作为消息的生产者,将生产的消息数据通过Kafka Sink发布到Kafka中,Kafka作为消息队列的角色,可以对接后端的在线和离线计算平台。如下图所示: 

引入Flume和Kafka的原因有很多,比如他们可以处理大流量的数据、做数据聚合、保证数据不丢失等,但最关键的原因是他们拥有高吞吐的能力。引入的组件多,系统的复杂性和成本也会相应的增加,上图中,Spark Streaming/Storm分析完成以后,结果数据还需要引入另外的存储组件进行存储,比如HBase/MySQL,如果引入MySQL可能还需要再引入Redis做热点数据缓存,这样一来就更加复杂了。 
我们尝试一种基于TableStore和阿里云其他大数据产品的新方案,我们先看架构图: 

图中关键路径分析: 
1、Web页、APP等客户端先通过埋点系统收集数据,然后通过表格存储的SDK将数据写入TableStore的原始数据表。 
2、MaxCompute直读TableStore原始数据表的数据进行分析,然后QuickBI读取MaxCompute的数据进行展示,具体操作可参考:MaxCompute直读直写表格存储、QuickBI新建云数据源。 
3、TableStore原始数据表中的数据可增量同步到ElasticSearch或者openSearch中,同步方法参考:TableStore数据同步到ElasticSearch,TableStore数据同步到OpenSearch。 
4、TableStore中的数据可增量同步到Blink/Flink进行分析,分析完以后的数据再写回TableStore的结果数据表中,DavaV读取结果数据表的数据进行展示。

新架构优势分析: 
1、客户端数据直读直写TableStore,不需要再引入API层进行数据透传,降低了复杂度,对于大型应用来说也减少了不少的服务器成本。 
2、TableStore已经对接了丰富了大数据组件,包括阿里云的大数据产品和开源大数据产品,数据的同步与读写非常容易。 
3、实时分析与离线分析后的结果数据再写回TableStore,DataV直接读取结果数据进行展示,因为TableStore具备高性能与高吞吐特点,不需要再引入Redis等缓存组件,可以简化整个系统。

直读直写安全问题: 
关于数据直读直写TableStore,大家可能都会想到一个安全的问题,客户端直连TableStore不是要把AccessKey和AccessId暴露在客户端吗?答案是不用,我们使用STSToken授权访问TableStore,过程如下图所示: 

TableStore提供的SDK都支持使用STS授权的方式进行访问,示例可参考TableStore NodeJs SDK使用STSToken,使用STS方式访问TableStore需要控制好授权策略,客户端不需要的接口请不要授权。

浏览器跨域访问TableStore: 
如果在浏览器端直接访问TableStore,由于浏览器有同源策略的限制,会产生跨域问题。因为TableStore的EndPoint域名与用户Web站点的域名不同。解决这个问题的思路有两个:一是Web端不直接访问TableStore,改为先请求自己的Web Server端,Web Server端再使用TableStore SDK来发起请求,这样其实就是后端访问了,问题解决了但也没了我们直读直写的优势;二是TableStore服务端通过某种方式直接支持js跨域请求,这条路我们正在支持当中,当前处于开发阶段,支持的方式是cors协议支持跨域。但目前也有快捷的支持方式,如果您有浏览器直接访问TableStore的需求,可以直接联系我们,支持起来也很快。 
作者:boxiao

时间: 2024-10-12 08:09:29

基于TableStore的数据采集分析系统介绍的相关文章

基于社交网络的情绪化分析II

基于社交网络的情绪化分析II By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 上一篇进行了微博数据的抓取,这一篇进行数据的处理介绍. 无意义微博的定义 观察发现微博中有很多的微博是用户参与某些活动而转发的微博,比如:"SmashHit,作者:MediocreAB.推荐!"http://t.cn/8Fkgg9k":"刚刚下载了豆丁文档:项目公司运营简报模板"http://t.cn/RPjFZKf&qu

基于社交网络的情绪化分析IV

基于社交网络的情绪化分析IV By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,相似度分析,后面两篇进行学校微博的情感分析. 微博情感分析 这里试图通过字典分析的方式计算学校微博的情感倾向,主要分为积极情感,消极情感,客观. 这里字典分析的情感分析和机器学习方式进行情感分析均参考rzcoding的博客,这里只是根据他的思路和代码改装成了微博的情感分析. 字典分析 字典分析的原理是,给定一句微博,判断这句

基于Java的数据采集(二)

在上一篇文章<基于Java的数据采集(一)>:http://www.cnblogs.com/lichenwei/p/3904715.html 提到了如何如何读取网页源代码,并通过group正则 动态抓取我们所需要的网页数据 现在来写下关于数据的存储,思路很简单,只需要在我们每次读取一个数据的时候,把数据存放在临时变量,然后插入数据库即可. 先来建一个表: DoMysql.java(数据库连接类,并提供插入数据的方法) 1 package com.lcw.curl; 2 3 4 import j

基于tiny210的barebox分析(二)

代码分析 在上一篇文章中,我们已经对barebox的编译.烧写和运行有了一个大致的了解, 现在我们就要开始学习代码了. arch/arm/cpu/start.c line126 void __naked __section(.text_entry) start(void) { barebox_arm_head(); } 一般的bootloader都会以一个汇编文件作为起始,但是barebox没有这样. 这个c函数作为了整个iamge的入口,关键是__section(.text_entry)和ld

基于Qt的信号分析简单应用软件的设计

一.需求描述: 1.读取data.asc文件,分析其连续性: 2.绘制信号图像,并保存. 二.UI界面组成: 该应用的UI由以下几个控件组成: 3个PushButton:打开文件.图像保存.退出: 1个Combox:下拉框用于信号的选择: 1个Widget:用于确定绘图区域的坐标,并在Widget部件上绘制图像曲线. 3个Label:用于标注注释,及坐标轴 三.主要功能的实现 信号分析结果如下: 其中最主要的涉及信号数据的标准化处理,标准化处理计算公式: std=(当前信号值-此类信号的最小值)

基于社交网络的情绪化分析III

基于社交网络的情绪化分析III By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 前面进行了微博数据的抓取,简单的处理,这一篇进行学校微博的相似度分析. 微博相似度分析 这里试图计算任意两个学校之间的微博用词的相似度. 思路:首先对学校微博进行分词,遍历获取每个学校的高频用词词典,组建用词基向量,使用该基向量构建每个学校的用词向量,最后使用TF-IDF算法和余弦函数计算两个学校微博之间的相似度. 注:TF-IDF算法和余弦函数使用可以参照我

转:基于内容的视频分析与检索

摘要 文章简要介绍了从基于内容的视频分析与检索问题的提出到所涉及的关键技术以及目前研究状况,并简要介绍了现阶段在这方面的研究热点及以后要做的工作. 一.问题的提出: 互联网的出现给人类带来了很大的便利,特别是实现资源共享之后的互联网,但面对这浩如烟海的资源到底哪些是对自己有利用价值的呢?而90年代以来,多媒体技术和网络技术的突飞猛进,人们正快速的进入一个信息化社会.现代技术已能运用各种手段采集和生产大量各种类型的多媒体信息数据,出现了数字图书馆.数字博物馆.数字电影.可视电话.交互电视.会议电视

基于SQL的日志分析工具myselect

基本介绍 程序开发人员经常要分析程序日志,包括自己打印的日志及使用的其它软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令可以使用,如grep,sort,uniq,awk等,其中最强大的是awk,是作为一门小巧的文本处理语言存在的,但由于它是一门语言,功能强大,但在命令行下使用并不那么方便,因为awk是面向计算而不是面向统计的.awk可以定义变量,可以进行计算,命令行下就是一个包含隐式for循环的语言. awk如果很长时间不用,它的一些语法就忘了,要分析线上日志时

VSTO学习笔记(七)基于WPF的Excel分析、转换小程序

原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然后进行转换. 概述 小程序主界面如下: 首先选择一个日期和类别,从命名上对待分析的Excel文件进行过滤.点击[浏览]选择待分析的Excel文件所在的目录, 程序中会获取所有子目录.然后点击[执行分析]就会按照左边CheckBox中的选择进行分析,分析结果显示在每一行中间.[修改配置]可以对分析规则