将不再可用;代理节点不保存订阅者的状态,删除消息时无法判断该消息是否已被阅读。
3.4.7 各类技术平台比较
一般而言,批量计算相关的大数据系统,如批量处理系统(如MapReduce)、大规模并行数据库等,在数据吞吐量方面具有明显优势,但在系统响应时间方面往往在秒级以上。而当前的流式计算相关的大数据系统,如流式处理系统、内存数据库、CEP(复杂事件处理)等,在系统响应时间方面虽然维持在毫秒级的水平,但数据吞吐量往往在吉字节(GB)级别,远远满足不了大数据流式计算系统对数据吞吐量的要求。通常情况下,一个理想的大数据流式计算系统在响应时间方面应维持在毫秒级的水平,并且数据吞吐量应该提高到拍字节(PB)级别及以上水平。
流式大数据作为大数据的一种重要形态,在商业智能、市场营销和公共服务等诸多领域有着广泛的应用前景,并已在金融银行业、互联网、物联网等场景的应用中取得了显著的成效。但流式大数据以其实时性、无序性、无限性、易失性、突发性等显著特征,使得传统的先存储后计算的批量数据计算理念不适用于大数据流式计算的环境中,也使得当前诸多数据计算系统无法更好地适应流式大数据在系统可伸缩性、容错、状态一致性、负载均衡、数据吞吐量等方面所带来的诸多新的技术挑战。
- 可伸缩性
在大数据流式计算环境中,系统的可伸缩性是制约大数据流式计算系统广泛应用的一个重要因素。Storm和Kafka等系统没有实现对系统可伸缩性的良好支持:一方面,流式数据的产生速率在高峰时期会不断增加且数据量巨大,持续时间往往很长,因此需要大数据流式系统具有很好的“可伸”的特征,可以实时适应数据增长的需求,实现对系统资源进行动态调整和快速部署,并保证整个系统的稳定性:另一方面,当流式数据的产生速率持续减小时,需要及时回收在高峰时期所分配的但目前已处于闲置或低效利用的资源,实现整个系统“可缩”的友好特征,并保障对用户是透明的。因此,系统中资源动态的配置、高效的组织、合理的布局、科学的架构和有效的分配是保障整个系统可伸缩性的基础,同时又尽可能地减少不必要的资源和能源的浪费。
大数据流式计算环境中的可伸缩性问题的解决需要实现对系统架构的合理布局,系统资源的有序组织、高效管理和灵活调度。在保证系统完成计算的前提下,尽量不要太久、太多地占用系统资源,通过虚拟化机制实现软、硬件之间的低耦合,实现资源的在线迁移,并最终解决大数据流式计算环境中的可伸缩性问题。
- 系统容错
在大数据流式计算环境中,系统容错机制是进一步改善整个系统的性能、提高计算结果的满意度、保证系统可靠持续运行的一个重要措施,也是当前大多数大数据流式计算系统所缺失的。Kafka等系统实现了对部分容错的支持,Storm系统实现了对作业级容错的支持。大数据流式计算环境对容错机制提出了新的挑战,一方面,数据流是实时、持续地到来的,呈现出时间上不可逆的特征,一旦数据流流过,再次重放数据流的成本是很大的,甚至是不现实的,由于数据流所呈现出的持续性和无限性,也无法预测未来流量的变化趋势;另一方面,在流式大数据的计算过程中,大部分“无用”的数据将被直接丢弃,能被永久保存下来的数据量是极少的。当需要进行系统容错时,其中不可避免地会出现一个时间段内数据不完整的情况。再则,需要针对不同类型的应用,从系统层面上设计符合其应用特征的数据容错级别和容错策略,避免不必要的资源浪费及应用需求的不吻合。
人工智能与大数据技术导论
86