分布式多语言消息实现方法、装置及服务器与流程

文档序号:18213566发布日期:2019-07-19 22:28阅读:991来源:国知局
分布式多语言消息实现方法、装置及服务器与流程

本发明涉及通讯技术领域,尤其是涉及一种分布式多语言消息实现方法、装置及服务器。



背景技术:

随着软件应用的发展,一个应用系统往往由多个独立的软件构成,这些独立的软件根据业务的需要,彼此之间需要进行数据的交换。数据交换模式使用较为广泛的主要有轮询和推送,其中轮询主要采用周期性主动请求的方式获取数据;推送则通过订阅发布的方式,主题发布者发布主题,主题订阅者根据业务类型订阅主题,主题发布者在数据更新时,主动将数据推送给各订阅者,实现数据的实时更新。

目前,基于发布订阅模式的各种消息系统层出不穷,有单点的,也有分布式的,有遵循jms(javamessageservice,java消息服务)规范的,也有另辟蹊径的,但它们大都采用特定编程语言实现,消息服务端和订阅客户端要采用相同编程语言实现,而采用c++语言编写的主题发布服务端节点无法与java语言编写的软件客户端直接通信,使得异构语言软件无法实现通信,限制了用户的使用,降低了用户的使用体验。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式多语言消息实现方法、装置及服务器,以缓解上述技术问题。

第一方面,本发明实施例提供了一种分布式多语言消息实现方法,其中,该方法应用于服务端,上述方法包括:如果接收到启动信号,利用预置的多语言反射功能生成指定开发语言的多个api接口,其中,每个api接口对应一种开发语言;接收客户端发送的连接请求,其中,连接请求包括以下请求中的一种或多种:消息推送请求、消息获取请求、主题发布请求、主题订阅请求;解析连接请求中携带的开发语言标识;根据开发语言标识从多个api接口中选取与开发语言标识对应的api接口;通过选取的api接口与客户端进行连接。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,利用预置的多语言反射功能生成指定开发语言的多个api接口的步骤包括:利用预置的多语言反射功能,根据中间语言文件自动编译并生成多个指定开发语言对应的语言文件;根据语言文件生成指定开发语言的多个api接口。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,当连接请求为主题发布请求或者主题订阅请求时,该方法还包括:根据已发布主题自动创建消息发布管道;将客户端连接的api接口对应的节点信息注册到zookeeper集群中,并在api接口的服务发生异常,或api接口对应的服务节点关闭时,维护服务节点在zookeeper集群中对应的节点信息,其中,节点信息为服务节点的ip地址和端口号。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,该方法还包括:如果接收到启动信号,建立负载均衡单元与zookeeper集群之间的心跳机制和/或事件机制;通过建立的心跳机制和/或事件机制检测zookeeper集群是否发生中断。

结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,通过建立的心跳机制和/或事件机制检测zookeeper集群是否发生中断的步骤包括:利用负载均衡单元定期和/或实时向zookeeper集群发送心跳信息和/或事件信息;如果zookeeper集群根据心跳信息和/或事件信息向负载均衡单元发送同样的心跳信息和/或事件信息时,则zookeeper集群正常工作;如果zookeeper集群未向负载均衡单元发送同样的心跳信息和/或事件信息,则zookeeper集群发生中断。

结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,该方法还包括:当检测到zookeeper集群正常工作时,负载均衡单元获取注册到zookeeper集群中与客户端连接的api接口对应的节点信息;负载均衡单元将获取的节点信息推送至与客户端连接的api接口。

第二方面,本发明实施例还提供一种分布式多语言消息实现装置,其中,该装置应用于服务端,该装置包括:生成模块,用于如果接收到启动信号,利用预置的多语言反射功能生成指定开发语言的多个api接口,其中,每个api接口对应一种开发语言;接收模块,用于接收客户端发送的连接请求,其中,连接请求包括以下请求中的一种或多种:消息推送请求、消息获取请求、主题发布请求、主题订阅请求;解析模块,用于解析连接请求中携带的开发语言标识;选取模块,用于根据开发语言标识从多个api接口中选取与开发语言标识对应的api接口;连接模块,用于通过选取的api接口与客户端进行连接。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,生成模块还用于:利用预置的多语言反射功能,根据中间语言文件自动编译并生成多个指定开发语言对应的语言文件;根据语言文件生成指定开发语言的多个api接口。

第三方面,本发明实施例还提供一种服务器,其中,服务器包括:处理器和存储器;其中,存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述的方法步骤。

第四方面,本发明实施例还提供一种计算机存储介质,其中,用于存储计算机程序指令,当计算机执行计算机程序指令时,执行上述的方法。

本发明实施例带来了以下有益效果:

本发明实施例提供的一种分布式多语言消息实现方法、装置及服务器,能够在接收到启动信号时,利用预置的多语言反射功能生成指定开发语言的多个api接口,在接收客户端发送的连接请求时,解析上述连接请求中携带的开发语言标识;根据开发语言标识从多个api接口中选取与开发语言标识对应的api接口;通过选取的api接口与客户端进行连接,实现了异构语言软件之间的通信,提高了用户的使用体验。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种分布式多语言消息实现方法的流程图;

图2为本发明实施例提供的一种分布式多语言系统框架图;

图3为本发明实施例提供的一种分布式多语言消息实现装置的结构示意图;

图4为本发明实施例提供的一种服务器的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,消息服务端和订阅客户端要采用相同编程语言才能够实现通信,而当消息服务端和订阅客户端采用不同编程语言时却无法实现通信,从而限制了用户的使用以及降低了用户的使用体验,基于此,本发明实施例提供的一种分布式多语言消息实现方法、装置及服务器,可以缓解上述技术问题。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种分布式多语言消息实现方法进行详细介绍。

实施例一:

本发明实施例提供了一种分布式多语言消息实现方法,该方法应用于服务端,图1所示的一种分布式多语言消息实现方法的流程图,该方法包括以下步骤:

步骤s102,如果接收到启动信号,利用预置的多语言反射功能生成指定开发语言的多个api(applicationprograminterface,应用程序编程接口)接口,其中,每个api接口对应一种开发语言;

具体地,该启动信号通常是用户输入的触发上述服务端启动的信号,且本发明实施例中的服务端通常是运行在服务器上的服务程序,进一步,对应于该服务端,通常都有与之通信连接的客户端,作为用户侧设备,与服务器相对应,为客户提供本地服务。

具体实现时,预置的多语言反射功能是内置在多语言封装单元的,该语言封装单元为支持java、c++、c#、ruby、python等语言的封装单元,并且,该语言封装单元是利用开源中间件在服务端集成而来的。

具体地,步骤s102,利用预置的多语言反射功能生成指定开发语言的多个api接口,可由步骤11至步骤12实现:

步骤11,利用预置的多语言反射功能,根据语言中间件自动编译并生成多个指定开发语言对应的语言文件;

步骤12,根据语言文件生成指定开发语言的多个api接口。

在实际应用时,当多语言反射功能接收到服务端的启动信号时,触发多语言反射功能查询预先存储在服务端数据库中的主题信息,该主题信息为业务数据,当多语言反射功能查询到主题信息时,会将该主题信息生成中间语言文件,该中间语言文件为能够被上述的java、c++、c#、ruby、python等语言解析的通用语言文件,并利用多语言反射功能将上述中间语言文件编译并生成语言文件,其中,生成的语言文件为上述java、c++、c#、ruby、python等每个开发语言对应的api接口。

步骤s104,接收客户端发送的连接请求,其中,连接请求包括以下请求中的一种或多种:消息推送请求、消息获取请求、主题发布请求、主题订阅请求;

步骤s106,解析连接请求中携带的开发语言标识;

步骤s108,根据开发语言标识从多个api接口中选取与开发语言标识对应的api接口;

步骤s110,通过选取的api接口与客户端进行连接。

通常,生成的api接口为对应多个开发语言的多个api接口,服务端需要在多个api接口中选取其中一个对应于客户端开发语言的接口,才能实现服务端与客户端的通信连接,因此,在客户端向服务端发送连接请求时,服务端会对上述的连接请求进行解析,获取携带有发送上述连接请求的客户端的开发语言标识,服务端根据该标识在上述多个api接口中选取与该客户端标识相同即与该客户端开发语言相同的api接口与客户端进行通信连接。

本发明实施例提供的一种分布式多语言消息实现方法,能够在接收到启动信号时,利用预置的多语言反射功能生成指定开发语言的多个api接口,在接收客户端发送的连接请求时,解析上述连接请求中携带的开发语言标识;根据开发语言标识从多个api接口中选取与开发语言标识对应的api接口;通过选取的api接口与客户端进行连接,实现了异构语言软件之间的通信,提高了用户的使用体验。

在具体应用时,当连接请求为主题发布请求或者主题订阅请求时,根据已发布主题自动创建消息发布管道;将客户端连接的api接口对应的节点信息注册到zookeeper集群中,并在api接口的服务发生异常,或api接口对应的服务节点关闭时,维护服务节点在zookeeper集群中对应的节点信息,其中,节点信息为服务节点的ip地址和端口号。

具体实现时,zookeeper集群一个分布式的,开放源码的分布式应用程序协调服务,是google的chubby一个开源的实现,是hadoop和hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。使用zookeeper集群的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

在本发明实施例中,可将客户端连接的api接口对应的节点信息注册到zookeeper集群中,即可以将服务端的节点信息存储到zookeeper集群建立的临时节点中,图2示出了一种分布式多语言系统框架图,如图2所示,zookeeper集群可以建立与服务端1至服务端n对应的临时节点,服务端1至服务端n可以将自身的节点信息即自身的ip地址和端口号存储到zookeeper集群建立的临时节点中进行存储。当api接口的服务发生异常,或api接口对应的服务节点关闭时,zookeeper集群可维护服务节点在zookeeper集群中对应的节点信息。

通常,如果接收到启动信号,建立负载均衡单元与zookeeper集群之间的心跳机制和/或事件机制;通过建立的心跳机制和/或事件机制检测zookeeper集群是否发生中断。

在实际应用时,当服务端接收到启动信号时,会触发负载均衡单元启动,在负载均衡单元启动后,建立负载均衡单元与zookeeper集群之间的心跳机制和/或事件机制,用于检测zookeeper集群的工作情况,具体地,通过建立的心跳机制和/或事件机制检测zookeeper集群是否发生中断的步骤可由步骤21至步骤23实现:

步骤21,利用负载均衡单元定期和/或实时向zookeeper集群发送心跳信息和/或事件信息;

步骤22,如果zookeeper集群根据心跳信息和/或事件信息向负载均衡单元发送同样的心跳信息和/或事件信息时,则zookeeper集群正常工作;

步骤23,如果zookeeper集群未向负载均衡单元发送同样的心跳信息和/或事件信息,则zookeeper集群发生中断。

其中,通过负载均衡单元与zookeeper集群可将服务端的服务状态告知客户端,无需在客户端与服务端之间进行心跳检测和/或事件检测,在本发明实施例中,可通过在负载均衡单元与zookeeper集群之间建立的心跳机制和/或事件机制来检测zookeeper集群是否发生中断,如果zookeeper集群没有发生中断,则负载均衡单元可获取服务端的节点信息,并将服务端的节点信息通过与客户端开发语言对应的api接口推送至客户端。

在如图2所示的分布式多语言系统框架图中,以包含java客户端和c++客户端为例两个进行说明,服务端1将节点信息注册到zookeeper集群中,负载均衡单元定期和/或实时向zookeeper集群发送心跳信息和/或事件信息;当zookeeper集群同样向负载均衡单元发送上述的心跳信息和/或事件信息时,检测到该zookeeper集群正常工作,没有发生中断,负载均衡单元会在zookeeper集群中获取服务端1的节点信息,并将服务端1的节点信息通过与java客户端和/或c++客户端对应的api接口推送至java客户端和/或c++客户中,实现发布服务端1与java客户端和/或c++客户端的通信。同理,其它服务端向客户端推送自身节点信息的方式和上述相同,在此不再进行赘述。通过建立负载均衡单元与zookeeper集群之间的心跳机制和/或事件机制检测zookeeper集群的工作状态,使得服务端节省了相关资源消耗,尤其对于具有大量客户端的情况下,显然极大地简化了服务端的构建和管理。

实施例二:

在上述实施例的基础上,本发明实施例还提供了一种分布式多语言消息实现装置,该装置应用于服务端,如图3所示的一种分布式多语言消息实现装置的结构示意图,该装置包括:

生成模块302,用于如果接收到启动信号,利用预置的多语言反射功能生成指定开发语言的多个api接口,其中,每个api接口对应一种开发语言;

接收模块304,用于接收客户端发送的连接请求,其中,连接请求包括以下请求中的一种或多种:消息推送请求、消息获取请求、主题发布请求、主题订阅请求;

解析模块306,用于解析连接请求中携带的开发语言标识;

选取模块308,用于根据开发语言标识从多个api接口中选取与开发语言标识对应的api接口;

连接模块310,用于通过选取的api接口与客户端进行连接。

进一步,生成模块还用于:利用预置的多语言反射功能,根据中间语言文件自动编译并生成多个指定开发语言对应的语言文件;根据语言文件生成指定开发语言的多个api接口。

本发明实施例提供的分布式多语言消息实现装置,与上述实施例提供的分布式多语言消息实现方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

进一步,本发明实施例还提供了一种服务器,参见图4所示的一种服务器的结构框图,包括:处理器400,存储器401,总线402和通信接口403,所述处理器400、通信接口403和存储器401通过总线402连接;处理器400用于执行存储器401中存储的可执行模块,例如计算机程序。

其中,存储器401可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线402可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器401用于存储程序,所述处理器400在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的分布式多语言消息实现方法可以应用于处理器400中,或者由处理器400实现。

处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器400读取存储器401中的信息,结合其硬件完成上述方法的步骤。

具体地,本发明实施例还提供一种计算机存储介质,其中,用于存储计算机程序指令,当计算机执行计算机程序指令时,执行上述的方法。

本发明实施例所提供的分布式多语言消息实现方法、装置及服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和服务器的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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