基于消息队列的配置数据同步方法、装置、介质及设备
技术领域
本申请涉及但不限于互联网技术领域,尤其涉及基于消息队列的配置数据同步方法、装置、介质及设备。
背景技术
同一系统在不同环境中运行时实现配置信息同步的方法包括以下两种:
一,使用数据库同步。
二,通过软件定时扫描同步。
上述第一种方法使用数据库同步的方法是使用数据库或者表格的整体数据同步,无法个性化同步。上述第二种方法通过软件定时扫描同步,实时性较差,且往往缺乏容错处理。
发明内容
为了解决上述技术问题,本发明提供了一种基于消息队列的配置数据同步方法及装置。
本发明提供的基于消息队列的配置数据同步方法,包括:
确定更新后的配置信息和需同步的目标环境;
生成目标环境的话题,话题中包含更新后的配置信息;
将话题发布至消息队列;
接收对消息队列中的话题的订阅请求后,将话题中配置信息配置到话题的目标环境中。
上述配置数据同步方法还具有以下特点:
确定更新后的配置信息包括:接收调用配置信息变更接口的请求,从请求中获取更新后的配置信息。
上述配置数据同步方法还具有以下特点:
接收调用配置信息变更接口的请求后,此方法还包括:记录调用请求的用户信息以及调用请求的操作信息。
上述配置数据同步方法还具有以下特点:
此方法还包括:记录队列的配置进度,在当前话题配置失败后,维持队列的配置进度为当前话题,在当前话题配置成功后,更新队列的配置进度为当前话题的下一话题。
本发明提供的基于消息队列的配置数据同步装置,包括:
确定模块,用于确定更新后的配置信息和需同步的目标环境;
生成模块,生成目标环境的话题,话题中包含更新后的配置信息;
发布模块,将话题发布至消息队列;
第一接收模块,接收对消息队列中的话题的订阅请求;
配置模块,将话题中配置信息配置到话题的目标环境中。
上述配置数据同步装置还具有以下特点:
确定模块包括第二接收模块和获取模块;
第二接收模块,用于接收调用配置信息变更接口的请求;
获取模块,用于从请求中获取更新后的配置信息。
上述配置数据同步装置还具有以下特点:
此装置还包括记录模块,用于在第二接收模块接收调用配置信息变更接口的请求后,记录调用请求的用户信息以及调用请求的操作信息。
上述配置数据同步装置还具有以下特点:
装置还包括判断模块和配置进度维护模块;
判断模块,用于判断当前话题是否配置成功;
配置进度维护模块,用于记录队列的配置进度,在当前话题配置失败后,维持队列的配置进度为当前话题,在当前话题配置成功后,更新队列的配置进度为当前话题的下一话题。
本发明提供的计算机可读存储介质上存储有计算机程序,此程序被处理器执行时实现上述方法的步骤。
本发明提供的计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述方法的步骤。
本发明中基于话题-发布-订阅的模式可以有效解决同一系统在不同环境下不同配置信息无法有效同步的问题,采用消息队列进行不同环境的配置信息同步,既可确保配置数据同步的灵活性,又可保证消息的有序性和消费的可靠性。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是实施例中基于消息队列的配置数据同步方法的流程图;
图2是实施例中基于消息队列的配置数据同步装置的结构图。
图3是实施例中基于消息队列的配置数据同步方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1是实施例一中基于消息队列的配置数据同步方法的流程图,此方法包括:
步骤101,确定更新后的配置信息和需同步的目标环境;
步骤102,生成目标环境的话题,话题中包含更新后的配置信息;
步骤103,将话题发布至消息队列;
步骤104,接收对消息队列中的话题的订阅请求,将话题中配置信息配置到话题的目标环境中。
基于话题-发布-订阅的模式可以有效解决同一系统在不同环境下不同配置信息无法有效同步的问题。
消息队列可以是kafuka类型。将各环境设置为话题,修改系统的配置信息后,选择需同步的环境,生成环境对应的话题发布到消息队列。每个环境以消费者的角色消费自身话题的配置信息。本方法中,采用消息队列进行不同环境的配置信息同步,既可确保配置数据同步的灵活性,又可保证消息的有序性和消费的可靠性。
步骤1中,确定更新后的配置信息包括:接收调用配置信息变更接口的请求,从此请求中获取更新后的配置信息。配置信息变更接口支持的配置信息变更类型包括:新增、删除和修改,即变更接口时可使用同一接口进行统一变更。此接口可以采用Restful API方式,达到跨语言、跨网络的目的,即支持跨平台,又可实现公网环境调用。
接收调用配置信息变更接口的请求后,此方法还包括:记录调用此请求的用户信息以及调用此请求的操作信息。即在用户调用配置信息的Restful API接口操作信息时,同时对操作行为进行记录后,再进行发布,从而清晰记录用户的每次操作,使配置的变更操作可追溯,将此记录作为系统容错的基础数据信息。
此方法还包括:记录队列的配置进度,在当前话题配置失败后,维持队列的配置进度为此当前话题,在当前话题配置成功后,更新队列的配置进度为当前话题的下一话题。通过消费者自身对消息索引(offset)的维护,消费消息成功后,移动索引的位置(例如将索引加1),下次消费才会消费下一条消息,消费消息失败后,索引的位置不变,下次会继续重试消息此消息,这样既确保了消息不会被重复消费,也不会发生消息丢失的情况,可以达到容错的目的。
本方法使用的架构具有很好的可扩展性,只需要增加对应的话题即可对系统规模进行扩充,并且此架构易于维护。
图2是实施例中基于消息队列的配置数据同步装置的结构图,此装置包括:
确定模块,用于确定更新后的配置信息和需同步的目标环境;
生成模块,生成目标环境的话题,话题中包含更新后的配置信息;
发布模块,将话题发布至消息队列;
第一接收模块,接收对消息队列中的话题的订阅请求;
配置模块,将话题中配置信息配置到此话题的目标环境中。
此消息队列可以是kafuka类型。本装置将各环境设置为话题,修改系统的配置信息后,选择需同步的环境,生成环境对应的话题发布到消息队列。每个环境以消费者的角色消费自身话题的配置信息。采用消息队列进行不同环境的配置信息同步,既可确保配置数据同步的灵活性,又可保证消息的有序性和消费的可靠性。
确定模块包括第二接收模块和获取模块。第二接收模块用于接收调用配置信息变更接口的请求;获取模块用于从请求中获取更新后的配置信息。配置信息变更接口支持的配置信息变更类型包括:新增、删除和修改,即变更接口时可使用同一接口进行统一变更。此接口可以采用Restful API方式,达到跨语言、跨网络的目的,即支持跨平台,又可实现公网环境调用
本装置还包括记录模块用于在第二接收模块接收调用配置信息变更接口的请求后,记录调用请求的用户信息以及调用此请求的操作信息,从而清晰记录用户的每次操作,使配置的变更操作可追溯,将此记录作为系统容错的基础数据信息。
本装置还包括判断模块和配置进度维护模块;
判断模块用于判断当前话题是否配置成功;配置进度维护模块用于记录队列的配置进度,在当前话题配置失败后,维持队列的配置进度为此当前话题,在当前话题配置成功后,更新队列的配置进度为当前话题的下一话题。通过消费者自身对消息索引(offset)的维护,消费消息成功后,移动索引的位置(例如将索引加1),下次消费才会消费下一条消息,消费消息失败后,索引的位置不变,下次会继续重试消息此消息,这样既确保了消息不会被重复消费,也不会发生消息丢失的情况。
具体实施例
如图3所示,同一系统中包括生产子系统,开发子系统和测试子系统。基于话题-发布-订阅的模式,将生产子系统作为生产环境,将开发子系统作为开发环境,将测试子系统作为测试环境。
确定模块接收Restful API的调用请求,从此请求中获取更新后的配置信息,确定此更新后的配置信息需同步的目标环境为生产环境,将调用此请求的用户信息以及调用此请求的操作信息存储于数据库。
生成模块生成生产环境的话题,此话题中包含更新后的配置信息。
发布模块将话题发布至kafuka消息队列。
第一接收模块接收对消息队列中的话题的订阅请求后,配置模块将此话题中配置信息配置到此话题的目标环境中即配置到此话题的生产环境中。
对于其它环境的配置方式与对上述生产环境进行配置的方式同理。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。