基于HazelCast的去中心化通信系统及实现方法与流程

文档序号:13010692阅读:658来源:国知局
基于HazelCast的去中心化通信系统及实现方法与流程

本发明属于数字信息的传输的技术领域,特别涉及一种不需要引入第三方注册中心就可以实现服务的注册发现和治理的基于hazelcast的去中心化通信系统及实现方法。



背景技术:

rpc是指远程过程调用协议,是通过网络从远程计算机程序上请求服务、而不需要了解底层网络技术的协议。rpc协议假定某些传输协议的存在,如tcp或udp,为通信程序之间携带信息数据。在osi网络通信模型中,rpc跨越了传输层和应用层,rpc使得开发包括分布式多程序在内的应用程序更加容易。

现有技术中,大部分rpc框架都需要注册中心来进行服务治理,即需要引入一第三方媒介,例如zookeeper,来充当注册中心,服务器端的接口注册到注册中心,客户端通过注册中心订阅服务接口,客户端无法第一时间获取到服务器端的所有机器列表信息,第三方媒介无法完全保障安全性,成本亦较高。同时,现有技术中,框架都不支持客户端指定服务端机器调用地址,只能通过负载均衡策略来调用请求服务器端的接口,消耗了大量的响应时间。



技术实现要素:

本发明解决的技术问题是,现有技术中,大部分rpc框架都需要注册中心来进行服务治理,即需要引入一个第三方媒介来充当注册中,同时框架都不支持客户端指定机器调用地址,只能通过负载均衡策略来调用请求服务器端的接口,而导致的客户端无法第一时间获取到服务器端的所有机器列表信息,第三方媒介无法完全保障安全性,成本亦较高,消耗大量的响应时间的问题,进而提供了一种优化的基于hazelcast构建的去中心化通信系统。

本发明所采用的技术方案是,一种基于hazelcast的去中心化通信系统,所述通信系统包括服务器端和客户端,所述服务器端包括服务端集群组网模块、服务器端接口注册模块、服务器端序列化和反序列化模块及服务器端接口代理模块及服务端接口信息模块;所述客户端包括客户端集群组网模块、客户端注册模块、客户端序列化和反序列化模块及客户端接口代理模块;所述服务器端内设有hazelcast,所述客户端连接至hazelcast。

优选地,所述服务端集群组网模块包括若干节点化的机器;所述服务端集群组网模块内存储每个机器的地址信息和端口信息;所述服务端集群组网模块与hazelcast的应用程序编程接口配合设置。

优选地,所述客户端集群组网模块与hazelcast的应用程序编程接口配合设置。

优选地,所述服务器端接口注册模块内存储与hazelcast的map接口配合设置。

优选地,所述客户端注册模块与hazelcast的map接口配合设置。

优选地,所述服务器端序列化和反序列化模块与hazelcast的serializationservice接口配合设置。

优选地,所述客户端序列化和反序列化模块与hazelcast的serializationservice接口配合设置。

优选地,所述服务器端接口代理模块与hazelcast的串行外设接口配合设置。

优选地,所述客户端接口代理模块与hazelcast配合设置。

一种采用所述的基于hazelcast的去中心化通信系统的实现方法,所述方法包括以下步骤:

步骤1:服务器端使用hazelcast的应用程序编程接口进行组网,将任一机器的信息以及服务器端接口注册模块注册至hazelcast的map接口;

步骤2:客户端使用hazelcast的应用程序编程接口进行组网,通过hazelcast建立与服务器端的机器的连接,客户端将客户端的机器的信息通过客户端注册模块注册至hazelcast的map接口;

步骤3:客户端接收请求信息,通过hazelcast的serializationservice接口将请求信息序列化;

步骤4:客户端采用负载均衡策略通信或点对点通信对服务器端发起调用,客户端将请求发送至服务器端;

步骤5:服务器端接口代理模块通过hazelcast的串行外设接口接收到请求信息后,服务器端序列化和反序列化模块利用hazelcast的serializationservice接口将请求信息反序列化为内存对象;

步骤6:服务器端发起服务调用,服务器端将调用结果序列化后返回给客户端;

步骤7:客户端将返回的信息反序列化为内存对象处理返回结果。

本发明提供了一种优化的基于hazelcast的去中心化通信系统及实现方法,通过在服务器端内设置hazelcast,利用hazelcast的特性,在服务器端设置服务端集群组网模块、服务器端接口注册模块、服务器端序列化和反序列化模块及服务器端接口代理模块及服务端接口信息模块,支持组建应用集群,集群详细信息和节点信息一目了然,集群的动态变更和数据备份都是可以瞬间感知的,而且客户端和服务器端均有接口可以获取到服务器端的集群详细信息以及集群内数据的相应信息,在客户端设置客户端集群组网模块、客户端注册模块、客户端序列化和反序列化模块及客户端接口代理模块,通过调用服务器端的hazelcast完成作业。

本发明的有益效果在于,将服务器端的接口信息和机器信息都保存在服务器端的内存中,不需要第三方注册中心,缩减成本,由于信息全局共享,客户端和服务器端均有接口来获取到详细的接口信息,客户端可以获取到详细的集群的内存信息,同时,根据hazelcast特性,可以指定服务器端的机器地址来进行点对点的远程通信,安全性高,响应时间少。

附图说明

图1为本发明的通信系统结构示意图;

图2为本发明的发明流程图;

图3为本发明的网络拓扑结构图;

图4为本发明的逻辑结构图。

具体实施方式

下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。

如图所示,本发明涉及一种基于hazelcast的去中心化通信系统,所述通信系统包括服务器端和客户端,所述服务器端包括服务端集群组网模块、服务器端接口注册模块、服务器端序列化和反序列化模块及服务器端接口代理模块及服务端接口信息模块;所述客户端包括客户端集群组网模块、客户端注册模块、客户端序列化和反序列化模块及客户端接口代理模块;所述服务器端内设有hazelcast,所述客户端连接至hazelcast。

本发明中,通过在服务器端内设置hazelcast,利用hazelcast的特性,在服务器端设置服务端集群组网模块、服务器端接口注册模块、服务器端序列化和反序列化模块及服务器端接口代理模块及服务端接口信息模块,支持组建应用集群,集群详细信息和节点信息一目了然,集群的动态变更和数据备份都是可以瞬间感知的,而且客户端和服务器端均有接口可以获取到服务器端的集群详细信息以及集群内数据的相应信息,在客户端设置客户端集群组网模块、客户端注册模块、客户端序列化和反序列化模块及客户端接口代理模块,通过调用服务器端的hazelcast完成作业。

本发明中,模块之间的调用主要通过编程扩展hazelcast提供的spi接口,客户端进行代理发送请求信息,服务器端代理收到的请求信息,然后服务器端和客户端通过javaniosocket编程来进行通信。

所述服务端集群组网模块包括若干节点化的机器;所述服务端集群组网模块内存储每个机器的地址信息和端口信息;所述服务端集群组网模块与hazelcast的应用程序编程接口配合设置。

本发明中,服务端集群组网模块包括若干机器,事实上,每个机器都为节点化处理,节点之间通过tcp/ip连接在一起,成为一个集群网络,利用hazelcast组网后,所有申请的内存都存在服务器端的机器中,服务器端的机器信息和端口信息根据秘钥散列在服务器端的各个机器的应用程序内存中,是一个分布式的存储。

本发明中,hazelcast可以提供接口供客户端获取到服务器端的所有机器列表信息、集群信息。

所述客户端集群组网模块与hazelcast的应用程序编程接口配合设置。

本发明中,hazelcast提供了客户端集群组网的接口,直接调用对应的应用程序编程接口就可以连接服务器端的集群,客户端跟服务器端每台机器都建立了tcp连接,而且客户端可以像服务器端那样使用应用程序编程接口来获取服务器端集群的列表信息,如地址、端口等。

本发明中,鉴于hazelcast的特性,故在客户端可以灵活的指定负载均衡策略,如使用轮询策略或者权重策略等,也可以指定服务器端调用机器地址,这样就实现了我们指定调用机器地址的需求,大大缩减了响应时间。

所述服务器端接口注册模块内存储与hazelcast的map接口配合设置。

本发明中,hazelcast提供分布式的接口集合,当每台服务器端的机器启动加入集群的时候,就可以将本服务器端节点提供的接口信息通过hazelcast的map接口注册到分布式map中,这样即省去第三方的注册中心,例如zookeeper,实现了去中心化的目标。

本发明中,由于此map是分布式的,因此数据可能分布在服务器端的集群的任何一台机器上。

本发明中,接口信息包括接口名称、参数、版本、返回类型等。

所述客户端注册模块与hazelcast的map接口配合设置。

本发明中,hazelcast提供的分布式map即使在客户端也是可以获取到的,因此我们可以将客户端的信息直接写到服务器端的map中,在客户端机器和服务器端集群间建立tcp/ip连接,这样服务器端的分布式map中就保存了客户端和服务器端的所有信息,并且是在客户端和服务器端全局共享的,这样用户就可以监控和查看客户端、服务器端的所有详细信息、接口信息和机器信息等。

本发明中,这种效果是由客户端注册模块与hazelcast的map接口间的调用完成的。

所述服务器端序列化和反序列化模块与hazelcast的serializationservice接口配合设置。

本发明中,服务器端接收到客户端的请求后必然会涉及到请求信息的反序列化,服务器端返回客户端的调用结果时,必然会涉及到将返回信息序列化。hazelcast提供serializationservice接口,服务器端序列化和反序列化模块可以对此进行调用,进而对内存对象进行序列化和反序列化,可以使用serializationservice接口将请求信息序列化为二进制格式,也可以将二进制格式反序列化为内存对象,高效、准确,解决了rpc框架中的序列化和反序列化的问题。

所述客户端序列化和反序列化模块与hazelcast的serializationservice接口配合设置。

本发明中,客户端在发送请求的时候需要将请求信息序列化,客户端在接受到服务器端返回的信息的时候需要将返回信息反序列化为内存对象。

本发明中,hazelcast提供了serializationservice接口来对内存对象进行序列化和反序列化,可以使用serializationservice接口将信息序列化为二进制格式,也可以将二进制格式的信息反序列化为内存对象,效率更高,解决rpc框架中的序列化和反序列化的问题。

所述服务器端接口代理模块与hazelcast的串行外设接口配合设置。

本发明中,可以使用动态代理的模式,对服务器端接收到的请求调用进行代理,这样所有的请求将由代理类来进行处理,代理类接收到请求后,将请求信息反序列化为内存对象,然后通过反射调用服务器端应用提供的接口。

本发明中,hazelcast提供了现成的串行外设接口来进行代理调用的标准定制,我们可以实现该接口operationservice来进行代理请求的处理,具体的说,服务器端将接收到的请求由代理类来进行代理,可以使用hazelcast提供的spi来进行扩展编程进行请求代理。

所述客户端接口代理模块与hazelcast配合设置。

本发明中,可以使用动态代理的模式,来对客户端发送的请求调用进行代理,即所有的请求将由代理类来进行处理,代理类接收到请求后,将请求信息序列化为二进制对象,然后将二进制对象编程并发送到服务器端,解决了服务器端和客户端的网络通信问题。

本发明中,一般情况下,客户端通过使用代理类,对请求进行代理,然后使用javaniosocket编程来实现与服务器端的信息通信,可以通过javaniosocket编程来将信息发送到服务器端,服务器端也使用javaniosocket来监听请求和处理。

本发明还涉及一种采用所述的基于hazelcast的去中心化通信系统的实现方法,所述方法包括以下步骤。

步骤1:服务器端使用hazelcast的应用程序编程接口进行组网,将任一机器的信息以及服务器端接口注册模块注册至hazelcast的map接口。

本发明中,信息包括接口信息、机器信息等。

步骤2:客户端使用hazelcast的应用程序编程接口进行组网,通过hazelcast建立与服务器端的机器的连接,客户端将客户端的机器的信息通过客户端注册模块注册至hazelcast的map接口。

步骤3:客户端接收请求信息,通过hazelcast的serializationservice接口将请求信息序列化。

步骤4:客户端采用负载均衡策略通信或点对点通信对服务器端发起调用,客户端将请求发送至服务器端。

本发明中,客户端一般通过tcp通信将请求发送至服务器端。

步骤5:服务器端接口代理模块通过hazelcast的串行外设接口接收到请求信息后,服务器端序列化和反序列化模块利用hazelcast的serializationservice接口将请求信息反序列化为内存对象。

步骤6:服务器端发起服务调用,服务器端将调用结果序列化后返回给客户端。

步骤7:客户端将返回的信息反序列化为内存对象处理返回结果。

本发明中,服务器端是服务提供者,可以接受服务调用,服务器端同时是注册中心,客户端和服务器端信息均注册在服务端分布式内存中,去掉了第三方注册中心,客户端是服务调用者,负责发起服务调用,服务器端不需要将注册信息同步给客户端,客户端可以直接内存访问注册信息。

本发明解决了现有技术中,大部分rpc框架都需要注册中心来进行服务治理,即需要引入一第三方媒介来充当注册中,同时框架都不支持客户端指定机器调用地址,只能通过负载均衡策略来调用来请求服务器端的接口,而导致的客户端无法第一时间获取到服务器端的所有机器列表信息,第三方媒介无法完全保障安全性,成本亦较高,消耗大量的响应时间的问题,通过在服务器端内设置hazelcast,利用hazelcast的特性,在服务器端设置服务端集群组网模块、服务器端接口注册模块、服务器端序列化和反序列化模块及服务器端接口代理模块及服务端接口信息模块,支持组建应用集群,集群详细信息和节点信息一目了然,集群的动态变更和数据备份都是可以瞬间感知的,而且客户端和服务器端均有接口可以获取到服务器端的集群详细信息以及集群内数据的相应信息,在客户端设置客户端集群组网模块、客户端注册模块、客户端序列化和反序列化模块及客户端接口代理模块,通过调用服务器端的hazelcast完成作业。

本发明的有益效果在于,将服务器端的接口信息和机器信息都保存在服务器端的内存中,不需要第三方注册中心,缩减成本,由于信息全局共享,客户端和服务器端均有接口来获取到详细的接口信息,客户端可以获取到详细的集群的内存信息,同时,根据hazelcast特性,可以指定服务器端的机器地址来进行点对点的远程通信,安全性高,响应时间少。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1