一种分布式网络架构的制作方法

文档序号:7781582阅读:185来源:国知局
一种分布式网络架构的制作方法
【专利摘要】本发明提供一种分布式网络架构,该分布式网络架构包括:云资源池和至少一个用户组,其中,所述用户组中包括:中心和至少一个客户端,各所述客户端与所述中心连接,各所述客户端用于运行预设的应用;所述云资源池中包括:前端代理和至少一个服务库,各所述服务库与所述前端代理连接,所述前端代理和各所述用户组的中心连接,各所述服务库用于提供与各所述用户组中的所述客户端上运行的预设应用对应的应用服务,各所述服务库通过所述前端代理与各所述用户组进行通信。本发明所提供的分布式网络架构能够简化开发者在该分布式网络架构开发应用时的开发复杂度。
【专利说明】一种分布式网络架构
【技术领域】
[0001]本发明涉及网络【技术领域】,尤其涉及一种分布式网络架构。
【背景技术】
[0002]在现有的分布式网络架构中会包括有大量的客户端,通常,这些海量的客户端分布在不同的局域网中,并连接上位于公网的云端,以能够和云端进行数据通信。基于上述架构,开发者可以在云端构建多种业务服务,以能够为不同的客户端提供不同的应用服务。
[0003]然而,基于现有分布式网络架构的开发复杂度较高,开发者会面临着跨编程语言通信、局域网内外映射部署、云端和客户端之间通信的消息格式规范、多级部署中的发布订阅机制以及客户端业务库的动态管理等问题。目前,尚没有一种分布式网络架构能够便于开发者解决上述问题。
[0004]因此,需要提供一种新的分布式网络架构,以简化开发者在该分布式网络架构开发应用时的开发复杂度。

【发明内容】

[0005]有鉴于此,本发明的目的在于提供一种分布式网络架构,以能够简化开发者在该分布式网络架构开发应用时的开发复杂度。
[0006]为实现上述目的,本发明提供一种分布式网络架构,所述分布式网络架构包括云资源池和至少一个用户组;
[0007]所述用户组中包括:中心和至少一个客户端,各所述客户端与所述中心连接,各所述客户端用于运行预设的应用;
[0008]所述云资源池中包括:前端代理和至少一个服务库,各所述服务库与所述前端代理连接,所述前端代理和各所述用户组的中心连接,各所述服务库用于提供与各所述用户组中的所述客户端上运行的预设应用对应的应用服务,各所述服务库通过所述前端代理与各所述用户组进行通信。
[0009]优选地,所述服务库与所述用户组一一对应。
[0010]优选地,当所述服务库的进程和所述客户端的进程进行通信,且所述服务库的进程和所述客户端的进程基于不同的编程语言时,所述服务库和所述客户端中的发送方对通信消息按预设规则进行序列化,所述服务库和所述客户端中的接收方对序列化后的所述通信消息按预设规则进行反序列化。
[0011]优选地,所述服务库的进程为基于C++和Java中的一者的进程,所述客户端的进程为基于C++和Java中的另一者的进程。
[0012]优选地,所述用户组中设置有防火墙,所述防火墙中配置有所述中心与所述云资源池的通信连接,以使所述用户组中的各所述客户端能够通过该通信连接与所述云资源池进行通信。
[0013]优选地,各所述用户组中的所述中心包括第一级中心和次级中心,第一级中心与所述前端代理连接,所述次级中心通过所述第一级中心与所述前端代理连接。
[0014]优选地,各所述第一级中心和所述次级中心预先配置有中心ID,若所述客户端中存储有客户端ID,则所述客户端在启动时将客户端ID发送给与该客户端连接的中心;若所述客户端中未存储有客户端ID,则所述客户端在启动时,由与该客户端连接的中心为该客户端分配客户端ID。
[0015]优选地,当所述客户端与所述云资源池进行通信时,所述通信消息中包括所述第一级中心和/或各所述次级中心的中心ID和所述客户端的客户端ID。
[0016]优选地,所述服务库中包括调度单元和至少一个业务进程,所述业务进程用于向所述用户组中的所述客户端提供对应的应用服务,所述调度单元用于协调所述业务进程与所述前端代理之间的通信。
[0017]优选地,所述云资源池中还包括运维管理单元,所述运维管理单元用于维护管理各所述服务库中的所述业务进程。
[0018]优选地,所述客户端运行的预设应用为发布订阅业务,且所述客户端在启动时向所述中心注册订阅主题,所述中心通过所述前端代理向所述运维管理单元注册所述订阅主题;
[0019]当对应的提供发布订阅服务的业务进程发布所述订阅主题的内容时,所述运维管理单元将所述订阅主题的内容通过所述前端代理发送至所述中心,所述中心将所述订阅主题的内容发送至所述客户端。
[0020]优选地,所述客户端运行的预设应用的业务库独立于所述预设应用的主程序代码,且所述客户端在启动时向所述中心注册所述业务库标识,所述中心通过所述前端代理向所述运维管理单元注册所述业务库标识;
[0021]当对应的业务进程发布新版本的所述业务库时,所述运维管理单元将所述新版本的业务库通过所述前端代理发送至所述中心,所述中心将所述新版本的业务库发送至所述客户端,所述客户端卸载原所述业务库并加载所述新版本的业务库。
[0022]优选地,所述云资源池中还包括查询单元,用于查询所述服务库中为所述客户端运行的预设应用所提供的应用服务的状态。
[0023]可以看出,本发明通过将客户端构建为多个用户组,并通过中心协调用户组与云资源池的通信,同时,在云资源池中构建多个服务库,并通过前端代理协调服务库与云资源池的通信,能够简化开发者在该分布式网络架构开发应用时的开发复杂度。基于本发明所提供的分布式网络架构,能够便捷地解决跨编程语言通信、局域网内外映射部署、用户组多级部署时的消息格式规范、以及发布订阅机制以及客户端业务库的动态更新等问题。
【专利附图】

【附图说明】
[0024]附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的【具体实施方式】一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0025]图1为本发明所提供的分布式网络架构示例图;
[0026]图2为本发明所提供的用户组中防火墙连接配置示例图;
[0027]图3为本发明所提供的用户组中网络分级部署示例图。【具体实施方式】
[0028]以下结合附图对本发明的【具体实施方式】进行详细说明。应当理解的是,此处所描述的【具体实施方式】仅用于说明和解释本发明,并不用于限制本发明。
[0029]本发明提供一种分布式网络架构,该分布式网络架构可以包括云资源池和至少一个用户组。
[0030]具体地,每个用户组中可以包括中心和至少一个客户端,各客户端能够运行预设的应用以向用户提供对应的服务,并且,在每个用户组中,各客户端与中心相连,以使得各客户端能够通过中心与云资源池进行通信;云资源池中可以包括前端代理和至少一个服务库,其中,各服务库能够用于向各用户组中的客户端上运行的预设应用提供对应的应用服务,并且,各服务库和前端代理连接,而前端代理与各用户组中的中心连接,以使得各服务库能够通过前端代理和各用户组进行通信。
[0031]在上述分布式网络架构中,用户组可以形成为一个局域网,S卩,可以设定一个局域网内的客户端属于一个用户组,并且,各用户组可以分布在不同的位置。用户组中的中心能够维护管理用户组内的客户端与云资源池之间的数据通信,云资源池中的前端代理能够维护管理各服务库与各用户组之间的数据通信,同时,前端代理与各用户组之间的中心连接。这样,可以使得各用户组中的客户端和各服务库能够通过前端代理和中心稳定地进行数据通信。
[0032]更进一步地,在上述分布式网络架构中,各服务库和各用户组可以一一对应,即,一个服务库可以为与其对应的用户组中的客户端提供服务。这样,能够便于开发者在云资源池中有针对性地构建与不同用户组对应的服务库,更加便于为客户端运行的应用提供对应的应用服务。
[0033]更进一步地,在上述分布式网络架构中,当服务库中的某一进程和客户端的某一进程进行通信,并且,该两个进程基于不同的编程语言时,服务库和客户端中的发送方对通信消息按预设规则进行序列化,服务库和客户端中的接收方对序列化后的通信消息按预设规则进行反序列化。即,当服务库中的进程和客户端中不同编程语言的进程之间进行通信时,可以在发送方对通信消息进行序列化,在接收方对序列化后的通信消息进行反序列化,以此实现服务库和客户端之间的跨编程语言进程的通信。具体地,可以预先在上述网络架构的客户端和服务库中配置接口文件,并在所配置的接口文件中描述序列化和反序列化的规则,以使得在客户端和服务库能够完成对通信消息的序列化或反序列化。
[0034]现有的提供跨编程语言通信功能的产品,机制往往较为复杂,可能会影响应用的运行效率。由于网络架构中的进程大多是基于C++和Java开发的,因此,优选地,本发明可以针对基于C++和Java之间的进程的通信消息进行序列化和反序列化。即,上述方法中,对服务库中的某一进程和客户端的某一进程的通信消息进行序列化和反序列化时,该服务库中的进程的编程语言可以为C++和Java中的一者,该客户端的进程的编程语言为C++和Java中的另一者。
[0035]其中,序列化和反序列化的规则可以根据需要进行设定,例如,可以对基于C++和Java的进程的通信消息中的整形、字符串、可重复字段和类型嵌套进行序列化和反序列化,其中,对于整形,可以采用可变长字节编码,并用每个字节的第一位表示该字节是否为最后一个字节;对于字符串,可以用前两个字节标识长度,用后续字节存储字符串内容,并且可以通过snappy压缩算法进行压缩处理以减少占用的存储空间;对于可重复字段,可以根据接口文件中已描述的该重复字段的基本类型,利用前两个字节标识元素的个数,用后续字节按照整形和字符串的规则来存储;对于类型嵌套,可以针对每个元素生成一个序列式字节,并用该字节的第一位表示是否还有更深层次的嵌套,用该字节的第二位和第三位表示当前层的类型,在序列化或者反序列化时,可以根据接口文件中的描述逐字段生成或解析即可。可以理解的是,上述序列化和反序列化的规则仅为本发明所提供的示例,在实际应用中,序列化和反序列化的规则可以根据需要进行设定,本发明对此不作限制。
[0036]更进一步地,如图2所示,在用户组中可以设置有防火墙,且防火墙中可以配置有该用户组的中心与云资源池的通信连接,以使得该用户组中的各客户端能够通过上述中心与云资源池的通信连接实现跨防火墙与云资源池进行通信。由于用户组可以形成为一个局域网,而当局域网中设置有防火墙时,客户端需要跨防火墙与外部进行通信。现有的方法中,当客户端需要访问外网时,需要在防火墙中配置端口映射或者IP转换,而当外网需要访问局域网中的客户端时,也需要在防火墙中配置相应的端口映射或者IP转换。因此,现有的方法中,需要在防火墙中为局域网中的每个客户端都配置与外网的连接,较为繁琐。而上述本发明所提供的分布式网络架构中,用户组中的客户端可以与中心相连,而在防火墙中可以配置中心与云资源池的通信连接,使得用户组中的各客户端可以通过该中心与云资源池的通信连接实现与云资源池的跨防火墙通信,与现有技术相比,减少了配置复杂度。
[0037]更进一步地,在本发明所提供的分布式网络架构中,用户组中的客户端与中心可以形成为多级部署,即,可以如图3所示,中心可以包括第一级中心和次级中心,其中,第一级中心与云资源池中的前端代理连接,而各次级中心则通过第一级中心与前端代理连接。其中,次级中心可以为多个,并且次级中心可以形成为多级,即,一个次级中心可以通过另一次级中心与第一级中心连接,而各客户端可以直接与第一级中心连接,或者,可以与各次级中心连接。这样,在用户组中形成多级的网络部署,能够更加便于管理客户端上运行的应用。
[0038]更进一步地,为了能够在上述用户组中的多级部署情况下实现客户端与云资源池的数据通信,可以为各中心和客户端配置对应的ID。具体地,可以预先为第一级中心和各次级中心配置对应的中心ID,对于客户端,若客户端中已存储有客户端ID,则该客户端在启动时将客户端ID发送给与其连接的中心,使得与其连接的中心能够获知与该客户端对应的链接端口 ;若客户端中未存储有客户端ID,则客户端在启动时,向与其连接的中心发送ID分配请求,并由与其连接的中心为其分配客户端ID。
[0039]本发明中的所述中心,可以形成为软件,也可以形成为硬件。当中心形成为软件时,可以在安装该软件时分配中心ID,当中心形成为硬件时,可以在生产该硬件时植入中心ID。在通过中心为客户端分配客户端ID时,可以在中心内预设一个基数,并以该基数为基础向客户端分配客户端ID,并且,每分配一个客户端ID后,该基数自加1,以使得为各客户端分配的ID都是唯一的。通过上述方法,能够使得用户组中的网络形成为多级部署时,各中心和客户端能够具有唯一的身份标识。
[0040]更进一步地,在上述配置的基础上,用户组中的各客户端与业务库进行通信时,通信消息中可以包括有第一级中心和/或各次级中心的中心ID以及客户端的客户端ID。具体地,本发明中的客户端在分配有客户端ID后,可以向云资源池中的前端代理发送一个连接消息,该连接消息中包括有客户端ID,并且,次级中心或者第一级中心在转发该连接消息时可以在消息中附上对应的中心ID,这样,前端代理在收到该连接消息后,便能通过各中心ID和客户端ID获知到达该客户端的完整通信链路。之后,在用户组中的各客户端与云资源池中的服务库进行通信时,通信消息中可以包括有第一级中心和/或各次级中心的中心ID以及客户端的客户端ID。例如,当前端代理收到业务库发送给客户端的消息时,可以根据消息中的第一级中心的中心ID,将消息发送给对应的第一级中心,之后第一级中心可以根据消息中的次级ID将消息发送给对应次级中心,再由次级中心根据客户端ID将消息发送给对应的客户端。可见,通过上述方式,能够在用户组中网络多级部署的情况下,准确实现客户端与云资源池中的数据通信。
[0041]本发明中的客户端与云资源池进行数据通信时的消息格式可以根据需要进行设定,优选地,可以采用下述表1的消息格式。
[0042]表1消息格式表
[0043]
【权利要求】
1.一种分布式网络架构,其特征在于,所述分布式网络架构包括云资源池和至少一个用户组; 所述用户组中包括:中心和至少一个客户端,各所述客户端与所述中心连接,各所述客户端用于运行预设的应用; 所述云资源池中包括:前端代理和至少一个服务库,各所述服务库与所述前端代理连接,所述前端代理和各所述用户组的中心连接,各所述服务库用于提供与各所述用户组中的所述客户端上运行的预设应用对应的应用服务,各所述服务库通过所述前端代理与各所述用户组进行通信。
2.根据权利要求1所述的分布式网络架构,其特征在于,所述服务库与所述用户组--对应。
3.根据权利要求1所述的分布式网络架构,其特征在于,当所述服务库的进程和所述客户端的进程进行通信,且所述服务库的进程和所述客户端的进程基于不同的编程语言时,所述服务库和所述客户端中的发送方对通信消息按预设规则进行序列化,所述服务库和所述客户端中的接收方对序列化后的所述通信消息按预设规则进行反序列化。
4.根据权利要求3所述的分布式网络架构,其特征在于,所述服务库的进程为基于C++和Java中的一者的进程,所述客户端的进程为基于C++和Java中的另一者的进程。
5.根据权利要求1所述的分布式网络架构,其特征在于,所述用户组中设置有防火墙,所述防火墙中配置有所述中心与所述云资源池的通信连接,以使所述用户组中的各所述客户端能够通过该通信连接与所述云资源池进行通信。
6.根据权利要求1所述的分布式网络架构,其特征在于,各所述用户组中的所述中心包括第一级中心和次级中心,`第一级中心与所述前端代理连接,所述次级中心通过所述第一级中心与所述前端代理连接。
7.根据权利要求6所述的分布式网络架构,其特征在于,各所述第一级中心和所述次级中心预先配置有中心ID,若所述客户端中存储有客户端ID,则所述客户端在启动时将客户端ID发送给与该客户端连接的中心;若所述客户端中未存储有客户端ID,则所述客户端在启动时,由与该客户端连接的中心为该客户端分配客户端ID。
8.根据权利要求7所述的分布式网络架构,其特征在于,当所述客户端与所述云资源池进行通信时,所述通信消息中包括所述第一级中心和/或各所述次级中心的中心ID和所述客户端的客户端ID。
9.根据权利要求1至8中任意一项所述的分布式网络架构,其特征在于,所述服务库中包括调度单元和至少一个业务进程,所述业务进程用于向所述用户组中的所述客户端提供对应的应用服务,所述调度单元用于协调所述业务进程与所述前端代理之间的通信。
10.根据权利要求9所述的分布式网络架构,其特征在于,所述云资源池中还包括运维管理单元,所述运维管理单元用于维护管理各所述服务库中的所述业务进程。
11.根据权利要求10所述的分布式网络架构,其特征在于,所述客户端运行的预设应用为发布订阅业务,且所述客户端在启动时向所述中心注册订阅主题,所述中心通过所述前端代理向所述运维管理单元注册所述订阅主题; 当对应的提供发布订阅服务的业务进程发布所述订阅主题的内容时,所述运维管理单元将所述订阅主题的内容通过所述前端代理发送至所述中心,所述中心将所述订阅主题的内容发送至所述客户端。
12.根据权利要求10所述的分布式网络架构,其特征在于,所述客户端运行的预设应用的业务库独立于所述预设应用的主程序代码,且所述客户端在启动时向所述中心注册所述业务库标识,所述中心通过所述前端代理向所述运维管理单元注册所述业务库标识; 当对应的业务进程发布新版本的所述业务库时,所述运维管理单元将所述新版本的业务库通过所述前端代理发送至所述中心,所述中心将所述新版本的业务库发送至所述客户端,所述客户端卸载原所述业务库并加载所述新版本的业务库。
13.根据权利要求1至8中任意一项所述的分布式网络架构,其特征在于,所述云资源池中还包括查询单元, 用于查询所述服务库中为所述客户端运行的预设应用所提供的应用服务的状态。
【文档编号】H04L29/08GK103685538SQ201310714404
【公开日】2014年3月26日 申请日期:2013年12月20日 优先权日:2013年12月20日
【发明者】张权, 刘恒 申请人:中电长城网际系统应用有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1