论文部分内容阅读
最近几年,由于信息技术和移动互联网行业的快速发展,全世界积累的用户等各方的数据量呈现指数级增长,大数据时代已经来临。这将不仅为科学研究领域带来巨大变革,也将深远地影响到未来生活的方方面面。现在,大型分布式大数据处理系统集群中的计算数据类型多种多样,根据其需求和计算方式,主要可以分成基于Hadoop的离线处理和基于Spark等的在线实时流数据处理。在线实时流数据处理主要针对该集群从前端获取的监控数据或爬虫等系统实时采集的数据,与离线数据处理不同的是,实时流数据处理的特点是是动态性、持续性。由于实时流数据的这些特征,大数据处理系统在分析和处理流数据时,必须分析数据流量,并根据其流量特征进行动态调整。因此,对于数据的实时处理能力成了评定该系统实时处理的关键指标。消息中间件可以对海量且复杂的数据进行存储和转发到相应的处理节点,正是这样对消息的储存和转发能力可以应对大数据处理中海量数据的需求。面对大数据时代下的消息中间件技术需求,本文旨在通过研究消息中间件涉及到的协议标准、分布式网络通信和网络I/O技术,从而基于Netty提出并实现具有高并发,高可靠特性并且负载均衡的分布式消息中间件系统。论文主要的工作有:1、为了实现该消息中间件的高并发,该消息中间件主要研究了基于事件驱动的Netty高性能网络编程框架的零拷贝技术,基于高性能网络编程框架Netty来设计和实现了网络层,主要包括通信协议。然后,并基于Netty实现通信服务端与基于Netty的通信客户端;2、为了实现系统消息可靠特性,Broker将消息持久化到硬盘。本文通过对比数据库和文件的持久化方案,将基于文件的持久化方案应用到该消息中间件,并提出了相应的实现方法;3、对应系统负载均衡特性的实现,该消息中间件通过两个方面来保证:Producer实现了根据消息内容和Broker数量均衡发送消息,Consumer实现的再平衡机制让Consumer与分区的动态平衡,达到负载均衡,降低Broker压力的目的。在完成基本的消息中间件设计的基础上,本文改进Nettyd通信模型,利用基于异步I/O模型的Java AIO来实现Netty的I/O部分。而在消息持久化方面,研究了持久化的各种方法,并提出了基于跳表索引的文件持久化方法。