一种基于非阻塞通信的微服务系统设计方法技术方案

技术编号:15653546 阅读:105 留言:0更新日期:2017-06-17 08:25
本发明专利技术涉及一种基于非阻塞通信的微服务系统设计方法,包括步骤:(1)构建三层网络架构的服务端:包括由下至上的反应通信调度层、职责链管道层和业务逻辑处理层,其中,所述反应通信调度层监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,将这些事件触发到管道中,由管道充当的职责链来进行后续的处理;所述职责链管道层负责事件在职责链中的有序传播,同时负责动态的编排职责链,职责链选择监听和处理自己关心的事件、拦截处理和向后/向前传播事件;所述业务逻辑处理层负责业务逻辑处理与应用层协议管理;(2)客户端通过API透明地与所述服务端发送和接收信息。

【技术实现步骤摘要】
一种基于非阻塞通信的微服务系统设计方法
本专利技术属于计算机
,尤其涉及一种基于非阻塞通信的微服务系统设计方法。
技术介绍
微服务作为软件架构领域的一次重要变革,被业界公认为云计算时代应用的主要构建方式。它放弃传统大规模的单块集成应用,改为细粒度、松耦合、可灵活组合的自治单元。微服务最早从Netflix、Amazon、Airbnb等公司的成功实践开始,因其高度的弹性、灵活性和效率的巨大提升,快速受到各领域架构师和技术决策者的关注,成为当今IT领域最受关注的技术潮流之一。微服务系统是一种轻量级的,自我托管的服务系统,因此通信模式是微服务系统中比较重要的模块。传统的通信模型是Client/Server模型,也就是两个进程之间进行相互通信,其中,服务端提供位置(IP)信息,客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。服务通信端口负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功之后,双方通过输入和输出流进行同步阻塞式通信。基于这个模型,虽然有各种不同的伪异步通信模型的出现,从一定程度上能提高系统的并发和负载能力,但是不能从根本上解决系统的非阻塞的这一问题,缺乏弹性伸缩能力。有鉴于上述的缺陷,本设计人,积极加以研究创新,以期创设一种基于非阻塞通信的微服务系统设计方法,使其更具有产业上的利用价值。
技术实现思路
为解决上述技术问题,本专利技术的目的是提供一种高负载、高并发且完全非阻塞的基于非阻塞通信的微服务系统设计方法。本专利技术的基于非阻塞通信的微服务系统设计方法,包括步骤:(1)构建三层网络架构的服务端:包括由下至上的反应通信调度层、职责链管道层和业务逻辑处理层,其中-所述反应通信调度层监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,将这些事件触发到管道中,由管道充当的职责链来进行后续的处理;-所述职责链管道层负责事件在职责链中的有序传播,同时负责动态的编排职责链,职责链选择监听和处理自己关心的事件、拦截处理和向后/向前传播事件;-所述业务逻辑处理层负责业务逻辑处理与应用层协议管理;(2)客户端通过API透明地与所述服务端发送和接收信息。进一步的,所述服务端的实现步骤为:A、创建一个服务的实例,所述服务为服务入口,通过消息循环等待客户端的信息;B、绑定一个事件循环的线程池,通过一事件循环的数值来实现,用于处理选择器产生的事件通道通道,由事件来实现对选择器的轮询,每个事件处理网络的消息和系统自定义的任务;C、设置并绑定服务端的IO通道非阻塞服务端口通道,通过通道的类型决定提供服务的模式;D、注册和创建通信链路,用于处理网络事件,负责管理和执行通道处理模块,网络事件以事件流的形式在通道管线中流转,由通道管线根据通道处理模块的执行策略调度通道处理模块的执行。进一步的,所述网络事件的处理方法为:a、建立系统编解码框架;b、建立通用的基于长度的半包解码器;c、打印码流日志;d、对SSL进行安全认证;e、进行链路空闲检测;f、流量整形;g、采用Base64编解码;h、系统初始化并检测工作,然后绑定并启动监听端口,并将IO通道注册到选择器上监听客户端连接;i、选择器轮询:由调度系统负责调度和执行选择器轮询操作,选择准备就绪的通道集合;j、当轮询到准备就绪的通道之后由消息事件执行通道链路的相应方法,最终调度并执行通道处理方法;k、执行用户自定义的通道处理方法,完成整个服务端的任务。进一步的,所述编解码框架为Thrift的压缩二进制编解码框架或Google的Protobuf二进制序列化框架或基于系统自身提供的编解码框架。进一步的,所述网络事件包括链路注册、链路激活、链路断开、接收到请求消息、请求消息接收并处理完毕、发送应答消息、链路发生异常、用户自定义事件中的一种或多种。进一步的,所述客户端的实现步骤如下:1)创建处理客户端连接、I/O读写的反应线程组非阻塞事件轮询模块,通过构造函数指定I/O线程的个数,默认为CPU内核数的2倍;2)用户指定的通道类型创建用于客户端连接的非阻塞端口通道;3)创建默认的通道处理模块,用于调度和执行网络事件;4)异步发起TCP连接,判断连接是否成功,如果成功,则直接将非阻塞端口通道注册到多路复用器上,监听读操作位,用于数据报读取和消息发送;如果没有立即连接成功,则注册连接监听位到多路复用器,等待连接结果;5)注册对应的网络监听状态位到多路复用器;6)由多路复用器在I/O现场中轮询各通道,处理连接结果;7)如果连接成功,设置Future结果,发送连接成功事件,触发通道管线执行;8)由通道管线调度执行系统和用户的通道处理模块,执行业务逻辑。借由上述方案,本专利技术至少具有以下优点:1、非阻塞模型(Non-blockI/O,简称NIO)是一种新的通信模式,完全非阻塞,非常适合微服务系统通信,本专利技术设计的基于NIO的微服务系统解决了客户端和服务器高效通信的问题,使该系统具备高负载、高并发性;2、本专利技术的客户端与服务端同时基于同一通信方式(非阻塞),实现了完全无阻塞通信。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,并可依照说明书的内容予以实施,以下以本专利技术的较佳实施例并配合附图详细说明如后。附图说明图1是本专利技术的基于非阻塞模式的服务架构图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。本专利技术的基于非阻塞通信的微服务系统设计方法,使服务端与客户端同时基于非阻塞通信方式实现无阻塞通信。由于本专利技术的代码实现基于JDK来实现,因此下面实现描述的是基于JDK的术语来进行。服务端的架构和基本原理如图1所示,本专利技术采用了比较典型的三层网络架构进行设计:第一层:反应通信调度层,它由一系列辅助类完成,包括反应线程非阻塞事件轮询以及其父类、非阻塞端口通道/非阻塞服务端口通道以及其父类、字节流缓冲以及由其衍生出来的各种缓冲、Unsafe以及其衍生出的各种内部类等。该层的主要职责就是监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,例如连接创建、连接激活、读事件、写事件等等,将这些事件触发到管道中,由管道充当的职责链来进行后续的处理。第二层:职责链管道层,它负责事件在职责链中的有序传播,同时负责动态的编排职责链,职责链可以选择监听和处理自己关心的事件,它可以拦截处理和向后/向前传播事件,不同的应用的处理模块节点的功能也不同,通常情况下,往往会开发编解码处理模块用于消息的编解码,它可以将外部的协议消息转换成内部的对象,这样上层业务侧只需要关心处理业务逻辑即可,不需要感知底层的协议差异和线程模型差异,实现了架构层面的分层隔离。第三层:业务逻辑处理层,可以分为两类:1)纯粹的业务逻辑处理,例如订单处理;2)应用层协议管理,例如HTTP协议、FTP协议等。服务端的实现步骤:1)创建一个服务的实例,该服务为服务入口,只是简单的服务容器,通过消息循环等待客户端的信息;2)绑定一个事件循环的线程池,它是通过一事件循环的数值来实现,它的功能主要是处理选择本文档来自技高网...
一种基于非阻塞通信的微服务系统设计方法

【技术保护点】
一种基于非阻塞通信的微服务系统设计方法,其特征在于,包括步骤:(1)构建三层网络架构的服务端:包括由下至上的反应通信调度层、职责链管道层和业务逻辑处理层,其中‑所述反应通信调度层监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,将这些事件触发到管道中,由管道充当的职责链来进行后续的处理;‑所述职责链管道层负责事件在职责链中的有序传播,同时负责动态的编排职责链,职责链选择监听和处理自己关心的事件、拦截处理和向后/向前传播事件;‑所述业务逻辑处理层负责业务逻辑处理与应用层协议管理;(2)客户端通过API透明地与所述服务端发送和接收信息。

【技术特征摘要】
1.一种基于非阻塞通信的微服务系统设计方法,其特征在于,包括步骤:(1)构建三层网络架构的服务端:包括由下至上的反应通信调度层、职责链管道层和业务逻辑处理层,其中-所述反应通信调度层监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,将这些事件触发到管道中,由管道充当的职责链来进行后续的处理;-所述职责链管道层负责事件在职责链中的有序传播,同时负责动态的编排职责链,职责链选择监听和处理自己关心的事件、拦截处理和向后/向前传播事件;-所述业务逻辑处理层负责业务逻辑处理与应用层协议管理;(2)客户端通过API透明地与所述服务端发送和接收信息。2.根据权利要求1所述的基于非阻塞通信的微服务系统设计方法,其特征在于:所述服务端的实现步骤为:A、创建一个服务的实例,所述服务为服务入口,通过消息循环等待客户端的信息;B、绑定一个事件循环的线程池,通过一事件循环的数值来实现,用于处理选择器Selector产生的事件通道通道,由事件来实现对选择器的轮询,每个事件处理网络的消息和系统自定义的任务;C、设置并绑定服务端的IO通道非阻塞服务端口通道,通过通道的类型决定提供服务的模式;D、注册和创建通信链路,用于处理网络事件,负责管理和执行通道处理模块,网络事件以事件流的形式在通道管线中流转,由通道管线根据通道处理模块的执行策略调度通道处理模块的执行。3.根据权利要求2所述的基于非阻塞通信的微服务系统设计方法,其特征在于:所述网络事件的处理方法为:a、建立系统编解码框架;b、建立通用的基于长度的半包解码器;c、打印码流日志;d、对SSL进行安全认证;e、进行链路空闲检测;f、流量整形;g、采用Base64编解码;h、系统初始化并检测...

【专利技术属性】
技术研发人员:陶明亮杨峰高旺
申请(专利权)人:苏州星熙数据科技有限公司
类型:发明
国别省市:江苏,32

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

1