海量数据处理_未名企鹅极客 | 海量数据处理中的分布式任务队列

83ba591579cbe03f9364af6c981cc15a.gif  1  背景 随着 未名企鹅 业务的不断扩展,在进行流向数据清洗,数据处理的时候,免不了对资源的大量消耗。当有多个处理任务同时进行的时候,就会给服务带来巨大压力,这时就需要能够控制同时执行的任务数,可以监控任务状态,并且能够方便水平扩展,而 解决这一问题的关键就是分布式任务队列db7bb218bdca42de8e9a788798d9e659.png  2  什么是任务队列 队列(Queue),是一种线性的数据结构,它的特点 “先进先出(FIFO)” ,即元素只能队尾进入,从队首离开,先进入队列的元素会先离开队伍。可以将队列想象成银行柜台的排队机制一样,在前面排队的人可以先办理业务,在最后排队的人等到前面所有的人办理完毕后,才可以进行业务的处理。 376945e9c455cd1d19549c65f24244c4.png 任务队列模型就是以队列为基础形成的。任务队列模型中的角色一般有三个, 生产者,任务队列,消费者 。生产者负责向队列里提交任务,提交任务后无需等待结果,可以继续执行其他操作,而消费者则从队列里领取任务执行。生产者和消费者仅通过队列传递信息。在Java中基于任务队列的一个典型的实现便是大家熟悉的线程池,这里就不再深入展开。  3  分布式任务队列的优势 既然Java中已经有任务队列了,那么为什么还要有分布式任务队列呢?那么就要了解下一般的任务队列在生产应用上的弊端。 普通的任务队列只存在于一个服务内,当生产者提交任务后,任务信息会一直存储在内存中,如果生产者一直在提交任务,而消费跟不上生产,会导致服务内存溢出。若为了加快任务处理速度而一味地增加消费者,就会因为消费者过多而引发服务不可用,而且生产环境持续有人使用,无法从外部动态调整资源,这就导致了一般的任务队列局限性比较大。而当服务重启时,队列里的任务会全部丢失,影响了业务的运转。因而,分布式任务队列才会应运而生。 分布式队列与一般的队列相比,有以下几个优点: ·       解除耦合,各司其职 生产者和消费者可以处于不同的环境,两者互不影响,生产者出了问题不会影响消费者消费队列里的任务,而消费的服务重启也不会影响生产者提交任务。消费者领取一个任务处理后再领取下一个,能够保证服务的稳定。 ·       任务持久化 任务队列的任务不会因为生产者或者消费者的问题而丢失任务,保证了任务队列里任务的持久化稳定。 ·       灵活扩展 这也是分布式任务最大的优点,当任务过多,消费能力不足时,可以通过增加节点动态调整任务处理速度,并且不会影响到生产线上正在执行的服务。  4  为什么使用分布式任务队列 涉及到数据处理,目前流行的是Hadoop生态圈,Hadoop可以更快速高效的处理数据,因此我们将分布式任务队列和Hadoop的使用做了个比较。
技术选型特点不足
Hadoop成型的数据处理,高效可靠搭建,使用成本高
分布式任务队列使用简单,快速上手,异步处理——
通过表格我们可以看出 Hadoop更偏向于搭建基础数据,对数据做基础的处理。而分布式任务更偏向于对数据的应用,使用Hadoop是大材小用。  5  分布式任务队列的技术选型 涉及分布式队列,目前存在的流行技术有MQ,Redis的List均可以支持队列,那么这两种实现又有什么优劣呢?
技术选型优点局限性
Redis的List轻量,易用,成本低提交和消费任务的确认机制不完善
MQ支持大流量的消息发送,支持消息确认。单向通知,任务消息一次性消费,无法追溯任务形态
比较发现两者各有优劣,具体采用哪种方案,还要根据实际的业务场景决定。  6  应用 清洗系统需要在集中的时间内清洗客户的数据,每次清洗数据的任务耗时长,占用资源多,在清洗的同时系统还要有能力承受住日常的数据处理,并且能够取消不需要的任务及时释放资源。 根据上面的现状,我们可以得出任务的综合频率不高,但是需要实时了解到任务执行的状态,执行经过选型,采用了基于Redis的Redisson框架, Redisson提供了较为完善的任务提交和取消的机制,研发团队在此基础上丰富了任务状态的实时检查,任务超时,任务失败的重试策略。 任务队列的架构大致如下: ad0c140840e340827ef777c2b3d94532.png “队列”保存提交的任务执行状态,当任务提交者取消任务时,会根据Task State取消队列中的任务或者让消费者能够感知到任务被取消。任务在执行中,可以通过Task state获取任务执行的状态。通过Task State也会方便的确定任务是否超时,及时进行重试。  7  总结 本文简单介绍了 未名企鹅 团队针对数据处理的一种解决方案的研究。当然,数据处理的解决方案是多种多样的,针对不同的场景,解决方案也不尽相同。唯有结合业务场景选择合适的方案才能更好的为客户提供更稳定的服务。   文 / Kim 编辑 / TiK 关于未名企鹅        未名企鹅以“连接健康”为使命,致力于提供生命健康领域的大数据产品和解决方案,帮助客户实现数据驱动的业务增长。
公司创始人邹晓亮先生是北大博士,前腾讯高管。创始团队主要成员均曾在腾讯、阿里巴巴、网易工作多年,同时结合了来自医药行业经验丰富的人士和业内具有丰富经验的专家顾问团队。公司技术团队中有数十位研发人员均来自腾讯,互联网技术基因和产品文化底蕴深厚。
未名企鹅成立以来获得由经纬中国、成为资本、红石诚金分别领投的三轮累计数亿元融资。 未名企鹅,数 · 智 · 未来 ecca19ada456d0be0cea09305c98becf.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值