一种基于消息的高可用云系统和实现方法

文档序号:7818169阅读:218来源:国知局
一种基于消息的高可用云系统和实现方法
【专利摘要】本发明提供一种基于消息的高可用云系统和实现方法,其中,所述系统包括:消息中心客户端,用于生产和消费消息;消息中心服务端,用于传递、存储和管理所述消息,所述消息中心服务端包括:可线性扩展的消息中心高可用云,所述消息中心高可用云由多个消息中心服务群组成,每个所述消息中心服务群由多个消息中心代理机组成;以及注册中心,用于将消息路由信息以缓存方式下载至所述消息中心客户端并持久化存储于数据文件中,以及管理所述消息中心服务端的连接信息,多个所述注册中心连接为一个注册中心集群,所述注册中心集群可线性扩展。通过高可用云模式,实现消息中心和注册中心的线性扩展,使消息传输更加灵活。
【专利说明】一种基于消息的高可用云系统和实现方法

【技术领域】
[0001]本发明涉及数据处理领域,具体而言,涉及一种基于消息的高可用云系统和实现方法。

【背景技术】
[0002]消息中间件的基本工作原理为:在消息发送方,消息发送者调用发送消息的API函数,将需要发送的消息经消息队列服务存储到发送消息队列中;通过双方消息传递服务之间的交互,经消息队列服务将需要发送的消息从发送队列取出,并送到接收方;接收方再经它的消息队列服务将接收到的消息存放到它的接收消息队列中;在消息接收方,消息接收者调用接收消息的API函数,同样经过消息队列服务,将需要的消息从接收队列中取出,并进行处理。消息在发送或接收成功后,消息队列服务将对相应的消息队列进行管理。
[0003]这种传统的消息中间件通常采用点对点的消息传送结构,在发送方进行消息打包时需要明显的标注接收方的地址。因此,尽管消息的接收方和发送方是松耦合连接的,相互通信不必保持同步,但由于消息中心必须绑定接收方的地址,导致在广域、大型应用系统中消息中间件的使用不够灵活,系统扩展也比较困难。
[0004]尽管后来又出现了基于星形结构的消息传输机制(简称为消息中心),但这种星形结构也存在缺陷,往往在接入的客户端过多或消息数量增加时造成服务端的过载,从而导致丢包,甚至停止服务的情况。然而,解决这种缺陷的方法是增加系统的高扩展性,也就是说,需要实现即使消息中心能在消息使用方透明的情况下进行横向扩展,性能能随资源的扩展而线性扩展。


【发明内容】

[0005]本发明的目的在于提供了一种基于消息的高可用云系统和实现方法,可以解决传统的消息中间件通信不够灵活,系统扩展困难的问题。
[0006]—方面,本发明提供了一种基于消息的高可用云系统,所述系统包括:
[0007]消息中心客户端,用于生产消息和消费消息;
[0008]消息中心服务端,用于传递、存储和管理所述消息,所述消息中心服务端包括:可线性扩展的消息中心高可用云,所述消息中心高可用云由多个消息中心服务群组成,每个所述消息中心服务群由多个消息中心代理机组成;以及
[0009]注册中心,用于将消息路由信息以缓存方式下载至客户端并持久化存储于数据文件中,以及管理所述消息中心服务端的连接信息,多个所述注册中心连接为一个注册中心集群,所述注册中心集群可线性扩展。
[0010]另一方面,本发明提供了一种基于消息的高可用云的实现方法,所述方法包括:
[0011]消息中心客户端登录注册中心,通过所述注册中心返回的信息向所述消息中心服务端申请建立连接;
[0012]所述消息中心客户端与所述消息中心服务端建立连接,设置发送或接收队列;
[0013]所述消息中心客户端与所述消息中心服务端发送或接收消息;
[0014]所述发送或接收消息完成后,所述消息中心客户端与所述消息中心服务端关闭连接。
[0015]采用本发明的一种基于消息的高可用云系统和实现方法,通过高可用云模式,实现消息中心和注册中心的线性扩展,使消息传输更加灵活。

【专利附图】

【附图说明】
[0016]图1是本发明的一种基于消息的高可用云系统的结构示意图;
[0017]图2是本发明系统中所述消息中心客户端100的结构示意图;
[0018]图3是本发明系统中所述注册中心200的结构示意图;
[0019]图4是本发明系统中所述消息中心服务端300的结构示意图;
[0020]图5是本发明的一种基于消息的高可用云的实现方法的流程图。

【具体实施方式】
[0021]为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0022]图1是本发明的一种基于消息的高可用云系统的结构示意图。参见图1,该系统包括:
[0023]消息中心客户端100,用于生产和消费消息。所述消息中心客户端100可以为计算机、手机、平板电脑等设备上的客户端应用软件。
[0024]消息中心服务端300,用于传递、存储和管理所述消息,所述消息中心服务端300包括:可线性扩展的消息中心高可用云,所述消息中心高可用云由多个消息中心服务群组成,每个所述消息中心服务群由多个消息中心代理机组成。
[0025]注册中心200,用于将消息路由信息(消息路由值(CSID)号)以缓存方式下载至所述消息中心客户端100,并持久化存储于数据文件中,以及管理所述消息中心服务端300的连接信息,多个所述注册中心连接为一个注册中心集群,所述注册中心集群可线性扩展。
[0026]其中,所述消息中心服务端300的连接信息包括:队列信息、交换信息、用户信息和访问权限信息。注册中心200与消息中心服务端300的每个节点硬件配置为4CPUU6G内存的基于Linux的X86虚拟分区。多个节点可联合部署成云结构,支持集群模式,支持主/备方式,支持各种网络拓扑结构,并可线性扩展,具体如下:每三个节点组成一个子集群,可按业务分类,设置多种主题及队列;每个消息中心客户端100只需与本地已分配的节点交互,不用关心具体主题部署在哪台节点上,通过设置队列路由,以及主题路由,完成消息请求和消息路由的自动转换,节点可根据负载情况,线性扩充;并可支持广域网部署,支持两地三中心。
[0027]所述系统通过高可用云模式,既实现了消息中心和注册中心的性能随着服务群组的扩展,性能同步线性扩展,又完全屏蔽了内部高可用云实现细节,消息生产者和消息消费者完全透明使用服务,不用关心具体消息存储位置,从而使消息传输更加灵活,处理性能(TPS)能满足不断增长的业务需求。
[0028]图2是本发明系统中所述消息中心客户端100的结构示意图。参见图2,所述消息中心客户端100包括:
[0029]消息中心接口 101,用于登录所述注册中心和连接所述消息中心服务端;
[0030]应用组件模块102,用于通过JAVA语言或C语言实现接收和发送所述消息的组件。
[0031]图3是本发明系统中所述注册中心200的结构示意图。参见图3,所述注册中心200包括:
[0032]用户信息模块201,用于管理连接至所述注册中心的用户登录信息,其中,所述用户登录信息包括:用户的用户名和密码信息。用户输入正确的用户名和密码后即可登录,系统将调用动态认证接口的数据信息进行身份验证,验证成功后即可进入注册中心200的主页面。
[0033]消息路由模块202,用于管理外部系统使用所述消息中心的标识号,并对所述消息路由信息持久化存储。其中,所述消息路由信息包括CSID值,该模块可提供CSID值和Exchange队列类型等查询方式。
[0034]服务信息模块203,用于管理所述注册中心端的队列信息,包括增加或删除队列,当需要增加队列时,增加队列与Exchange队列绑定;当需要删除队列时,删除队列与Exchange队列绑定。
[0035]授权信息模块204,用于管理所述用户连接到所述注册中心上的访问控制权限信息。其中,可设置:用户对消息中心的权限包括:允许权限和禁止权限;动作包括consume、publish和All ;对像包括对列与exchange。
[0036]图4是本发明系统中所述消息中心服务端300的结构示意图。参见图4,所述消息中心服务端300包括:
[0037]消息匹配模块301,用于将所述消息的生产者和消费者与所述队列信息相匹配。由路由器承担消息匹配与基本的转换工作,通过路由表(配置文件)方式来控制实现消息的路由功能,包括:消息路由值=CSID ;交换类型名称:EXCHANGE名称;队列名称:实际队列名;路由表的上述控制字段(fields)同时也被设计在消息头的结构体中,从而使得如果外部应用明确了消息的目的地,该模块就可以直接解析消息头,而不需要再去访问路由表了。
[0038]消息处理模块302,用于对所述消息进行格式转换和收发控制。其中,消息格式转换指的是对消息体格式的转换。格式主要包括XML、C程序消息结构体、主机COBOL程序的数据结构体,并在消息头的消息格式字段域描述。NONE代表不用转换。如果XML到其他格式的转换,不需要从消息格式库中读取格式描述文件,直接调用XML格式处理模块进行格式转换。如果是其他格式的转换,则需要从消息格式库中读取格式描述文件,并作相应的格式转换。消息收发控制主要指在消息发送/接收过程中对消息进行的一些处理。当消息处理线程接收到消息后,经过对消息的各种功能处理后,由消息路由模块301来决定目的系统及相应的接收队列,并由流量控制模块304决定消息发往目的地集群的哪个系统。这种设计可使代码的实现更加简单和清晰,并且,在同一线程完成对消息的处理,可以保证事务的完整性。
[0039]队列管理模块303,用于为应用程序提供对队列对象的访问管理。所述队列管理模块303可根据业务需求,预先设置(或者复用)队列,并设定绑定路由值。队列使用FIFO队列缓冲,由于是一次性完成内存分配,因此不存在通常根据生产者、消费者频繁发送(put)和接收(get)消息造成的内存分配开销;同时支持多线程访问,并通过锁机制完成线程间同步和互斥;消息中心集群内所有队列统一管理,可看成是一个大的队列池。当消息生产者产生消息,并通过消息中心api的put接口发送消息时,消息中心Broker根据传递的CSID参数,查询匹配对应的队列,完成相关消息插入队列动作;消息消费者收取消息过程与之类似,通过消息中心api的get接口接收消息,消息中心Broker根据传递的CSID参数,查询匹配对应的队列,完成相关消息POP队列动作。队列管理模块同时提供队列增加、查询、修改、删除等功能接口,供注册中心界面调用,并完成相关队列管理功能。
[0040]流量控制模块304,用于对所述消息进行多目的地均衡分发,以及在队列等资源达到流控筏值时流控生效,暂时性禁止发送方发送消息,从而达到保护消息中心的目的。在“消息中心”系统初始化时,在系统控制块中定义流量控制表,流量控制表包含如下3类信息:1、与发送进程连接的目的地系统名称、业务(应用)系统名称、目的地系统CPU状态,轮循标识;2、各发送进程的识别号、启动时间、状态;3、在发送进程的消息计数器。同时,轮循标识可以用来决定下一笔消息走哪个发送进程。流量控制模块在决定了目标发送进程后,给其计数器加I。流量控制模块可以提供多种流量控制算法(如:轮循算法),结合目标系统CPU使用率的智能算法,目标系统CPU使用率的获取可通作为一个系统事件由“消息中心”监控管理模块来实现。
[0041]安全模块305,用于消息传输、用户数据安全和资源管理安全。其中,传输安全是指消息中心提供了 SSL传输加密实现方法和手段;用户数据安全是指通过调用数据加解密公用模块来实现;消息中心资源管理安全是指消息中心设计提供了统一的管理/控制界面,及命令行输入窗口。可以提供基于用户安全权限管理(ACL)机制。
[0042]日志模块306,用于记录所述消息的日志及流水,可按日志级别打印不同详细程度日志。为了应对超时处理,对于同步消息必须记录消息流水日志。且流水日志需要在消息中心、外部应用服务适配器(发送方及接收方)上同时记录。基于灵活性考虑,外部应用可以通过在消息头(用户消息属性(User Properties))中设置日志流水标识告诉消息中心是否记录流水日志。另外,在消息中心和外部应用服务适配器可通过配置文件中的相应消息代码的日志流水标识来控制是否需要记录相关日志。日志/流水记录的前提是要求有消息流水号,消息流水号是用来标识消息的唯一号,流水号由以下4部分组成:系统时间戳、系统标识号、业务代码和消息代码。而日志文件名及分类可通过配置文件来控制。
[0043]另外,所述消息中心服务端300可以为消息中心代理机,所述消息中心代理机用于实现所述消息的传递、存储和管理。
[0044]图5是本发明的一种基于消息的高可用云的实现方法的流程图。参见图5,所述方法包括:
[0045]消息中心客户端登录注册中心,通过所述注册中心返回的信息向所述消息中心服务端申请建立连接;
[0046]所述消息中心客户端与所述消息中心服务端建立连接,设置发送或接收队列;
[0047]所述消息中心客户端与所述消息中心服务端发送或接收消息;
[0048]所述发送或接收消息完成后,所述消息中心客户端与所述消息中心服务端关闭连接。
[0049]其中,所述注册中心为可线性扩展集群中的任意一个,每个所述注册中心相同的配置信息。所述消息中心服务端为可线性扩展所述消息中心服务端集群中的任意一个,每个所述消息中心服务端包含相同的配置信息或不同的配置信息,但对使用方透明。
[0050]在本发明的【具体实施方式】中,所述方法可以应用于三个方面:客户信息传递、员工渠道信息接收和代理保险传输更新的产品信息,客户信息组件需要把新增客户信息以消息形式,准实时更新到员工渠道;代理保险产品更新客户信息后以消息形式通知客户信息应用组件。
[0051]对于客户信息传递:假设消息中心分配给客户信息的消息路由值(CSID)号为CSID_CIF,员工渠道消息路由值(CSID)号为CSID_P2,代理保险消息路由值(CSID)号为CSID_DLBX,则整个信息传递过程为:
[0052]1、客户信息使用消息中心api调用注册(Login)接口,传入的CSID参数为CSID_P2 ;
[0053]2、任意一个注册中心都含全量消息中心配置信息;api含3个注册中心的URL ;注册中心根据Login接口的CSID的参数CSID_P2,查找配置信息,确定CSID_P2所在的消息中心服务群所在地址;
[0054]3、客户信息使用API Connect接口,请求与CSID_P2所在的消息中心服务群建立连接和会话;
[0055]4、成功与CSID_P2所在的消息中心服务器建立连接和会话;
[0056]5、客户信息使用API put接口,将要传输的新增客户信息以消息题内容参数的形式进行传输;
[0057]6、重复5过程,直至本次传输完本次需要传输的客户信息;
[0058]7、调用API CLOSE接口,关闭本次会话。对于员工渠道信息接收:与上述客户信息传递过程于类似,具体步骤如下:
[0059]1、员工渠道使用消息中心api调用Login接口,传入的CSID参数为CSID_P2 ;
[0060]2、注册中心根据Login接口的CSID的参数为CSID_P2,查找配置信息,确定CSID_P2所在的消息中心ap群所在地址;
[0061]3、员工渠道使用API Connect接口,请求与CSID_P2所在的消息中心服务群建立连接和会话;
[0062]4、成功与CSID_P2所在的消息中心服务群建立连接和会话;
[0063]5、员工渠道使用API的get接口,接收的消息体为新增客户信息的消息;
[0064]6、重复所述第5步骤(即上一步骤);
[0065]7、调用API CLOSE接口,关闭本次会话。
[0066]其中,接受方式也可使用自动侦听方式,即员工渠道调用一次LOGIN、CONNECT接口后,使用get自动侦听方式,在有消息传输到达时自动接受。
[0067]对于代理保险传输更新的产品信息的过程也与上述两种过程相类似,但在调用LOGIN接口时,传入CSID号为CSID_CIF,这样在注册中心返回CSID_CIF所在的消息中心服务群所在地址后,代理保险调用Connect接口与CSID_CIF所在的消息中心服务群直接建立会话,之后传输过程相同。
[0068]采用本发明的一种基于消息的高可用云的实现方法,通过高可用云模式,既实现了消息中心和注册中心的性能可随着服务群组的扩展,性能同步线性扩展,又完全屏蔽了内部高可用云实现细节,消息生产者和消息消费者完全透明使用服务,不用关心具体消息存储位置,从而使消息传输更加灵活,处理性能(TPS)能满足不断增长的业务需求。
[0069]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对【背景技术】做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0070]本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
【权利要求】
1.一种基于消息的高可用云系统,其特征在于,所述系统包括: 消息中心客户端,用于生产消息和消费消息; 消息中心服务端,用于传递、存储和管理所述消息,所述消息中心服务端包括:可线性扩展的消息中心高可用云,所述消息中心高可用云由多个消息中心服务群组成,每个所述消息中心服务群由多个消息中心代理机组成;以及 注册中心,用于将消息路由信息以缓存方式下载至所述消息中心客户端并持久化存储于数据文件中,以及管理所述消息中心服务端的连接信息,多个所述注册中心连接为一个注册中心集群,所述注册中心集群可线性扩展。
2.如权利要求1所述系统,其特征在于,所述消息中心客户端包括: 消息中心接口,用于登录所述注册中心和连接所述消息中心服务端; 应用组件模块,用于通过JAVA语言或C语言实现接收和发送所述消息的组件。
3.如权利要求1所述系统,其特征在于,所述注册中心包括: 用户信息模块,用于管理连接至所述注册中心的用户登录信息; 消息路由模块,用于管理外部系统使用所述消息中心的标识号,并对所述消息路由信息持久化存储; 服务信息模块,用于管理所述注册中心端的队列信息; 授权信息模块,用于管理所述用户连接到所述注册中心上的访问控制权限信息。
4.如权利要求1所述系统,其特征在于,所述消息中心服务端包括: 消息匹配模块,用于将所述消息的生产者和消费者与所述队列信息相匹配; 消息处理模块,用于对所述消息进行格式转换和收发控制; 队列管理模块,用于为应用程序提供对队列对象的访问管理; 流量控制模块,用于对所述消息进行多目的地均衡分发; 安全模块,用于消息传输、用户数据安全和资源管理安全; 日志模块,用于记录所述消息的日志及流水。
5.如权利要求4所述系统,其特征在于,所述消息中心服务端的连接信息包括:队列信息、交换信息、用户信息和访问权限信息。
6.如权利要求4所述系统,其特征在于,所述消息中心服务端具有消息中心代理机,所述消息中心代理机用于实现所述消息的传递、存储和管理。
7.一种基于消息的高可用云的实现方法,其特征在于,所述方法包括: 消息中心客户端登录注册中心,通过所述注册中心返回的信息向所述消息中心服务端申请建立连接; 所述消息中心客户端与所述消息中心服务端建立连接会话,设置发送或接收队列; 所述消息中心客户端与所述消息中心服务端发送或接收消息; 所述发送或接收消息完成后,所述消息中心客户端与所述消息中心服务端关闭连接。
8.如权利要求7所述方法,其特征在于,所述注册中心为可线性扩展的所述注册中心集群中的任意一个,每个所述注册中心包含相同的配置信息。
9.如权利要求7所述方法,其特征在于,所述消息中心服务端为可线性扩展所述消息中心服务端集群中的任意一个,每个所述消息中心服务端包含对其他所述消息中心服务端透明的配置信息。
10.如权利要求7所述方法,其特征在于,所述消息中心客户端登录注册中心,所述通过所述注册中心返回的信息向所述消息中心服务端申请建立连接,包括: 所述消息中心客户端使用所述消息中心接口登录所述注册中心并传入CSID参数; 所述注册中心根据所述CSID参数查找配置信息,确定所述CSID参数所在消息中心集群的地址。
【文档编号】H04L29/08GK104378415SQ201410593347
【公开日】2015年2月25日 申请日期:2014年10月29日 优先权日:2014年10月29日
【发明者】杜永健, 杨志勇, 左永平, 任贺, 王国悦 申请人:中国建设银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1