MyException - 我的异常网
当前位置:我的异常网» 互联网 » 怎么将个性化需求变成大数据解决方案

怎么将个性化需求变成大数据解决方案

www.MyException.Cn  网友分享于:2013-12-18  浏览:0次
如何将个性化需求变成大数据解决方案

点击有惊喜


阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

 

前言

 

大数据的技术日新月异,解决了很多传统的方法所无法解决的问题,为软件实现上提供了新思路。目前已经有很多企业已经基于大数据的相关技术已经搭建了很多系统。
在系统的搭建过程中,需要解决一个的问题:“我的这个需求,用大数据的技术如何实现”。这个问题需要个同时对业务和大数据技术都比较了解的人来做设计。本文就我在平时工作中总结出来的一些思路,希望对大家能有所帮助。

需求分析

在此之前首先需要先考虑,这个需求是否有必要用大数据手段来解决。一些大数据的典型场景,比如大规模离线计算、周期性的报表、机器学习算法等,目前大数据已经有非常成熟的方案,在考虑实现的时候,我们可以用通用的大数据技术来实现。但是大数据也不是万能的,有一些场景可能用其他的方法更加合适。也有一些场景,看起来和大数据似乎没啥关系,但是细细分析下来,这个需求是大数据擅长解决的场景。所以我们只是需要把大数据当成解决问题的一种工具。在找对工具之前,我们需要先对需求做一些分析。

这里举个例子,地铁站里的人流,不停有人进来和出去。需要统计当前的地铁站的人数,从而判断是否启动紧急措施进行分流限流,从而实现智能调度(这个需求是我自己想的,不过我确实在杭州看到人流高峰有一些地铁站只准出不准入,另外也可以动态增加一些班次)。地铁有运营时间,假设到晚上11时30分结束,所以0点可以近似认为地铁里没有乘客。

流程梳理

每天0定初始化人数为0,然后人数增加时(乘客从入口增加或者从地铁上下来)增加人数,在人数减少时(乘客从出口离开或者乘坐地铁离开)减少人数,最终实时或者近似实时得统计当前的站点内的人数。
这个需求的实现包含以下几个部分功能模块:
1. 数据采集。包括人员增加和减少场景下相关数据的采集。从入口进入和从出口离开比较容易,闸机上比较容易获得通过人数,当人员通过闸机时,根据闸机的类型(出口还是入口)写一条记录。而上下地铁可能需要用到一些诸如传感器或者摄像头配合图像识别算法来实现。
2. 数据计算。根据数据的增加和减少,在满足时效性需求的前提下,计算出当前的人数。这个典型的实现方法有两种。一种是用数据库的SQL来实现,把数据增减写到数据库里,最后通过计算时间做过滤后,对增加人数和减少人数分别求和后相减得到最终的人数。这个计算方式比较容易被理解,实现上比较简单,但是缺点是每次计算当前的人数需要把当天全部的人数重新统计一次,计算量比较大。另外一种方法是计算的时候,对于实时数据进入系统的时候,在原来的计算结果的基础上,再做增量计算。比如当前有100人,增加1个,那就是100+1=101,又出去两个人,就是101-2=99。中间的计算只涉及增量的数据计算,而不会把全部的数据重新算一次。
3. 数据消费。计算出来的结果,可能需要对接到业务系统里,这个需要看业务系统的对接方式。一个比较通用的方法是把计算结果实时写入到数据库里供业务系统对接。另外也可能是需要以图表的形式进行展示以便直观地对数据进行理解。

功能实现

功能实现上,我比较喜欢从计算引擎上入手设计实现方法。就如这里的数据计算部分,考虑到地铁的人流量比较高(城市有多个地铁站,而在人流高峰的时候进出较多),为了保证计算性能,我比较偏向于用相对计算复杂度较低的流式计算的方案从而获得高并发和高性能。但是如果人流量比较少而且时效性要求很低,比如把这个场景变成某饭店/门诊科室的人流量统计/排队量统计,我可能会考虑用数据库查询+缓存的方式来实现。
计算引擎确定用流计算的方案后,对应的数据写入就需要使用流计算引擎支持的流式数据上传方式进行写入。而流计算后的结果,可以通用的写入到数据库供后续调用,或者写到消息中间件进行业务系统调用。

产品方案

以阿里云的云产品为例,流计算产品(StreamCompute)能比较好的满足计算引擎的需求。而数据可以用SDK写入到Datahub。考虑到可能用到传感器,这时候可以使用物联网套件。最终的数据消费,可以写入到RDS供业务系统调用/供DataV做可视化展示,也可以写入到消息队列/函数计算。

基于这个梳理,最终的架构图可以使用IOT的标准架构图
image

 

点击有惊喜

文章评论

程序员都该阅读的书
程序员都该阅读的书
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
中美印日四国程序员比较
中美印日四国程序员比较
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
那些争议最大的编程观点
那些争议最大的编程观点
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
老程序员的下场
老程序员的下场
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
为什么程序员都是夜猫子
为什么程序员都是夜猫子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
如何成为一名黑客
如何成为一名黑客
我是如何打败拖延症的
我是如何打败拖延症的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员和编码员之间的区别
程序员和编码员之间的区别
代码女神横空出世
代码女神横空出世
一个程序员的时间管理
一个程序员的时间管理
旅行,写作,编程
旅行,写作,编程
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
鲜为人知的编程真相
鲜为人知的编程真相
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的鄙视链
程序员的鄙视链
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
每天工作4小时的程序员
每天工作4小时的程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Java程序员必看电影
Java程序员必看电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
编程语言是女人
编程语言是女人
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
 程序员的样子
程序员的样子
10个调试和排错的小建议
10个调试和排错的小建议
程序员必看的十大电影
程序员必看的十大电影
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有