一种灵活可配置的流式信息处理方法及系统技术方案

技术编号:34293283 阅读:80 留言:0更新日期:2022-07-27 10:01
本发明专利技术公开了一种灵活可配置的流式信息处理方法及系统,包括以下步骤:将存储在服务器上的离线数据通过HTTP请求批量发送至消息接收模块,离线数据转化为待处理的流式信息存储在消息接收模块中;消息接收模块将HTTP请求传输给路由选择模块,路由选择模块通过HTTP请求对应的URI来确定路由配置;路由选择模块将确定的路由配置传输消息处理模块,消息处理模块按照路由配置中的处理策略对待处理的流式信息进行转换处理,如转换成功,则发送后端服务,如转换不成功,则丢弃消息。本发明专利技术能够灵活动态加载配置,执行定制的处理逻辑,避免停服更新,减少操作人员负担。减少操作人员负担。减少操作人员负担。

【技术实现步骤摘要】
JSON 文本格式是使用最广泛的通用配置文本描述形式之一,采用这种格式描述处理过程易于理解能够降低开发人员的上手难度;其中 Lua 为轻量级编程语言,开发人员也可以快速上手并编写消息处理逻辑;两者进行结合让定制开发工作更灵活便捷,在应对多变的需求时更敏捷;采用JSON 文本和 Lua 脚本组合,具体包括:以JSON为配置描述形式,将消息处理模块预定义的消息处理规则进行组合,消息处理规则包括:消息分割规则、反序列化规则、脚本执行器规则和消息输出规则,对于消息处理模块没有预定义的消息处理规则使用Lua 脚本编程实现;3.2)根据步骤3.1)定义的消息处理规则对待处理的流式信息由OpenResty内置的LuaJIT模块执行消息处理计算;3.3)将处理计算完成的消息序列化成配置中指定的目标格式,完成转换处理。
[0008]步骤4)中,路由选择模块每隔 1~50 秒检查配置中心服务的路由配置并同步,具体包括:4.1)路由选择模块在配置中心服务中查询配置文件存储的位置;4.2)路由选择模块读取并解析每条路由配置;4.3)多条路由配置以键值对的形式保存,而路由选择模块将路由配置构建成前缀树数据结构保存在内存中,每条路由配置的叶子结点指向唯一的消息处理策略的别名,每条路由配置带有哈希摘要,方便进行版本化管理;4.4)将解析到的路由配置计算哈希摘要,与路由选择模块内存中路由配置的哈希摘要进行对比,如果不同,则表示内存中的路由配置已过期,可以将解析到的路由配置更新到内存中,接着重启对应的工作线程使新的路由配置生效。
[0009]步骤5)中,消息处理模块每隔1~50秒检查配置中心服务的处理策略并同步具体包括:5.1)消息处理模块在配置中心服务中查询配置文件存储的位置; 5.2)根据路由选择模块构建的数状数据结构中记录的消息处理策略别名及其哈希摘要信息,标记为所需的处理策略; 5.3)消息处理模块查询并读取所需的处理策略,再将处理策略进行特定方式解析; 5.4)将解析到的处理策略计算哈希摘要,与消息处理模块内存中处理策略的哈希摘要进行对比,如果不同,则将解析到的处理策略更新到内存中,重启对应的工作线程使新配置的处理策略生效。
[0010]一种灵活可配置的流式信息处理系统,包括:消息接收模块,消息接收模块接收来自服务器上的离线数据;配置中心服务,基于 Key/Value (键值)存储服务的动态配置存储分发服务;路由选择模块,路由选择模块根据路由配置信息为接收到的待处理的流式信息选择不同的路由处理逻辑;消息处理模块,消息处理模块从配置中心服务订阅路由配置信息,将待处理的流式信息转换处理。
[0011]与现有技术相比,本专利技术具有如下优点:
一、本专利技术提供的灵活配置方法,可以避免停服更新,保持整体系统高可用;二、本专利技术将通过配置中心下发配置文件,方便集中管理配置定制逻辑,降低多实例部署的运维难度,降低运维人员负担;三、本专利技术使用 JSON 文本和 Lua 脚本组合来描述消息处理流程,让定制开发工作更灵活便捷,在应对多变的需求时更敏捷;四、本专利技术将消息处理流程直接转化为消息处理模块内置 Lua 虚拟机可执行的字节码,可以替代大部分拥有相同功能的后端服务,可以提高开发效率、缩短上线周期、降低运维负担。
附图说明
[0012]图 1 为本专利技术流式信息处理系统的结构示意图。
[0013]图 2 为本专利技术消息处理模块与配置中心同步配置的流程图。
[0014]图 3 为本专利技术使用 JSON 文本和 Lua 脚本组合来描述消息处理流程的流程图。
具体实施方式
[0015]实施例 1如图 1所示,本实施例包括消息发送方、消息接收模块、路由选择模块、消息处理模块、配置中心服务和其他后端服务。
[0016]消息接收模块为高性能网关;消息处理模块为基于 OpenResty 项目开发的日志消息处理服务;配置中心是基于 Key/Value 存储服务实现的动态配置存储分发服务。
[0017]消息发送方将原始日志消息通过 HTTP 请求批量发送至消息接收模块,此处每条日志消息可以是 NGINX 访问日志的标准格式或定制格式也可以是压缩空格后的单行 JSON 形式,HTTP 请求的消息体中使用换行符分隔多条日志消息,批量请求的日志条数与单行日志的平均大小相关,一般要求单次请求的消息总大小不超过 5MB 。
[0018]路由选择模块根据现有路由配置将 HTTP 请求中的 URI 匹配到对应的消息处理模块,其中路由选择模块会与配置中心服务定期同步路由配置,只需要在配置中心服务修改路由配置,即可让所有的程序实例中的路由选择模块接收到改动后的路由配置;路由选择模块与配置中心服务的同步时间间隔需要取合适的值,间隔时间过短会徒增服务端压力消耗机房带宽,间隔时间过长会导致配置生效不及时,影响发布效率。可以根据实际业务需求结合经验判断选定了合理的同步时间间隔。
[0019]消息处理模块根据现有处理策略对接收到的日志消息进行切割、反序列化解析、定制格式转换、按条件过滤以及按规则序列化为后端服务所需的消息格式。其中消息处理模块也会与配置中心服务定期同步处理策略,处理策略由 JSON 文本和 Lua 脚本组合的特定领域语言(Domain

specific language)进行描述,通过 JSON 文本将预定义的处理规则进行排列组合,将拓展的处理规则使用 Lua 脚本编程实现,通过 JSON 整合调用。
[0020]消息处理模块将处理完成的流式消息传递其他后端服务,此处后端服务一般是分布式消息中间件集群。
[0021]实施例2实施例 1 的使用方法,包括以下步骤:
(1)路由选择模块每隔 15 秒检查配置中心服务的路由配置并同步,消息处理模块每隔 15 秒检查配置中心的处理策略并同步;(2)消息发送方产生待处理消息并通过 HTTP 请求批量发送至消息接收模块;(3)路由选择模块根据 HTTP 请求中的 URI 选择对应的路由,将消息接收模块发来的待处理消息传递给特定的消息处理模块;(4)消息处理模块接收到待处理消息,进而触发执行消息处理策略;(5)消息处理完成后传递给其他后端服务;如图 2所示,检查配置中心服务的路由配置信息并同步的包括以下步骤:(1.1)当前信息处理系统查询到当前服务对应的配置文件存储位置;(1.2)路由选择模块解析每条路由配置;(1.3)如有路由配置与当前消息处理模块内存中保存的状态不同,则同步配置中心服务的配置,并重启对应的工作线程;(1.4)逐个解析路由配置中的消息分割规则、反序列化规则、脚本执行器规则和消息输出规则;步骤(1.2)中,路由配置由 JSON 配置或外置 Lua 脚本组成,其中 JSON 数据结构与 Lua Table 数据类型可以相互转换。
[0022]如图 3所示,将步骤(1.4)的路由配置与当前消息处理模块内存中的状态相比较,可以是对配置项取哈希,对比哈希时候不同,则认为配置已变更。
[0023]步骤(4)中被请求事件触发执行路由中配置的处理流程具体本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种灵活可配置的流式信息处理方法,其特征在于,包括以下步骤:1) 将存储在服务器上的离线数据通过HTTP 请求批量发送至消息接收模块,离线数据转化为待处理的流式信息存储在消息接收模块中;2)消息接收模块将HTTP 请求传输给路由选择模块,路由选择模块通过HTTP 请求对应的URI来确定路由配置;3)路由选择模块将确定的路由配置传输消息处理模块,消息处理模块按照路由配置中的处理策略对待处理的流式信息进行转换处理,如转换成功,则发送后端服务,如转换不成功,则丢弃消息。2.根据权利要求1所述的灵活可配置的流式信息处理方法,其特征在于,还包括:4)路由选择模块每隔1~50秒检查配置中心服务的路由配置并同步;5)消息处理模块每隔1~50秒检查配置中心服务的处理策略并同步。3.根据权利要求1所述的灵活可配置的流式信息处理方法,其特征在于,步骤2)中,通过HTTP 请求对应的URI来确定路由配置,具体包括:根据最长前缀树匹配URI来确定路由配置。4.根据权利要求1所述的灵活可配置的流式信息处理方法,其特征在于,步骤3)中,消息处理模块按照路由配置中的处理策略对待处理的流式信息进行转换处理,具体包括:3.1)消息处理模块将路由配置的特定领域语言解释成可执行的处理策略;3.2)根据步骤3.1)定义的消息处理规则对待处理的流式信息由 OpenResty内置的LuaJIT模块执行消息处理计算;3.3)将处理计算完成的消息序列化成配置中指定的格式,完成转换处理。5.根据权利要求4所述的灵活可配置的流式信息处理方法,其特征在于,步骤3.1)中,特定领域语言采用JSON 文本和 Lua 脚本组合,具体包括:以JSON为配置描述形式,将消息处理模块预定义的消息处理规则进行组合,消息处理规则包括:消息分割规则、反序列化规则、脚本执行器规则和消息输出规则,对于消息处理模块没有预定义的消息处理规则使...

【专利技术属性】
技术研发人员:李文宇
申请(专利权)人:杭州又拍云科技有限公司
类型:发明
国别省市:

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

1