基于NIO针对大数据分布式系统进行消息处理优化的系统及方法技术方案

技术编号:21891379 阅读:30 留言:0更新日期:2019-08-17 14:18
本发明专利技术涉及一种基于NIO针对大数据分布式系统进行消息处理优化的系统,包括消息产生模块;消息分发模块;消息发送模块;消息接收模块;消息处理模块,根据接收的消息中的业务信息进行相应的业务操作;消息返回处理模块,用于等待消息的处理结果。本发明专利技术还涉及一种基于NIO针对大数据分布式系统进行消息处理优化控制的方法。采用了本发明专利技术的基于NIO针对大数据分布式系统进行消息处理优化的系统及方法,能够有效的降低分布式系统间消息通信时的资源占用高的问题,在提高消息通信的效率的同时保证了消息通信的及时性,且系统的通用性强,架构灵活,可扩展性高。该发明专利技术采用的方法很好的满足目前分布式系统间大批量和高并发消息通信的需求,具有广泛的应用范围。

System and Method of Optimizing Message Processing for Large Data Distributed System Based on NIO

【技术实现步骤摘要】
基于NIO针对大数据分布式系统进行消息处理优化的系统及方法
本专利技术涉及计算机应用领域,尤其涉及大数据处理领域,具体是指一种基于NIO针对大数据分布式系统进行消息处理优化的系统及方法。
技术介绍
随着互联网发展,需要处理的数据量越来越大,传统的单体应用架构已经难以满足现阶段互联网的发展需求,当今的互联网应用普遍采用基于网络的分布式架构。通过对服务的拆分降低不同业务模块之间的耦合度,不同模块以独立的方式部署,模块与模块之间通过网络的方式进行交互,从而提高系统处理性能、可靠性和可扩展性。对于高访问量、高并发的系统,基于网络的分布式应用架构成为了必然选择。传统的单体软件架构只部署在一台机器上,如图1所示,不同模块间的交互都是通过本地的方法调用完成,数据的传送都是在内存上进行的,开销比较小,延迟比较低。相对于单体应用架构,基于网络的分布式应用架构给我们带来了许多的好处,但与此同时也带来了新的问题。在基于网络的分布式架构中,一个业务操作可能需要多个不同模块的交互完成,不同模块之间的交互需要跨越网络,如图2所示。基于网络的应用架构在提高系统处理性能、可靠性和可扩展性的同时也带来了如下的问题:提高了应用业务处理的延时;增加了系统在处理网络连接方面的资源开销;不同模块之间存在大批量的数据传输可能造成网络的拥堵。在传统的方式中,由于需要保证业务上的操作是正确的,模块间是以同步的方式进行通信的,需要等待对方的返回结果来判断调用是否成功,从而执行下一步的操作或是进行失败回滚。同步处理的调用时序图如图3所示,从同步调用的时序图可以看出,在等待调用远程服务的方法的过程中,调用者需要等待请求的返回才可进行下一步操作,调用方法的过程中,线程调用者的线程进入阻塞状态,直到服务器返回调用结果后才可重新进入运行状态。虽让线程进入阻塞状态不运行,但系统还是需要保持调用者线程的信息,这需要占用系统的资源。在大数据的背景下,分布式系统业务模块之间的交互非常频繁,系统间消息通信的规模大、并发度高,若为模块间每个消息通信的网络请求生成一个线程,频繁的线程创建及销毁操作将会占用服务器的大量资源,影响服务器的性能。虽然可以用线程池技术消除线程创建及销毁操作,但线程池的容量是有限的,当线程池中的线程都在等待远程调用结果的返回时,后面的请求都在等待获取线程池里的线程,此时可能造成系统的处理线程都阻塞在网络IO上,CPU资源的利用率不高,影响系统的处理性能,这种问题在调用的远程操作比较复杂,耗费的时间比较长时尤为明显。从以上的推论可以看出,在基于网络的大数据分布式架构的应用中,传统方法下的基于同步方式进行的系统间消息传输时存在上述的缺陷。
技术实现思路
本专利技术的目的是克服了上述现有技术的缺点,提供了一种资源利用率高、处理性能好、操作简便的基于NIO针对大数据分布式系统进行消息处理优化的系统及方法。为了实现上述目的,本专利技术的基于NIO针对大数据分布式系统进行消息处理优化的系统及方法如下:该基于NIO针对大数据分布式系统进行消息处理优化的系统,其主要特点是,所述的系统包括:消息产生模块,用于生成业务消息并将业务消息对象加入到消息发送队列;消息分发模块,与所述的消息产生模块相连接,用于对消息进行合并和格式转换;消息发送模块,与所述的消息分发模块相连接,用于将业务消息对象转换成可在网络上传输的格式,并使用非阻塞的方式发送消息;消息接收模块,与所述的消息发送模块相连接,用于将消息交由后续模块进行处理,并在处理后将处理的结果信息返回给消息发送模块;消息处理模块,与所述的消息接收模块相连接,用于对消息进行处理,根据接收的消息中的业务信息进行相应的业务操作,并生成操作的结果信息;消息返回处理模块,与所述的消息处理模块相连接,用于等待消息的处理结果,并根据返回的处理结果进行相应的业务操作。该基于上述系统基于NIO针对大数据分布式系统进行消息处理优化控制的方法,其主要特点是,所述的方法包括以下步骤:(1)所述的消息产生模块解耦消息发送,产生消息并将消息封装成消息对象之后加入到消息发送队列中;(2)所述的消息分发模块从消息发送队列中获取消息对象,并对消息对象进行合并和转换;(3)所述的消息发送模块使用NIO组件,以非阻塞的方式通过网络发送给远程服务端;(4)所述的消息接收模块处理消息发送方的发送请求,将消息报文信息重新封装成消息对象后交由消息处理模块处理;(5)所述的消息处理模块获取到消息对象之后根据消息进行相关的业务处理并生成处理结果;(6)所述的消息返回处理模块通过等待远程服务的处理结果,并根据返回消息的信息进行后续的业务处理。较佳地,所述的步骤(1)具体包括以下步骤:(1.1)所述的消息产生模块从业务处理的逻辑中生成消息,将消息封装成单独的消息对象;(1.2)所述的消息产生模块将消息对象加入到消息的发送队列中,继续后续的业务处理或完成业务处理。较佳地,所述的步骤(2)具体包括以下步骤:(2.1)所述的消息分发模块从配置文件中获取消息分发服务线程的配置参数信息,并根据参数启动消息分发服务;(2.2)所述的消息分发模块从消息队列中读取消息信息;(2.3)所述的消息分发模块将消息对象加入到消息待处理列表中,判断消息待处理列表中的消息数量是否达到了配置的最大消息合并长度,如果是,则继续步骤(2.6);否则,继续(2.5);(2.4)消息待处理列表不为空时,计算当前系统的时间和最后一次进行消息批量处理时间的时间差,判断时间差是否大于或等于配置的带处理消息最长等待时间,如果是,则继续步骤(2.5);否则,继续步骤(2.2);(2.5)达到最大合并消息数或最长等待时间时,提取带处理消息列表中的消息,生成新的待处理消息数组;(2.6)所述的消息分发模块使用新的待处理消息数组构造新的消息发送处理线程,将消息发送现场加入到消息发送线程池中执行;(2.7)所述的消息分发模块将原来列表中的带处理信息清空用于下次使用,更新最后一次处理待处理列表中的消息的时间为当前时间,继续步骤(2.2)。较佳地,所述的步骤(2.2)具体包括以下步骤:(2.2.1)判断当前队列是否有消息,如果是,则获取消息对象,继续步骤(2.3);否则,继续步骤(2.2.2);(2.2.2)等待预设的时间,判断等待的时间范围内是否有新消息加入队列中,如果是,则获取消息对象或继续步骤(2.3);否则,继续步骤(2.4)。较佳地,所述的步骤(3)具体包括以下步骤:(3.1)所述的消息发送模块从配置文件中获取消息发送服务的配置参数,并根据配置启动消息发送的服务;(3.2)所述的消息发送模块对消息对象数组进行转化,生成字符格式的消息报文;(3.3)打开消息的发送通道,并将通道的阻塞方式配置为非阻塞;(3.4)使用生成的报文消息生产报文的字节缓冲区,使用缓冲区的方式发送消息;(3.5)所述的消息发送模块将报文字节缓冲区中的数据写入到通道中,直至所有数据写入到通道中,将通道的读取事件注册到IO多路复用选择器中。较佳地,所述的步骤(4)具体包括以下步骤:(4.1)所述的消息接收模块创建服务端的消息接收通道,将通道设置为非阻塞模式,并指定通道端口,从服务端通道中获取消息发送的请求链接;(4.2)判断是否获取到新的请求的链接,如果是,则继续本文档来自技高网
...

【技术保护点】
1.一种基于NIO针对大数据分布式系统进行消息处理优化的系统,其特征在于,所述的系统包括:消息产生模块,用于生成业务消息并将业务消息对象加入到消息发送队列;消息分发模块,与所述的消息产生模块相连接,用于对消息进行合并和格式转换;消息发送模块,与所述的消息分发模块相连接,用于将业务消息对象转换成可在网络上传输的格式,并使用非阻塞的方式发送消息;消息接收模块,与所述的消息发送模块相连接,用于将消息交由后续模块进行处理,并在处理后将处理的结果信息返回给消息发送模块;消息处理模块,与所述的消息接收模块相连接,用于对消息进行处理,根据接收的消息中的业务信息进行相应的业务操作,并生成操作的结果信息;消息返回处理模块,与所述的消息处理模块相连接,用于等待消息的处理结果,并根据返回的处理结果进行相应的业务操作。

【技术特征摘要】
1.一种基于NIO针对大数据分布式系统进行消息处理优化的系统,其特征在于,所述的系统包括:消息产生模块,用于生成业务消息并将业务消息对象加入到消息发送队列;消息分发模块,与所述的消息产生模块相连接,用于对消息进行合并和格式转换;消息发送模块,与所述的消息分发模块相连接,用于将业务消息对象转换成可在网络上传输的格式,并使用非阻塞的方式发送消息;消息接收模块,与所述的消息发送模块相连接,用于将消息交由后续模块进行处理,并在处理后将处理的结果信息返回给消息发送模块;消息处理模块,与所述的消息接收模块相连接,用于对消息进行处理,根据接收的消息中的业务信息进行相应的业务操作,并生成操作的结果信息;消息返回处理模块,与所述的消息处理模块相连接,用于等待消息的处理结果,并根据返回的处理结果进行相应的业务操作。2.一种利用权利要求1所述的系统基于NIO针对大数据分布式系统进行消息处理优化控制的方法,其特征在于,所述的方法包括以下步骤:(1)所述的消息产生模块解耦消息发送,产生消息并将消息封装成消息对象之后加入到消息发送队列中;(2)所述的消息分发模块从消息发送队列中获取消息对象,并对消息对象进行合并和转换;(3)所述的消息发送模块使用NIO组件,以非阻塞的方式通过网络发送给远程服务端;(4)所述的消息接收模块处理消息发送方的发送请求,将消息报文信息重新封装成消息对象后交由消息处理模块处理;(5)所述的消息处理模块获取到消息对象之后根据消息进行相关的业务处理并生成处理结果;(6)所述的消息返回处理模块通过等待远程服务的处理结果,并根据返回消息的信息进行后续的业务处理。3.根据权利要求2所述的基于NIO针对大数据分布式系统进行消息处理优化控制的方法,其特征在于,所述的步骤(1)具体包括以下步骤:(1.1)所述的消息产生模块从业务处理的逻辑中生成消息,将消息封装成单独的消息对象;(1.2)所述的消息产生模块将消息对象加入到消息的发送队列中,继续后续的业务处理或完成业务处理。4.根据权利要求2所述的基于NIO针对大数据分布式系统进行消息处理优化控制的方法,其特征在于,所述的步骤(2)具体包括以下步骤:(2.1)所述的消息分发模块从配置文件中获取消息分发服务线程的配置参数信息,并根据参数启动消息分发服务;(2.2)所述的消息分发模块从消息队列中读取消息信息;(2.3)所述的消息分发模块将消息对象加入到消息待处理列表中,判断消息待处理列表中的消息数量是否达到了配置的最大消息合并长度,如果是,则继续步骤(2.6);否则,继续(2.5);(2.4)消息待处理列表不为空时,计算当前系统的时间和最后一次进行消息批量处理时间的时间差,判断时间差是否大于或等于配置的带处理消息最长等待时间,如果是,则继续步骤(2.5);否则,继续步骤(2.2);(2.5)达到最大合并消息数或最长等待时间时,提取带处理消息列表中的消息,生成新的待处理消息数组;(2.6)所述的消息分发模块使用新的待处理消息数组构造新的消息发送处理线程,将消息发送现场加入到消息发送线程池中执行;(2.7)所述的消息分发模块将原来列表中的带处理信息清空用于下次使用,更新最后一次处理待处理列表中的消息的时间为当前时间,继续步骤(2.2)。5.根据权利要求4所述的基于NIO针对大数据分布式系统进行消息...

【专利技术属性】
技术研发人员:李丹超骆宇园王克强张志平
申请(专利权)人:普元信息技术股份有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1