Kafka集群的数据传送方法和装置与流程

文档序号:12829286阅读:380来源:国知局
Kafka集群的数据传送方法和装置与流程

本发明涉及数据处理,特别是涉及kafka集群的数据传送方法和装置。



背景技术:

消息中间件是一种广泛运用在分布式系统中的用于节点间通信的软件。在大规模高并发后台服务架构体系中,kafka作为常用的消息中间件,应用非常广泛。

kafka是由linkedin公司开发并开源的消息中间件。kafka消息中间件主要由生产者producer、代理者broker和消费者consumer组成,生产者发布消息,代理者将消息从生产者转发到消费者,消费者接收并处理消息。生产者producer和代理者broker分别作为消息的客户端和服务端。在实际运用中,一般会将多个kafka代理者以集群的方式运行形成kafka集群。

由于每产生一条消息就进行发送需要每次建立网络连接,势必影响效率。因此kafka的消息发送过程采取批量异步发送的方式。即在kafka客户端中,发送到kafka服务器的数据一般会被缓存到本地的消息队列中再批量发送到kafka服务器集群中,当kafka服务器全部当机后,被缓存到本地消息队列中的数据就存在丢失的风险。



技术实现要素:

本发明的一个目的是要降低kafka集群的数据丢失风险。

特别地,本发明提供了一种kafka集群的数据传送方法,该方法包括:调用预设的kafka连接状态接口,以利用kafka连接状态接口获取kafka集群的连接状态标识;识别连接状态标识对应的kafka集群的数据连接状态;在数据连接状态为kafka集群中所有服务器均无法连接的情况下,停止向kafka集群传送数据。

可选地,kafka连接状态接口按照预设的策略对kafka集群中的服务器进行连接状态扫描,并根据扫描结果对连接状态标识进行更新。

可选地,根据扫描结果对连接状态标识进行更新的步骤包括:扫描kafka集群中是否存在服务器已断开数据连接;若是,尝试重新连接已断开数据连接的服务器,在尝试重新连接失败的情况下,判定该服务器处于无法连接状态;轮询kafka集群中所有服务器,并在kafka集群中所有服务器均处于无法连接状态时,对连接状态标识进行修改。

可选地,连接状态标识的初始值对应的数据连接状态为kafka集群正常提供数据服务,并且在kafka集群中存在至少一个服务器能够数据连接或者尝试重新连接成功的情况下,检查连接状态标识是否为初始值,若否,将连接状态标识更新为初始值。

可选地,在kafka集群中所有服务器均处于无法连接状态的情况下,输出告警提示信息。

可选地,在停止向kafka集群传送数据的步骤之后还包括:暂停生成数据,并保存缓存中的数据队列。

根据本发明的另一个方面,还提供了一种kafka集群的数据传送装置,该装置包括:标识获取模块,配置成调用预设的kafka连接状态接口,以利用kafka连接状态接口获取kafka集群的连接状态标识;标识识别模块,配置成识别连接状态标识对应的kafka集群的数据连接状态;数据传送模块,配置成在数据连接状态为kafka集群中所有服务器均无法连接的情况下,停止向kafka集群传送数据。

可选地,kafka连接状态接口还配置成:按照预设的策略对kafka集群中的服务器进行连接状态扫描,并根据扫描结果对连接状态标识进行更新。

可选地,kafka连接状态接口还配置成:扫描kafka集群中是否存在服务器已断开数据连接;若是,尝试重新连接已断开数据连接的服务器,在尝试重新连接失败的情况下,判定该服务器处于无法连接状态;轮询kafka集群中所有服务器,并在kafka集群中所有服务器均处于无法连接状态时,对连接状态标识进行修改;并且在kafka集群中存在至少一个服务器能够数据连接或者尝试重新连接成功的情况下,检查连接状态标识是否为初始值,若否,将连接状态标识更新为初始值,其中连接状态标识的初始值对应的数据连接状态为kafka集群正常提供数据服务。

可选地,上述装置还包括:提示模块,配置成在kafka集群中所有服务器均处于无法连接状态的情况下,输出告警提示信息。

本发明的kafka集群的数据传送方法和装置增加了kafka连接状态接口,利用该接口可供调用者判断kafka集群的连接状态,可以及时发现kafka集群的异常连接情况,并停止进行数据传输,降低缓存中的本地消息队列中数据丢失的风险,从而提高了kafka集群的可靠性。

进一步地,本发明的kafka集群的数据传送方法和装置,在kafka集群中存在服务器已断开数据连接的情况后,及时发起重新连接尝试,从而可以区分服务器是暂时失连还是出现宕机等无法提供服务严重故障,相应对kafka集群的连接状态标识进行更新,保证了连接状态标识的准确性。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:

图1根据本发明一个实施例的kafka集群的数据传送装置适用的硬件架构图;

图2根据本发明一个实施例的kafka集群的数据传送装置的示意图;

图3根据本发明一个实施例的kafka集群的数据传送装置的示意图;

图4是根据本发明一个实施例的kafka集群的数据传送方法的示意图;以及

图5是根据本发明一个实施例的kafka集群的数据传送方法的流程示意图。

具体实施方式

本发明的实施例对kafka客户端进行了修改,在kafka客户端判断是否kafka集群中所有的kafka集群服务器都已经连接不上了,在出现这种情况下,向调用者反馈服务器状态,调用者可以停止向kafka集群传送数据,最大限度的减少数据丢失的风险。

图1根据本发明一个实施例的kafka集群的数据传送装置200适用的硬件架构图。在本实施例中,利用kafka的特点,实现分布式的,可划分的,多订阅者,冗余备份的持久性的服务。生产者producer、代理者(broker)和消费者consumer均为分布式架构。kafka客户端120(producer)将产生的数据缓存至本地的消息队列通过采取批量异步发送的方式发送给kafka集群100(broker),kafka集群100包括多台服务器110。kafka集群100可以根据业务类型将kafka客户端120传送的数据在多台服务器110之间进行分配,服务器110可以将这些数据进行持久化操作,例如写入日志文件中,数据消费者consumer使用。

在本实施例中,首次在kafka集群100中配置了kafka连接状态接口,以供kafka客户端120调用,在具有多个kafka客户端120的情况下,kafka集群100可以利用统一的kafka连接状态接口向多个kafka客户端120分别提供kafka集群100中服务器110的数据连接状态。

图2根据本发明一个实施例的kafka集群的数据传送装置200的示意图。该kafka集群的数据传送装置200可以通过kafka连接状态接口获取kafka集群100的数据连接状态,并相应采取措施,减小缓存中数据丢失的风险。该kafka集群的数据传送装置200一般性地可以包括:标识获取模块210、标识识别模块220、数据传送模块230。每个kafka客户端120可以通过设置kafka集群的数据传送装置200来减小数据丢失的风险。

其中,标识获取模块210,配置成调用预设的kafka连接状态接口,以利用kafka连接状态接口获取kafka集群100的连接状态标识。该连接状态标识可以有两种状态,一种状态为kafka集群100可以完成数据相关服务功能,也即kafka集群100中仍存在服务器110可以正常数据连接,另一种状态为kafka集群100无法完成数据相关服务功能,也即kafka集群100中所有的服务器110均无法数据连接。

标识识别模块220可以配置成识别连接状态标识对应的kafka集群100的数据连接状态。标识识别模块220可以通过连接状态标识确定kafka集群100的数据连接状态。

数据传送模块230可以配置成在数据连接状态为kafka集群100中所有服务器均无法连接的情况下,停止向kafka集群100传送数据,由于在该情况下缓存中的数据可以保留,从而减小了数据丢失的风险。

kafka连接状态接口可以按照预设的策略对kafka集群100中的服务器进行连接状态扫描,并根据扫描结果对连接状态标识进行更新。例如kafka连接状态接口可以定时对连接状态标识进行更新,每间隔10分钟进行一次连接状态标识进行更新,具体的更新时间可以根据具体数据应用的要求进行设置,上述10分钟仅为举例说明,并非对本发明进行限制。在另一些实施例中,kafka连接状态接口也可以其他策略进行更新,例如按照外部输入的指令进行更新,按照接收的数据量进行更新等。

而且kafka连接状态接口还可以通过优化,对服务器110的暂时故障以及无法恢复的长期异常进行区分,进一步提高kafka集群100的可靠性。例如,kafka连接状态接口可以扫描kafka集群100中是否存在服务器110已断开数据连接;若是,尝试重新连接已断开数据连接的服务器110,在尝试重新连接失败的情况下,判定该服务器110处于无法连接状态;轮询kafka集群100中所有服务器,并在kafka集群100中所有服务器均处于无法连接状态时,对连接状态标识进行修改。从而在出现kafka集群100中是否存在服务器110已断开数据连接的情况下,通过尝试重新连接来过滤某些暂时的异常。

连接状态标识的初始值可以设置为对应于数据连接状态为kafka集群100正常提供数据服务。在kafka集群100中存在至少一个服务器110能够数据连接或者尝试重新连接成功的情况下,检查连接状态标识是否为初始值,若否,将连接状态标识更新为初始值。如果在kafka集群100中所有服务器110均处于无法连接状态的情况下,将连接状态标识修改为对应于kafka集群100无法正常连接的状态。

图3根据本发明一个实施例的kafka集群的数据传送装置200的示意图。在该实施例中,kafka集群的数据传送装置200可以增加设置有提示模块240,该提示模块240在kafka集群100中所有服务器110均处于无法连接状态的情况下,输出告警提示信息。例如向kafka集群100的维护者发送告警邮件、消息等,以及时提醒对kafka集群100进行修复。

另外kafka客户端120在停止向kafka集群100传送数据的步骤之后还可以暂停生成数据,并保存缓存中的数据队列,在本地永久化数据,进一步防止缓存中的数据丢失,在kafka集群100的连接恢复后,重新进行数据的生成和发送。

本发明还提供了一种kafka集群的数据传送方法,该kafka集群的数据传送方法可以由上述任一实施例的kafka集群的数据传送装置200执行,以减小数据丢失风险,提高kafka集群100的应用可靠性。图4是根据本发明一个实施例的kafka集群的数据传送方法的示意图,该kafka集群的数据传送方法一般性地可以包括:

步骤s402,调用预设的kafka连接状态接口,以利用kafka连接状态接口获取kafka集群100的连接状态标识;

步骤s404,识别连接状态标识对应的kafka集群100的数据连接状态;

步骤s406,在数据连接状态为kafka集群100中所有服务器110均无法连接的情况下,停止向kafka集群100传送数据。

kafka连接状态接口按照预设的策略对kafka集群100中的服务器110进行连接状态扫描,并根据扫描结果对连接状态标识进行更新。进一步地,kafka连接状态接口还可以区分服务器110是暂时失去连接还是已无法连接,一种具体的对连接状态标识进行更新的步骤为:扫描kafka集群100中是否存在服务器110已断开数据连接;若是,尝试重新连接已断开数据连接的服务器110,在尝试重新连接失败的情况下,判定该服务器处于无法连接状态;轮询kafka集群100中所有服务器110,并在kafka集群100中所有服务器110均处于无法连接状态时,对连接状态标识进行修改。而且在kafka集群100中所有服务器110均处于无法连接状态的情况下,还可以输出告警提示信息,以便及时处理异常。

连接状态标识的初始值对应的数据连接状态可以为kafka集群100正常提供数据服务,并且在kafka集群100中存在至少一个服务器110能够数据连接或者尝试重新连接成功的情况下,检查连接状态标识是否为初始值,若否,将连接状态标识更新为初始值。

图5是根据本发明一个实施例的kafka集群的数据传送方法的流程示意图,在该流程中连接状态标识定义为g,其中kafka连接状态接口为:

利用该接口获取连接状态标识g。连接状态标识g的更新流程为:

步骤s502,定时更新开始,本实施例中采用定时对连接状态标识g进行更新,在另外一些可选实施例中,也可以采用消息的处理量达到一定阈值后更新、或者按照维护人员指令更新等其他方式进行更新;

步骤s504,判断kafka集群100是否有服务器110失去数据连接,若没有服务器110失去数据连接,则检查连接状态标识g,保持连接状态标识g为正常状态;

步骤s506,在存在服务器110失去数据连接的情况下,检查该失去连接的服务器110是否正在尝试重新连接,若是,认定该服务器110处于暂时失连状态,不记为退出服务状态;

步骤s508,在存在服务器110已经完成尝试重新连接仍无法连接的情况下,认定该服务器110无法提供数据服务,并扫描是否全部服务器110失去连接,若还存在服务器110可以仍然保持数据连接,则重新等待下次更新。

步骤s510,在全部服务器110均失去连接的情况下,修改连接状态标识g,以指示kafka集群100无法正常提供服务。

连接状态标识g可以根据kafka连接状态接口的调用提供给kafka客户端120,以供kafka客户端120决定是否向kafka集群100继续提供数据。调用者可以随时调用该kafka连接状态接口

本实施例的kafka集群的数据传送方法和装置增加了kafka连接状态接口,利用该接口可供调用者判断kafka集群100的连接状态,可以及时发现kafka集群100的异常连接情况,并停止进行数据传输,降低缓存中的本地消息队列中数据丢失的风险,从而提高了kafka集群100的可靠性。在kafka集群100中存在服务器110已断开数据连接的情况后,可以及时发起重新连接尝试,从而可以区分服务器110是暂时失连还是出现宕机等无法提供服务故障,相应对kafka集群100的连接状态标识进行更新,保证了连接状态标识的准确性。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

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