【技术实现步骤摘要】
消息存储、读取方法及装置、服务器、存储介质
本申请实施例涉及数据处理
,特别涉及一种消息存储、读取方法及装置、服务器、存储介质。
技术介绍
卡夫卡(简称:Kafka)系统是一种具有高吞吐量的分布式发送订阅消息系统。该Kafka系统可存储多类消息,每类消息称为一个话题(英文:topic),每个topic具有多个分区,每个topic的所有分区分担存储属于该topic的消息。Kafka集群用于部署Kafka系统;Kafka集群具有多个存储节点;该存储节点可以是服务器或者其它具有计算能力的设备;例如Kafka集群中的多个存储节点可以是跨数据中心。Kafka系统中的每个topic可以部署在Kafka集群中的一个或多个存储节点上;如果topic是存储在多个存储节点上,则该topic具有的多个分区可以分布式地部署在该多个存储节点上;如果topic是存储在一个存储节点上,则该topic具有的多个分区均部署在该个存储节点上。相关技术中,当客户端请求向Kafka集群存储消息时,该客户端可以指定用于存储消息的topic和分区。该存储请求会被发送至目标存储节点(部署有该topic的 ...
【技术保护点】
1.一种消息存储方法,其特征在于,所述方法应用于卡夫卡Kafka集群;所述方法包括:接收在所述Kafka集群存储消息的第一消息存储请求,所述第一消息存储请求指定在虚拟存储地址存储所述第一消息存储请求指定的消息,所述虚拟存储地址包括虚拟话题topic的标识和虚拟分区的标识;基于所述虚拟存储地址与第一真实存储地址的对应关系,确定与所述虚拟存储地址对应的所述第一真实存储地址,所述第一真实存储地址包括第一真实topic的标识和第一真实分区的标识;在所述第一真实存储地址指定的所述第一真实topic中的所述第一真实分区,存储所述第一消息存储请求指定的消息。
【技术特征摘要】
1.一种消息存储方法,其特征在于,所述方法应用于卡夫卡Kafka集群;所述方法包括:接收在所述Kafka集群存储消息的第一消息存储请求,所述第一消息存储请求指定在虚拟存储地址存储所述第一消息存储请求指定的消息,所述虚拟存储地址包括虚拟话题topic的标识和虚拟分区的标识;基于所述虚拟存储地址与第一真实存储地址的对应关系,确定与所述虚拟存储地址对应的所述第一真实存储地址,所述第一真实存储地址包括第一真实topic的标识和第一真实分区的标识;在所述第一真实存储地址指定的所述第一真实topic中的所述第一真实分区,存储所述第一消息存储请求指定的消息。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收在所述Kafka集群存储消息的第二消息存储请求,所述第二消息存储请求指定在所述虚拟存储地址存储所述第二消息存储请求指定的消息;基于所述虚拟存储地址与第二真实存储地址的对应关系,确定与所述虚拟存储地址对应的所述第二真实存储地址,所述第二真实存储地址包括第二真实topic的标识和第二真实分区的标识;在所述第二真实存储地址指定的所述第二真实topic中的所述第二真实分区,存储所述第二消息存储请求指定的消息。3.根据权利要求2所述的方法,其特征在于,所述第一真实分区与所述第二真实分区部署在所述Kafka集群中的不同存储节点上。4.根据权利要求2或3所述的方法,其特征在于,所述第二消息存储请求的接收时间晚于所述第一消息存储请求的接收时间。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在接收所述第二消息存储请求之前,预估在预设时间段内接收的所述第二消息存储请求所指定的消息的预存数据量;当所述预存数据量大于第一阈值时,建立所述虚拟存储地址与所述第二真实存储地址的对应关系。6.根据权利要求4所述的方法,其特征在于,所述方法包括:在接收所述第二消息存储请求之前,预估在预设时间段内待在所述第一真实分区所在的第一真实topic中存储的消息的预存数据量;当所述预存数据量大于第二阈值时,建立所述虚拟存储地址与所述第二真实存储地址的对应关系。7.根据权利要求5或6所述的方法,其特征在于,所述建立所述虚拟存储地址与所述第二真实存储地址的对应关系,包括:对于与所述第一真实topic存在对应关系的多个目标虚拟topic,基于所述目标虚拟topic的第三数据量,查找可用数据量大于所述第三数据量的真实topic,所述可用数据量为所述真实topic的数据量额度与所述预存数据量的差值;当确定存在可用数据量大于所述第三数据量的真实topic时,将所述可用数据量大于所述第三数据量的真实topic确定为第二真实topic;当确定不存在可用数据量大于所述第三数据量的真实topic时,在所述消息存储系统中创建第二真实topic;将与所述目标虚拟topic对应的虚拟存储地址与真实存储地址的对应关系,修改为所述虚拟存储地址与包括所述第二真实topic的第二真实存储地址对应。8.根据权利要求5至7任一所述的方法,其特征在于,所述建立所述虚拟存储地址与所述第二真实存储地址的对应关系,还包括:确定第一消息在所述第二真实topic中的消息偏移量,所述第一消息为基于所述虚拟存储地址与所述第二真实存储地址的对应关系,存储在所述第二真实topic中的第一个消息;将所述第一消息的消息偏移量,及所述虚拟存储地址与所述第二真实存储地址的对应关系,存储在所述目标虚拟topic对应的索引文件中。9.根据权利要求1至8任一所述的方法,其特征在于,每个真实存储地址与多个虚拟存储地址存在对应关系。10.一种消息读取方法,其特征在于,所述方法应用于卡夫卡Kafka集群;所述方法包括:接收在所述Kafka集群读取消息的消息读取请求,所述消息读取请求指定从虚拟存储地址读取消息,所述虚拟存储地址包括虚拟topic的标识和虚拟分区的标识;基于所述虚拟存储地址与真实存储地址的对应关系,确定与所述虚拟存储地址对应的目标真实存储地址,所述目标真实存储地址包括目标真实topic的标识和目标真实分区的标识;在所述目标真实存储地址指定的目标真实分区读取所述消息读取请求所指定的消息。11.根据权利要求10所述的方法,其特征在于,所述消息读取请求中携带有待读取消息的目标偏移量,所述确定与所述虚拟存储地址对应的目标真实存储地址,包括:获取目标索引文件中记载的第一消息的消息偏移量,所述第一消息为基于所述虚拟存储地址与真实存储地址的当前对应关系,存储在所述当前对应关系指定的真实topic中的第一个消息,所述目标索引文件为所述虚拟存储地址指定的虚拟topic对应的索引文件;当所述目标偏移量大于或等于所述消息偏移量时,将所述当前对应关系中记载的真实存储地址确定为所述目标真实存储地址;当所述目标偏移量小于所述消息偏移量时,将所述虚拟存储地址与真实存储地址的历史对应关系中记载的真实存储地址确定为所述目标真实存储地址,所述当前对应关系中记载的真实存储地址与所述历史对应关系中记载的真实存储地址不同。12.一种消息存储装置,其特征在于,所述装置包括:接收模块,用于接收在Kafka集群存储消息的第一消息存储请求,所述第一消息存储请求指定在虚拟存储地址存储所述第一消息存储请求指定的消息,所述虚拟存储地址包括虚拟话题topic的标识和虚拟分区的标识;确定模块,用于基于所述虚拟存储地址...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。