传学 2017-11-27 4082浏览量
大数据的技术日新月异,解决了很多传统的方法所无法解决的问题,为软件实现上提供了新思路。目前已经有很多企业已经基于大数据的相关技术已经搭建了很多系统。
在系统的搭建过程中,需要解决一个的问题:“我的这个需求,用大数据的技术如何实现”。这个问题需要个同时对业务和大数据技术都比较了解的人来做设计。本文就我在平时工作中总结出来的一些思路,希望对大家能有所帮助。
在此之前首先需要先考虑,这个需求是否有必要用大数据手段来解决。一些大数据的典型场景,比如大规模离线计算、周期性的报表、机器学习算法等,目前大数据已经有非常成熟的方案,在考虑实现的时候,我们可以用通用的大数据技术来实现。但是大数据也不是万能的,有一些场景可能用其他的方法更加合适。也有一些场景,看起来和大数据似乎没啥关系,但是细细分析下来,这个需求是大数据擅长解决的场景。所以我们只是需要把大数据当成解决问题的一种工具。在找对工具之前,我们需要先对需求做一些分析。
这里举个例子,地铁站里的人流,不停有人进来和出去。需要统计当前的地铁站的人数,从而判断是否启动紧急措施进行分流限流,从而实现智能调度(这个需求是我自己想的,不过我确实在杭州看到人流高峰有一些地铁站只准出不准入,另外也可以动态增加一些班次)。地铁有运营时间,假设到晚上11时30分结束,所以0点可以近似认为地铁里没有乘客。
每天0定初始化人数为0,然后人数增加时(乘客从入口增加或者从地铁上下来)增加人数,在人数减少时(乘客从出口离开或者乘坐地铁离开)减少人数,最终实时或者近似实时得统计当前的站点内的人数。
这个需求的实现包含以下几个部分功能模块:
功能实现上,我比较喜欢从计算引擎上入手设计实现方法。就如这里的数据计算部分,考虑到地铁的人流量比较高(城市有多个地铁站,而在人流高峰的时候进出较多),为了保证计算性能,我比较偏向于用相对计算复杂度较低的流式计算的方案从而获得高并发和高性能。但是如果人流量比较少而且时效性要求很低,比如把这个场景变成某饭店/门诊科室的人流量统计/排队量统计,我可能会考虑用数据库查询+缓存的方式来实现。
计算引擎确定用流计算的方案后,对应的数据写入就需要使用流计算引擎支持的流式数据上传方式进行写入。而流计算后的结果,可以通用的写入到数据库供后续调用,或者写到消息中间件进行业务系统调用。
以阿里云的云产品为例,流计算产品(StreamCompute)能比较好的满足计算引擎的需求。而数据可以用SDK写入到Datahub。考虑到可能用到传感器,这时候可以使用物联网套件。最终的数据消费,可以写入到RDS供业务系统调用/供DataV做可视化展示,也可以写入到消息队列/函数计算。
基于这个梳理,最终的架构图可以使用IOT的标准架构图
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。