CN113315750B - 一种Kafka消息发布方法、装置及存储介质 - Google Patents
一种Kafka消息发布方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113315750B CN113315750B CN202110403396.4A CN202110403396A CN113315750B CN 113315750 B CN113315750 B CN 113315750B CN 202110403396 A CN202110403396 A CN 202110403396A CN 113315750 B CN113315750 B CN 113315750B
- Authority
- CN
- China
- Prior art keywords
- message
- theme
- kafka
- verification
- factory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种Kafka消息发布方法、装置及存储介质,用于解决不符合规范的数据进入Kafka集群技术问题。本公开技术方案对Kafka的主题配置参数进行扩展,对于存在规范性检测需求的主题消息提供校验规则;替换原有逐条消息构造方法为消息工厂构造方式,根据传入的集群及主题配置参数,在消息创建按照消息校验规范生成消息,保证消息规范性和准确性;通过Kafka集群消息拦截器过滤掉不符合规范的消息,从而保证写入主题的消息都是符合规范的消息。本公开技术方案主要从服务端检测和控制写入主题的消息的规范性,能够高效地实现防止不符合规范的消息发布到Kafka集群中的风险。
Description
技术领域
本公开涉及大数据技术领域,尤其涉及一种Kafka消息发布方法、装置及存储介质。
背景技术
Apache Kafka是分布式消息中间件的一种,支持分区partition、多副本(replica),支持基于ZooKeeper协调的分布式消息发布与订阅,可运行在一台或者多台服务器上,通过主题Topic对存储的数据进行分类,每条记录中包含一个关键字key,一个与关键字对应的键值value和一个时间戳timestamp。
ZooKeeper是一个分布式的应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
随着Kafka应用的扩展,Kafka逐渐成为数据处理中提供数据缓冲或暂存的一环,在很多应用场景中,要求其数据的规范与准确,而现有组件能力尚无法达到此要求,其具体缺陷包括:
(1)消息检测完全依赖生产者自定义设置;
(2)无法保证主题中的数据规范和准确;
(3)对后续数据处理带来严重性能影响。
Kafka作为消息系统,其消息存储单元(主题)属性中并不包含数据规范信息,且消息规范性检测完全依赖生产者自定义设置,因此导致不同生产者可发送差异性规格的消息至同一主题中。
为了规范Kafka分布式消息发布订阅,可外部引用Confluent Schema Registry组件,Confluent Schema Registry组件是一种开源的schema注册表的实现。所有写入数据需要用到的schema保存到注册表里,生产者在向Topic写入消息的时候引用schema的ID对数据进行序列化,消费者使用schema的ID从注册表里拉取schema来反序列化消息,序列化器和反序列化器分别负责处理schema的注册和拉取,其中schema注册表并不属于Kafka。
编写消息的producers(生产者)和读取消息的consumers(消费者)必须使用相同的模式注册Schema Registry组件来获取schema和schema id之间的映射关系。
生产者发送新的schema给Schema Registry,然后注册schema到subject(范围,模式注册中心定义了一个范围,schema可以在这个范围内变化,subject的名字根据subject的命名策略决定的,默认是根据主题名称派生subject名字),返回一个schema id给生产者,生产者缓存这个映射关系(schema和schema id,方便消息写入),只有第一次模式写入时候才会和Schema Registry交互。
消费者读取该数据时,它会看到Avro schema id,并向Schema Registry发送模式请求,Schema Registry检索与schema id关联的模式,并将该schema返回给消费者,消费者缓存schema和schema id之间的映射,以便后续消息读取,因此它只在读取第一个模式id时联系Schema Registry交互。
引入新的组件,每个客户端都需要用户自己去配置,生产者客户端生产数据到主题以及消费者的客户端消费主题里面的数据都需要强依赖Schema Registry服务器,如果服务器异常无法保证数据的准确性。
上述基于客户端保证消息规范的方式,无法从根本上解决不符合规范数据进入系统的风险,即需要在生产和消费两端进行消息处理。另外,如果模式注册组件异常,带来的服务整体不可用的情况,增加了系统故障发生的几率。
发明内容
有鉴于此,本公开提供了一种Kafka消息发布方法、装置及存储介质,用于解决不符合规范的数据进入Kafka集群技术问题。
基于本公开实施例,图1为本公开提供的一种Kafka消息发布方法的步骤流程图,该方法应用于Kafka集群,涉及到Kafka集群的消息生产者(Kafka Producer)、Kafka代理(Kafka Broker)、负责Kafka集群中生产者与Kafka代理之间协调的分布式应用协调组件,Kafka代理包括用于对消息进行规范性校验的Kafka集群消息拦截器。该方法包括:
步骤S101.Kafka集群消息拦截器接收到待写入对应Kafka主题的消息时,判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成;
步骤S102.当判断结果为是时,放行所述消息以使所述消息被写入对应的Kafka主题;
步骤S103.当判断结果为否时,所述Kafka集群消息拦截器基于预设的所述Kafka主题的消息校验规范对所述消息进行校验,校验通过时放行所述消息以使所述消息被写入对应的Kafka主题,校验失败时拒绝写入。
进一步地,所述由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的消息中被注入免检标签;所述Kafka集群消息拦截器根据消息中是否携带免检标签来判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成。
进一步地,所述方法还包括:在创建所述Kafka主题之前,在分布式应用协调组件或数据库中写入所述Kafka主题的主题配置参数;所述分布式应用协调组件用于Kafka集群中生产者与Kafka代理之间的应用协调;所述主题配置参数包括主题扩展配置参数,所述主题扩展配置参数中包括所述Kafka主题的消息校验规范;
所述Kafka集群消息拦截器从所述分布式应用协调组件或数据库中获取所述消息校验规范。
进一步地,所述主题扩展配置参数中还包括消息校验标志,所述消息校验标志用于指示是否需要针对该主题开启服务端消息规范性校验;当所述消息校验标志位被置位时,所述消息工厂类按所述主题扩展配置参数中的消息校验规范生成所述消息并向所述消息中注入免检标签,否则按普通方式生成所述消息。
进一步地,所述分布式应用协调组件为Zookeeper。
图2为本公开提供的一种Kafka消息发布装置的结构示意图,该装置200中的各功能模块可以采用软件、硬件或软硬件相结合的方式实现。当多个硬件设备共同实施本公开的技术方案时,由于各硬件设备之间相互协作的目的是共同实现本发明目的,一方的动作和处理结果确定了另一方的动作执行的时机及可能获得的结果,因此,可视为各执行主体之间具有相互协作关系,各执行主体之间具有相互指挥和控制关系。该装置200包括:
拦截模块201,用于接收待写入对应Kafka主题的消息,判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成;
校验模块202,用于在判定所述消息不是由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的情况下,基于预设的所述Kafka主题的消息校验规范对所述消息进行校验;
处理模块203,用于在判定所述消息是由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的情况下,或在对所述消息校验通过的情况下,放行所述消息以使所述消息被写入对应的Kafka主题;以及在对所述消息校验失败时拒绝写入。
进一步地,所述由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的消息中被注入免检标签;所述拦截模块201根据消息中是否携带免检标签来判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成。
进一步地,所述装置200还包括配置写入模块,用于在创建所述Kafka主题之前,向分布式应用协调组件或数据库中写入所述Kafka主题的主题配置参数;所述分布式应用协调组件用于Kafka集群中生产者与Kafka代理之间的应用协调;所述主题配置参数包括主题扩展配置参数,所述主题扩展配置参数中包括所述Kafka主题的消息校验规范;
所述拦截模块201从所述分布式应用协调组件或数据库中获取所述消息校验规范。
进一步地,所述装置还包括消息工厂模块,用于根据所述主题配置参数生成消息;所述主题扩展配置参数中还包括消息校验标志,所述消息校验标志用于指示是否需要针对该主题开启服务端消息规范性校验;当所述消息校验标志位被置位时,所述消息工厂模块按所述主题扩展配置参数中的消息校验规范生成所述消息并向所述消息中注入免检标签,否则按普通方式生成所述消息。
本公开技术方案对Kafka的主题配置参数进行扩展,对于存在规范性检测需求的主题消息提供校验规则;替换原有逐条消息构造方法为消息工厂构造方式,根据传入的集群及主题配置参数,在消息创建按照消息校验规范生成消息,保证消息规范性和准确性;通过Kafka集群消息拦截器过滤掉不符合规范的消息,从而保证写入主题的消息都是符合规范的消息。本公开技术方案主要从服务端检测和控制写入主题的消息的规范性,能够高效地实现防止不符合规范的消息发布到Kafka集群中的风险。
附图说明
为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。
图1为本公开提供的一种Kafka消息发布方法的步骤流程图;
图2为本公开提供的一种Kafka消息发布装置的结构示意图;
图3为本公开一实施中在Zookeeper中创建包含主题扩展配置参数的Zookeeper节点的示意图;
图4为本公开一实施例中Zookeeper节点上主题及相应主题配置参数的存储结构示意图;
图5为本公开一实施例提供的Kafka生产者生成消息的过程示意图;
图6为本公开一实施例中Kafka集群对消息进行拦截处理的步骤流程图;
图7为本公开一实施例提供的一种电子设备结构示意图。
具体实施方式
在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开目的旨在提供一种支持消息规范性校验的Kafka消息发布方法,该方法采用消息工厂类按消息规范生成消息,从而确保只有符合消息规范的消息进入Kafka系统,避免非法消息对业务处理带来的风险,提高非法消息过滤的效率。
本公开对原生的Kafka管理客户端(Kafka Admin Client)及消息拦截器(Record拦截器)进行改进,避免引入外部的模式注册(Schema Registry)组件以提高消息处理效率和降低维护成本。本公开通过消息工厂类(Record Factory)构造Kafka Producer生产者需要发送的消息,集群的消息拦截器拦截过滤生产者发送的消息,对消息进行规范性校验,过滤掉不符合规范的非法消息,避免主题Kafka Topic中存在大量非法消息,消除后续消息处理隐患。
以下结合具体实施例及附图对本公开提供的技术方案进行详细描述。
图3为本公开一实施中在Zookeeper中创建包含主题扩展配置参数的Zookeeper节点的示意图。该实施例对Kafka主题配置参数进行了扩展,在原有主题配置参数的基础上新增了有关消息校验规范的主题扩展配置参数。
例如原有主题配置参数包括:分区Partition分配(分区数量)、副本分配(副本数量)方案等。
扩展主题配置参数包括:
(1)消息校验标志:用于指示是否需要针对该主题开启服务端消息规范性校验;
(2)消息校验规范:用于规范消息的数据结构、内容、字段取值范围等,可选择其中一或多种的组合。本公开不具体限定消息校验规范的具体项目和内容。
例如,消息校验规范中限定消息的数据结构,限定消息应当包括哪些字段。对于消息的内容,消息校验规范可针对消息的数据结构选择一个字段的内容限定内容黑名单,例如:数据结构为{“id”:"int","name":"String",...},选择name字段,对其内容设置黑名单,当字段内容包括黑名单中的内容时,消息校验将不予通过。对于消息数据结构中的字段的取值范围可设置数据阈值,例如:id字段为int,阈值大小是-2147483648到2147483647;name字段为string,设置字符串阈值长度为0-20字符。当消息的数据结构、内容、字段取值范围等都满足消息校验规范中的设定时,对消息的规范性校验将成功,否则消息的规范性校验将失败。
本公开需要对Kafka Admin Client管理客户端进行改进,在创建Kafka主题前需要先确定主题配置参数。在发送创建主题请求之前先发送包括扩展主题配置参数的创建Zookeeper节点的请求,在创建Zookeeper节点后再完成主题创建。扩展主题配置参数将被已注册的消息工厂和Kafka Broker服务进程实时同步,由消息工厂类基于消息校验规范生成的消息将经由捷径进入Kafka的Topice,非消息工厂生成的消息将由集群统一校验后进入Kafka的Topic。
在创建ZooKeeper节点时,将原有主题配置参数及扩展主题配置参数写入到ZooKeeper节点/brokers/topic/<主题>节点下。API调用中,上述主题配置参数将经由Admin Client统一构造请求,将参数保存到Zookeeper节点对应主题下面。图4为本公开一实施例中Zookeeper节点上主题及相应主题配置参数的存储结构示意图。
在Kafka Producer生产者向位于Broker的主题写入消息时,首先需要从ZooKeeper节点获取主题扩展配置参数进行本地缓存,按照预定义的主题扩展配置参数的要求调用消息工厂Record Factory类来生成准备写入主题的消息。如果需要校验数据,则消息工厂类需要按照主题扩展配置参数中消息校验规范中预定义的数据结构对传入进来的进行字段的校验,将不符合消息校验规范的数据过滤掉,符合要求的给数据添加一个标签,作为拦截器识别的标志。
基于上述功能设计,Kafka Producer只需要关心集群的IP、主题名以及消息工厂类Record Factory的构造。图5为本公开一实施例提供的Kafka生产者生成消息的过程示意图。
步骤S501.Kafka生产者调用消息工厂类Record Factory;
消息工厂类用于基于预设的主题扩展配置参数构造生产者需要写入到Topic主题中的消息Record。
步骤S502.消息工厂类Record Factory根据从ZooKeeper读取的主题扩展配置参数生成消息;
Kafka Producer通过ZooKerper与Broker进行应用协调,Kafka Producer可从ZooKerper读取Topic扩展配置参数。
为了提供更好的兼容性,本公开一实施例中在主题扩展配置参数中设置有一校验标志位,用于指示是否需要依据消息校验规范生成消息,消息工厂类Record Factory优先会去判断主题扩展配置参数中是否设置了消息校验标志,如果没有设置消息校验标志,证明是普通的主题,没有消息校验的需求,按照普通的主题生成消息即可;如果设置有消息校验标志,则Record Factory会根据主题查询缓存中消息校验规范,根据消息校验规范生成带有标签的消息Record。
步骤S503.Kafka生产者将生产的消息发送到Kafka集群中的代理Broker,写入对应的Topic主题中。
图6为本公开一实施例中Kafka集群对消息进行拦截处理的步骤流程图。
步骤S601.在将消息写入主题之前,通过Kafka集群消息拦截器对消息进行拦截;
步骤S602.Kafka集群消息拦截器判断消息中是否携带有免检标签,所述免检标签用于指示消息由消息工厂按消息校验规范生成;若携带,执行步骤S603,否则执行步骤S604;
所述免检标签可采用对称或非对称加密算法生成,以提高系统的安全性。
步骤S603.不对消息做主题扩展配置参数中的消息校验规范的校验,将消息直接写入对应的主题中;
步骤S604.对消息做主题扩展配置参数中的消息校验规范的校验,判断是否校验成功,若校验成功则将消息写入对应的主题,若校验不成功则返回异写入失败信息。
该实施例中,所有使用消息工厂类Record Factory按主题扩展配置参数中的消息校验规范生成的消息Record都会被注入免检标签,此标签将作为跳过Kafka集群消息拦截器的校验步骤的令牌Token,拥有免检标签的消息可跳过集群消息拦截器的消息校验直接写入对应的主题中,而未使用消息工厂类使用普通构造方式产生的消息将不会被注入免检标签,未携带免检标签的消息将被集群消息拦截器拦截,并根据ZooKeeper中所保存的消息校验规范进行校验,若校验成功,则消息将被写入主题中,校验失败则返回异常信息,由生产者的Call Back接口方法接收。这种处理方案即可确保所有进入集群的消息皆得到校验,同时也使得所有消息只经过一次校验,避免重复校验带来的性能损失。
当消息到达Kafka集群前,将优先由集群消息拦截器获取,该拦截器的关键作用是根据生产者发送过来的消息是否带有免检标签,如果是携带免检标签,则直接写入Kafka集群,异步/同步返回给客户端成功无异常;
如果没有携带免检标签,拦截器将拦截该消息,并进行校验,异步/同步返回给客户端成功或者失败及异常信息,通过校验将符合消息校验规范的消息写入主题,拒绝不符合规范的消息,具体不符合规范的消息需要查看异常信息,用户可以从Callback调用中获取异常信息,再通过异常信息进行低级客户端的调整工作。
集群消息拦截器获取一条用户发送过来的消息,例如消息内容为:{“id”:1,“name”:“tom”},并带有免检标记Flag,集群消息拦截器在接收到该消息后,首先去判断消息的是否带有免检标记,如果带有免检标记,例如免检标记值为true,则集群消息拦截器将该消息放行,将该消息转发给Kafka集群,将消息写入对应的主题;如果该消息没带免检标记,集群消息拦截器将拦截该消息,并根据主题扩展配置参数的消息校验规范对消息进行校验,如果校验通过,则写入集群的对应主题,同步/异步返回给用户写入结果,如果校验失败,则同步/异步返回给客户端写入失败及异常信息。
上述实施例通过在已有组件Zookeeper上添加主题扩展配置参数,由消息工厂类根据主题扩展配置参数中的消息校验规范生成消息,集群消息拦截器对消息进行拦截,放行按消息校验规范生成的消息,对于未按消息校验规范生成的消息进行校验,达到对消息的进行规范化校验的效果,避免了引入其他组件。减少生产者和消费者客户端对主题规则关联的操作。消费者客户端不需要反序列化数据,减少了消费者的操作步骤。
图7为本公开一实施例提供的一种电子设备结构示意图,该设备700包括:诸如中央处理单元(CPU)的处理器710、通信总线720、通信接口740以及存储介质730。其中,处理器710与存储介质730可以通过通信总线720相互通信。存储介质730内存储有计算机程序,当该计算机程序被处理器710执行时即可实现本公开实施例提供的方法步骤的功能。
其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。
以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种Kafka消息发布方法,其特征在于,所述方法包括:
Kafka集群消息拦截器接收到待写入对应Kafka主题的消息时,判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成;
当判断结果为是时,放行所述消息以使所述消息被写入对应的Kafka主题;
当判断结果为否时,所述Kafka集群消息拦截器基于预设的所述Kafka主题的消息校验规范对所述消息进行校验,校验通过时放行所述消息以使所述消息被写入对应的Kafka主题,校验失败时拒绝写入;
所述由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的消息中被注入免检标签;所述Kafka集群消息拦截器根据消息中是否携带免检标签来判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在创建所述Kafka主题之前,在分布式应用协调组件或数据库中写入所述Kafka主题的主题配置参数;所述分布式应用协调组件用于Kafka集群中生产者与Kafka代理之间的应用协调;所述主题配置参数包括主题扩展配置参数,所述主题扩展配置参数中包括所述Kafka主题的消息校验规范;
所述Kafka集群消息拦截器从所述分布式应用协调组件或数据库中获取所述消息校验规范。
3.根据权利要求2所述的方法,其特征在于,所述主题扩展配置参数中还包括消息校验标志,所述消息校验标志用于指示是否需要针对该主题开启服务端消息规范性校验;当所述消息校验标志位被置位时,所述消息工厂类按所述主题扩展配置参数中的消息校验规范生成所述消息并向所述消息中注入免检标签,否则按普通方式生成所述消息。
4.根据权利要求2所述的方法,其特征在于,所述分布式应用协调组件为Zookeeper。
5.一种Kafka消息发布装置,其特征在于,该装置包括:
拦截模块,用于接收待写入对应Kafka主题的消息,判断所述消息是否由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成;
校验模块,用于在判定所述消息不是由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的情况下,基于预设的所述Kafka主题的消息校验规范对所述消息进行校验;
处理模块,用于在判定所述消息是由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的情况下,或在对所述消息校验通过的情况下,放行所述消息以使所述消息被写入对应的Kafka主题;以及在对所述消息校验失败时拒绝写入;
所述由消息工厂Record Factory类按预设的所述Kafka主题的消息校验规范生成的消息中被注入免检标签;
所述拦截模块根据消息中是否携带免检标签来判断所述消息是否由消息工厂RecordFactory类按预设的所述Kafka主题的消息校验规范生成。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
配置写入模块,用于在创建所述Kafka主题之前,向分布式应用协调组件或数据库中写入所述Kafka主题的主题配置参数;所述分布式应用协调组件用于Kafka集群中生产者与Kafka代理之间的应用协调;所述主题配置参数包括主题扩展配置参数,所述主题扩展配置参数中包括所述Kafka主题的消息校验规范;
所述拦截模块从所述分布式应用协调组件或数据库中获取所述消息校验规范。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
消息工厂模块,用于根据所述主题配置参数生成消息;所述主题扩展配置参数中还包括消息校验标志,所述消息校验标志用于指示是否需要针对该主题开启服务端消息规范性校验;当所述消息校验标志位被置位时,所述消息工厂模块按所述主题扩展配置参数中的消息校验规范生成所述消息并向所述消息中注入免检标签,否则按普通方式生成所述消息。
8.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至4中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110403396.4A CN113315750B (zh) | 2021-04-15 | 2021-04-15 | 一种Kafka消息发布方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110403396.4A CN113315750B (zh) | 2021-04-15 | 2021-04-15 | 一种Kafka消息发布方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113315750A CN113315750A (zh) | 2021-08-27 |
CN113315750B true CN113315750B (zh) | 2022-05-27 |
Family
ID=77372201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110403396.4A Active CN113315750B (zh) | 2021-04-15 | 2021-04-15 | 一种Kafka消息发布方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113315750B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114301658A (zh) * | 2021-12-24 | 2022-04-08 | 江苏网进科技股份有限公司 | 一种基于Kafka收集分布式系统数据链路的方法 |
CN114553970A (zh) * | 2022-02-07 | 2022-05-27 | 上海数依数据科技有限公司 | 一种基于Kafka分布式消息处理方法及数据总线系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062293A (zh) * | 2017-12-29 | 2018-05-22 | 安徽方正医疗信息技术有限公司 | 一种基于内容的分级数据校验方法 |
CN111818112A (zh) * | 2019-04-11 | 2020-10-23 | 中国移动通信集团四川有限公司 | 一种基于Kafka系统的发送消息的方法和装置 |
CN111949420A (zh) * | 2020-08-10 | 2020-11-17 | 智业软件股份有限公司 | 一种业务操作流程控制方法、终端设备及存储介质 |
WO2021051531A1 (zh) * | 2019-09-19 | 2021-03-25 | 平安科技(深圳)有限公司 | 处理多集群作业记录的方法、装置、设备及存储介质 |
-
2021
- 2021-04-15 CN CN202110403396.4A patent/CN113315750B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062293A (zh) * | 2017-12-29 | 2018-05-22 | 安徽方正医疗信息技术有限公司 | 一种基于内容的分级数据校验方法 |
CN111818112A (zh) * | 2019-04-11 | 2020-10-23 | 中国移动通信集团四川有限公司 | 一种基于Kafka系统的发送消息的方法和装置 |
WO2021051531A1 (zh) * | 2019-09-19 | 2021-03-25 | 平安科技(深圳)有限公司 | 处理多集群作业记录的方法、装置、设备及存储介质 |
CN111949420A (zh) * | 2020-08-10 | 2020-11-17 | 智业软件股份有限公司 | 一种业务操作流程控制方法、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113315750A (zh) | 2021-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112637346B (zh) | 代理方法、装置、代理服务器及存储介质 | |
CN108810006B (zh) | 资源访问方法、装置、设备及存储介质 | |
CN107040585B (zh) | 一种业务校验的方法及装置 | |
WO2020029375A1 (zh) | 接口测试方法、系统、计算机设备和存储介质 | |
US11444783B2 (en) | Methods and apparatuses for processing transactions based on blockchain integrated station | |
US10127401B2 (en) | Redacting restricted content in files | |
CN113315750B (zh) | 一种Kafka消息发布方法、装置及存储介质 | |
CN109766330B (zh) | 数据分片方法、装置、电子设备及存储介质 | |
WO2019127890A1 (zh) | 漏洞扫描方法、装置、计算机设备和存储介质 | |
CN110399107B (zh) | 日志打印方法、装置、存储介质及设备 | |
US10891357B2 (en) | Managing the display of hidden proprietary software code to authorized licensed users | |
CN112087530B (zh) | 一种将数据上传至区块链系统的方法、装置、设备及介质 | |
WO2021258340A1 (zh) | 发布系统、推送方法、应用设备、接收装置及服务管理设备 | |
CN111240892A (zh) | 数据备份方法及装置 | |
CN108228248A (zh) | 一种依赖关系的确定方法和装置 | |
CN113905031A (zh) | 一种多功能http服务请求预处理系统及方法 | |
CN103023704A (zh) | 虚拟网络服务设备接入方法及系统 | |
CN111327680B (zh) | 认证数据同步方法、装置、系统、计算机设备和存储介质 | |
CN114895879B (zh) | 管理系统设计方案确定方法、装置、设备及存储介质 | |
CN111522881A (zh) | 业务数据处理方法、装置、服务器及存储介质 | |
CN112099879B (zh) | 配置信息管理方法、装置、计算机设备及存储介质 | |
CN115328734A (zh) | 跨服务的日志处理方法、装置及服务器 | |
CN113179332A (zh) | 用于获取配置信息的方法、电子设备和存储介质 | |
CN111367867B (zh) | 日志信息处理方法、装置、电子设备及存储介质 | |
CN117194298B (zh) | 一种控制方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |