一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

缓存数据处理方法、装置、设备及系统与流程

2022-05-08 09:03:40 来源:中国专利 TAG:
1.本技术涉及移动互联网
技术领域
:,尤其涉及一种缓存数据处理方法、装置、设备及系统。
背景技术
::2.目前在客户端向服务端获取数据的时候,服务端进行计算后向客户端返回响应。当服务端计算量大时响应可能较慢,甚至产生请求超时导致崩溃的问题,影响用户体验。相关技术中可以使用缓存技术来解决此问题,也就是将本来需要在服务端的大量数据中查找的数据,提前查找并缓存到缓存数据库中,这样在客户端需要获取数据的时候,就能从缓存数据库中很快查找出数据并反馈给客户端。3.但是,如果缓存数据没有及时同步更新,就经常会出现缓存数据与实际数据不符的情况。相关技术中一般都是一次性将所有数据都同步后,根据数据可能会更新的场景来手动编写代码去同步更新对应的内容。4.相关技术的缓存数据处理方法,容易出现数据同步出错或数据同步不全的问题。技术实现要素:5.为解决或部分解决相关技术中存在的问题,本技术提供一种缓存数据处理方法、装置、设备及系统,该缓存数据处理方法、装置、设备及系统,能够减少或避免出现数据同步出错或数据同步不全的问题。6.本技术第一方面提供一种缓存数据处理方法,包括:接收数据库变更消息,其中所述数据库变更消息包括发生变化的数据库字段和变化类型;将所述发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中所述发生变化的数据库字段对应的缓存标识;根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理;其中所述接收数据库变更消息,包括:接收虚拟从库在监听到数据库发生变化后发送的数据库变更消息,其中所述数据库作为主库。7.在一实施方式中,所述接收数据库变更消息,包括:通过kafka的消息队列,接收所述虚拟从库作为生产者发送的数据库变更消息。8.在一实施方式中,所述将所述发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中所述发生变化的数据库字段对应的缓存标识,包括:根据所述发生变化的数据库字段在配置中心查找预先配置的节点和节点配置信息;在查找到节点和节点配置信息后,循环查找所述节点配置信息中索引对应的字段配置进行匹配;在字段匹配成功后,获取所述节点配置信息中的索引名称和所述发生变化的数据库字段对应的缓存主键id。9.在一实施方式中,所述数据库变更消息中包括发生变化的数据库字段的字段值,所述根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理,包括:根据所述变化类型为更新事件,将所述缓存标识对应的缓存数据中对应字段的值更新为所述数据库变更消息中的字段值。10.在一实施方式中,所述数据库变更消息中包括发生变化的数据库字段的字段值,所述根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理,包括:根据所述变化类型为新增事件,在所述新增事件对应的数据库表是字段配置中主键字段所在数据库表时,在索引中新增数据,所述新增数据设置所述缓存标识,将所述缓存标识对应的缓存数据中对应字段的值设置为所述数据库变更消息中的字段值。11.在一实施方式中,所述根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理,包括:根据所述变化类型为删除事件,在所述删除事件对应的数据库表是字段配置中主键字段所在数据库表时,将所述缓存标识对应的缓存数据删除。12.在一实施方式中,所述配置中心预先配置的配置信息按以下方式预先配置:由所述配置中心获取配置页面所配置的索引名称和数据库字段,其中所述配置的数据库字段来自从所述数据库获取的数据库字段;对所述配置页面所配置的索引名称和数据库字段进行检查;在检查合格后,如果未存在所述数据库字段对应的配置节点,则为所述数据库字段创建节点路径并保存节点配置信息;或,如果已存在所述数据库字段对应的配置节点和节点配置信息,则更新所述节点配置信息;或,如果已存在所述数据库字段对应的配置节点但未存在节点配置信息,则创建节点配置信息。13.本技术第二方面提供一种缓存数据处理装置,包括:接收模块,用于接收数据库变更消息,其中所述数据库变更消息包括发生变化的数据库字段和变化类型,其中所述接收模块接收虚拟从库在监听到数据库发生变化后发送的数据库变更消息,其中所述数据库作为主库;匹配模块,用于将所述发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中所述发生变化的数据库字段对应的缓存标识;同步模块,用于根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理。14.在一实施方式中,所述接收模块通过kafka的消息队列,接收虚拟从库作为生产者发送的数据库变更消息。15.在一实施方式中,所述匹配模块包括:节点查找模块,用于根据所述发生变化的数据库字段在配置中心查找预先配置的节点和节点配置信息;字段匹配模块,用于在查找到节点和节点配置信息后,循环查找所述节点配置信息中索引对应的字段配置进行匹配;信息获取模块,用于在字段匹配成功后,获取所述节点配置信息中的索引名称和所述发生变化的数据库字段对应的缓存主键id。16.在一实施方式中,所述同步模块包括:第一同步模块,用于根据所述变化类型为更新事件,将所述缓存标识对应的缓存数据中对应字段的值更新为数据库变更消息中的字段值;或,第二同步模块,用于根据所述变化类型为新增事件,在所述新增事件对应的数据库表是字段配置中主键字段所在数据库表时,在索引中新增数据,所述新增数据设置所述缓存标识,将所述缓存标识对应的缓存数据中对应字段的值设置为数据库变更消息中的字段值;或,第三同步模块,用于根据所述变化类型为删除事件,在所述删除事件对应的数据库表是字段配置中主键字段所在数据库表时,将所述缓存标识对应的缓存数据删除。17.本技术第三方面提供一种缓存数据处理系统,包括:数据库,用于存储数据;监听模块,用于监听所述数据库,生成数据库变更消息发送给聚合模块;配置中心,用于预先进行配置信息的配置;聚合模块,用于接收所述监听模块发送的数据库变更消息,其中所述数据库变更消息包括发生变化的数据库字段和变化类型;将所述发生变化的数据库字段与所述配置中心预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中所述发生变化的数据库字段对应的缓存标识;根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理;其中所述监听模块通过虚拟从库监听数据库,在监听到数据库发生变化后向所述聚合模块发送数据库变更消息,其中所述数据库作为主库。18.在一实施方式中,所述聚合模块作为消费者通过kafka的消息队列,接收作为生产者的所述监听模块发送的数据库变更消息。19.在一实施方式中,所述配置中心获取配置页面所配置的索引名称和数据库字段,其中所述配置的数据库字段来自从所述数据库获取的数据库字段;对所述配置页面所配置的索引名称和数据库字段进行检查;在检查合格后,如果未存在所述数据库字段对应的配置节点,则为所述数据库字段创建节点路径并保存节点配置信息;或,如果已存在所述数据库字段对应的配置节点和节点配置信息,则更新所述节点配置信息;或,如果已存在所述数据库字段对应的配置节点但未存在节点配置信息,则创建节点配置信息。20.本技术第四方面提供一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。21.本技术第五方面提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。22.本技术提供的技术方案可以包括以下有益效果:本技术的技术方案,在配置中心预先配置了配置信息,当接收到数据库变更消息后,可以将数据库变更消息中发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,可以获取配置信息中所述发生变化的数据库字段对应的缓存标识;然后根据所述变化类型,对所述缓存标识对应的缓存数据执行不同的缓存同步处理。通过上述处理,不再需要根据数据可能会更新的场景来手动编写代码去同步更新对应的内容,而是可以根据数据库变更消息及与配置中心的配置信息进行匹配的结果,自动对缓存标识对应的缓存数据执行不同的缓存同步处理,这样就能够减少或避免出现数据同步出错或数据同步不全的问题;本技术的技术方案,可以接收虚拟从库在监听到数据库发生变化后发送的数据库变更消息,也即可以利用mysql数据库的主从同步功能,通过虚拟从库的手段来实现监听数据库变化的能力。23.进一步的,本技术的技术方案,可以通过kafka的消息队列,接收所述虚拟从库作为生产者发送的数据库变更消息,也即使用kafka机制进行消息通知,充分利用kafka高吞吐量、低延迟和解耦性的特点,只要生产者和消费者数据两端遵循接口约束,就可以自行扩展或修改数据处理的业务过程。24.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。附图说明25.通过结合附图对本技术示例性实施方式进行更详细地描述,本技术的上述以及其它目的、特征和优势将变得更加明显,其中,在本技术示例性实施方式中,相同的参考标号通常代表相同部件。26.图1是本技术实施例示出的缓存数据处理方法的流程示意图;图2是本技术实施例示出的缓存数据处理方法的另一流程示意图;图3是本技术实施例示出的缓存数据处理方法的另一流程示意图;图4是本技术实施例示出的缓存数据处理方法的应用示意图;图5是本技术实施例示出的缓存数据处理装置的结构示意图;图6是本技术实施例示出的缓存数据处理装置的另一结构示意图;图7是本技术实施例示出的缓存数据处理系统的结构示意图;图8是本技术实施例示出的计算设备的结构示意图。具体实施方式27.下面将参照附图更详细地描述本技术的实施方式。虽然附图中显示了本技术的实施方式,然而应该理解,可以以各种形式实现本技术而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本技术更加透彻和完整,并且能够将本技术的范围完整地传达给本领域的技术人员。28.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。29.应当理解,尽管在本技术可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。30.相关技术的缓存数据处理方法,容易出现数据同步出错或数据同步不全的问题。针对上述问题,本技术实施例提供一种缓存数据处理方法,能够减少或避免出现数据同步出错或数据同步不全的问题率。31.以下结合附图详细描述本技术实施例的技术方案。32.图1是本技术实施例示出的缓存数据处理方法的流程示意图。33.参见图1,该方法包括:在s101中,接收数据库变更消息,其中数据库变更消息包括发生变化的数据库字段和变化类型。34.该步骤s101,可以接收虚拟从库在监听到数据库发生变化后发送的数据库变更消息,其中数据库作为主库,这样就可以利用mysql数据库的主从同步功能监听数据的动态。另外,可以是通过kafka的消息队列,接收虚拟从库作为生产者发送的数据库变更消息,这样充分利用kafka高吞吐量、低延迟和解耦性的特点。35.需说明的是,数据库变更消息中还可以包括发生变化的数据库字段的字段值。36.在s102中,将发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中发生变化的数据库字段对应的缓存标识。37.该步骤s102,可以根据发生变化的数据库字段在配置中心查找预先配置的节点和节点配置信息;在查找到节点和节点配置信息后,循环查找节点配置信息中索引对应的字段配置进行匹配;在字段匹配成功后,获取节点配置信息中的索引名称和发生变化的数据库字段对应的缓存主键id。38.在s103中,根据变化类型,对缓存标识对应的缓存数据执行不同的缓存同步处理。39.该步骤s103,可以根据数据库变更消息中的变化类型为更新事件,将缓存标识对应的缓存数据中对应字段的值更新为数据库变更消息中的字段值;或,根据变化类型为新增事件,在新增事件对应的数据库表是字段配置中主键字段所在数据库表时,在索引中新增数据,新增数据设置缓存标识,将缓存标识对应的缓存数据中对应字段的值设置为数据库变更消息中的字段值;或,根据变化类型为删除事件,在删除事件对应的数据库表是字段配置中主键字段所在数据库表时,将缓存标识对应的缓存数据删除。40.从该实施例可以看出,本技术实施例提供的技术方案,在配置中心预先配置了配置信息,当接收到数据库变更消息后,可以将数据库变更消息中发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,可以获取配置信息中发生变化的数据库字段对应的缓存标识;然后根据变化类型,对缓存标识对应的缓存数据执行不同的缓存同步处理。通过上述处理,不再需要根据数据可能会更新的场景来手动编写代码去同步更新对应的内容,而是可以根据数据库变更消息及与配置中心的配置信息进行匹配的结果,自动对缓存标识对应的缓存数据执行不同的缓存同步处理,这样就能够减少或避免出现数据同步出错或数据同步不全的问题。41.图2是本技术实施例示出的缓存数据处理方法的另一流程示意图。42.参见图2,该方法包括:在s201中,接收虚拟从库在监听到数据库发生变化后发送的数据库变更消息,其中数据库变更消息包括发生变化的数据库字段、字段值和变化类型。43.本技术实施例可以将数据库作为主库,构建虚拟从库作为从库,虚拟从库对数据库进行监听,这样利用mysql数据库的主从同步功能监听数据的动态。44.虚拟从库在监听到数据库发生变化后,作为生产者生成数据库变更消息,其中数据库变更消息包括发生变化的数据库字段、字段值和变化类型等。然后,虚拟从库可以将数据库变更消息发送到kafka的消息队列供消费者获取。45.在s202中,将数据库变更消息中的发生变化的数据库字段与配置中心预先配置的配置信息进行匹配。46.其中,配置中心预先配置的配置信息按以下方式预先配置:由配置中心获取配置页面所配置的索引名称和数据库字段,其中配置的数据库字段来自从数据库获取的数据库字段;对配置页面所配置的索引名称和数据库字段进行检查;在检查合格后,如果未存在数据库字段对应的配置节点,则为数据库字段创建节点路径并保存节点配置信息;或,如果已存在数据库字段对应的配置节点和节点配置信息,则更新节点配置信息;或,如果已存在数据库字段对应的配置节点但未存在节点配置信息,则创建节点配置信息。47.该步骤s202,从数据库变更消息获取发生变化的数据库字段,将发生变化的数据库字段与配置中心预先配置的配置信息进行匹配。例如,可以根据发生变化的数据库字段在配置中心查找预先配置的节点和节点配置信息;在查找到节点和节点配置信息后,循环查找节点配置信息中索引对应的字段配置进行匹配。48.在s203中,在匹配成功后,获取配置信息中发生变化的数据库字段对应的缓存标识。49.其中,在字段匹配成功后,可以获取节点配置信息中的索引名称和发生变化的数据库字段对应的缓存主键id。50.在s204中,根据变化类型为更新事件,将缓存标识对应的缓存数据中对应字段的值更新为数据库变更消息中的字段值。51.该步骤s204,可以根据数据库变更消息中的变化类型为更新事件,将缓存主键id对应的缓存数据中对应字段的值更新为数据库变更消息中的字段值。52.需说明的是,该实施例只是以数据库变更消息中的变化类型为更新事件进行举例说明但不局限于此。如果是数据库变更消息中的变化类型为其他事件类型,例如为新增事件或删除事件等,则执行不同的缓存同步处理。53.图3是本技术实施例示出的缓存数据处理方法的另一流程示意图,图4是本技术实施例示出的缓存数据处理方法的应用示意图。图3和图4通过数据库、配置中心、监听模块和聚合模块之间的交互进行举例说明。54.本技术实施例中,使用了elasticsearch(简称es)。es是一个分布式、高扩展、高实时的搜索与数据分析引擎,它能很方便的使大量数据具有搜索、分析和探索的能力。其中,es中的索引(index),是具有某种相似特征的文档的集合,相当于关系型数据库中的一张表,或者说相当于excel表格中的一个sheet页;es索引中的文档(document/doc),是可以被索引的基本信息单元,文档一般用json(javascriptobjectnotation,js对象简谱)表示,相当于关系型数据库中的一行记录,或者说相当于excel表格中的一行数据;es文档中的字段(field),是文档中的单个字段,一般采用key-value(键-值)格式,相当于关系型数据库中的一个字段,或者说相当于excel表格中的一个单元格。55.本技术实施例中使用zookeeper(简称zk)作为配置中心。zk是一个分布式的,开放源码的分布式应用程序协调服务,提供的功能包括:配置管理、域名服务、分布式同步、组服务等,是提供分布式同步以及集群管理的管理工具,本技术实施例主要使用zk的配置管理功能。zk一般使用树状的结构来表示节点(node),每个节点都可以储存序列化后的数据。56.本技术实施例中利用mysql数据库的主从同步功能监听数据的动态。关于mysql数据库的主从同步功能,是指当配置好主从同步后,master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。本技术实施例通过虚拟从库的手段来实现监听数据库变化的能力。另外,mysql数据库中的binlog是一个二进制格式的文件,用于记录用户对数据库更新的sql(structuredquerylanguage,结构化查询语言)语句信息,例如更改数据库表和更改内容的sql语句都会记录到binlog里,但是对数据库表等内容的查询不会记录。57.本技术实施例中使用kafka机制进行消息通知。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。kafka系统包括生产者(producer)和消费者(consumer),其中生产者负责发布消息,消费者用于读取消息。kafka的优点包括:1)解耦。kafka具备消息系统的优点,只要生产者和消费者数据两端遵循接口约束,就可以自行扩展或修改数据处理的业务过程;2)高吞吐量、低延迟。kafka也能做到每秒处理几十万条消息,而它的延迟最低只有几毫秒。58.参见图3和图4,该方法包括:在s301中,配置中心预先从数据库获取各数据表的数据库字段。59.配置中心可以预先从数据库中获取各数据表的数据库字段,将数据库中各数据表的数据库字段同步到配置中心。60.在s302中,配置中心根据各数据表的数据库字段进行信息配置,其中包括配置需要监听的各数据表的数据库字段,并发送给监听模块。61.s3021):配置中心可以通过web端(配置页面)进行信息配置,其中配置的信息可以包括以下内容但不局限于此:1、索引名称配置:es_index_name,表示此配置对应的es索引名称,具有唯一性2、字段(fields)配置:该步骤可以从各数据表的数据库字段中,确定需要监听的各数据表的数据库字段进行配置,字段配置的具体信息可以包括:es_field_name,字段名is_es_primary_field,文档主键字段database_example_name,数据库实例名database_db_name,数据库库名database_tb_name,数据库表名database_field_name,数据库字段名database_primary_name,数据库表主键名database_relate_field_name,数据库表关联字段s3022):配置中心可以通过服务端(后台)接收配置页面的配置,进行检查。62.配置中心的服务端对web端上传的配置进行检查,包括:1)检查es_index_name(索引名称)检查es_index_name(索引名称)是否存在,若索引名称存在则检查通过,若不存在则检查不通过。本技术实施例采用严格模式的检查,以防止填写错误导致索引滥用。63.2)检查对应的主键和字段名检查database_primary_name(数据库表主键名),也即检查与对应数据库的表主键是否对应,若对应则检查通过,若不对应则检查不通过;检查database_field_name(数据库字段名),也即检查数据库字段是否存在,若存在则检查通过,不存在则检查不通过。64.3)检查es文档主键检查is_es_primary_field(文档主键字段)是否有且只有一个,如果是,则检查通过,否则检查不通过。65.s3023):根据检查结果进一步进行配置,保存配置。66.循环处理fields(字段),进一步为每一个已配置的字段创建一个对应索引的配置,包括:a)查找配置中心是否有字段对应的配置节点,如果没有,则新建节点,如果有,执行b)。67.节点路径为:/《自动缓存配置根节点》/《数据库库名》/《数据库表名》/《数据库字段名》b)查找对应字段的配置节点下的节点配置信息,若对应索引名称的节点配置信息已存在则更新,若不存在则新建节点配置信息。需说明的是,同一个缓存一般只允许有一份配置。68.新建的配置可以为序列化的map格式,其中key为es索引名称,value为es索引对应的配置内容。map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,map结构提供了“值-值”的对应。69.s3024):将配置的需要监听的各数据表的数据库字段,发送给监听模块。70.在s303中,监听模块通过虚拟从库监听数据库。71.监听模块可以监听数据库动态并发送消息。监听模块可以注册虚拟数据库作为mysql数据库主从同步功能中的虚拟从库。虚拟从库可以用来接收数据库的binlog文件,binlog文件记录了用户对数据库更新的sql语句信息,从而可以知道数据库数据发生的变化。72.监听模块注册虚拟从库(slave)的内容包括:host(主机)、port(端口)、user(用户)、passwd(密码)、server(服务器)等。73.虚拟从库(slave)向数据库主库(master)请求接收binlog文件,例如可以向数据库主库(master)发送dump请求指令com_binlog_dump,以请求接收binlog文件。74.在s304中,监听模块在监听到数据库发生变化后,作为生产者生成数据库变更消息,并发送到kafka的消息队列。75.监听模块的虚拟从库(slave)接到binlogevent消息(其中携带binlog文件)后,获取binlog文件进行分析,获得发生变化的数据库字段等内容。76.然后,根据对binlog文件进行分析的结果,将发生变化的数据库字段、事件类型等内容进行组装,生成数据库变更消息,将数据库变更消息作为生产者消息通过广播的方式发送到kafka的消息队列。77.其中,数据库变更消息中组装的内容可以包括:event_type,事件类型(delete(删除)/write(新增)/update(更新))database_name,库名table_name,表名field_name,字段名field_value,字段值data_id,主键id在s305中,聚合模块作为消费者从kafka的消息队列获取数据库变更消息,将数据库变更消息中的发生变化的数据库字段与配置中心预先配置的配置信息进行匹配。78.聚合模块作为消费者(consumer)通过kafka的mq(messagequeue,消息队列)接收到虚拟从库(slave)发出的生产者消息,获取消息中的内容进行分析。79.1)聚合模块查找配置中心对应节点路径的配置:/《自动缓存配置根节点》/《数据库库名》/《数据库表名》/《数据库字段名》;若未找到节点,或节点下没有节点配置信息,忽略该消息;若找到节点,并且节点下含有节点配置信息,执行下一步骤。80.2)循环查找节点配置信息中所有索引对应的字段配置进行匹配,包括对以下内容进行完全匹配:database_db_name(数据库库名)&database_tb_name(数据库表名)&database_field_name(数据库字段名)。81.节点配置信息中包括索引以及索引对应的字段配置,可以循环查找节点配置信息中所有索引对应的字段配置进行匹配。82.在s306中,聚合模块在匹配成功后,获取配置信息中发生变化的数据库字段对应的索引名称和缓存主键id。83.若步骤s305中所有索引配置均未匹配到此数据库字段,忽略该消息;若匹配成功,代表此数据库字段的更新需要同时更新缓存。84.此时,可以获取需更新数据库字段对应的配置信息中的es_index_name(索引名称),并获取需更新数据库字段的缓存主键id(es主键id),后续以缓存主键id(es主键id)为依据更新缓存对应的数据。其中,可以包括:获取需更新数据库字段的database_relate_field_name(数据库表关联字段);获取数据库表关联字段的值也即缓存主键id(es主键id)。85.在s307中,聚合模块根据数据库变更消息中的变化类型,对缓存主键id对应的缓存数据执行不同的缓存同步处理。86.聚合模块根据数据库变更消息中的变化类型,也即根据数据库变更消息中不同的事件类型(event_type)对缓存主键id对应的缓存数据进行不同的操作,包括:1)事件类型为更新(update)事件时:获取字段配置中的es_field_name(字段名)将es_index_name(索引)下es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值更新为数据库变更消息中的field_value(字段值)。87.2)事件类型为新增(write)事件时:判断新增事件的数据库表是否是字段配置中主键字段所在数据库表;如果是字段配置中主键字段所在数据库表,则在es_index_name(索引)中新增一条数据,其中新增数据的主键id为es主键id,并将es_index_name(索引)下es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值设置为数据库变更消息中的field_value(字段值);如果不是字段配置中主键字段所在数据库表,则直接将es_index_name(索引)下的es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值设置为数据库变更消息中的field_value(字段值)。88.3)事件类型为删除(delete)事件时:判断删除事件的数据库表是否是字段配置中主键字段所在数据库表;如果是字段配置中主键字段所在数据库表,则删除es_index_name(索引)下的es主键id对应的整条缓存数据;如果不是字段配置中主键字段所在数据库表,则将es_index_name(索引)下es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值更新为《空》。89.从该示例可以看出,本技术实施例提供的方案,不再需要根据数据可能会更新的场景来手动编写代码去同步更新对应的内容,而是可以根据数据库变更消息及与配置中心的配置信息进行匹配的结果,自动对缓存标识对应的缓存数据执行不同的缓存同步处理,这样就能够减少或避免出现数据同步出错或数据同步不全的问题。而且,本技术实施例可以利用mysql数据库的主从同步功能,通过虚拟从库的手段来实现监听数据库变化的能力;以及,可以使用kafka机制进行消息通知,充分利用kafka高吞吐量、低延迟和解耦性的特点。90.与前述应用功能实现方法实施例相对应,本技术实施例还提供了一种缓存数据处理装置、系统、计算设备及相应的实施例。91.图5是本技术实施例示出的缓存数据处理装置的结构示意图。92.参见图5,一种缓存数据处理装置50,包括:接收模块501、匹配模块502、同步模块503。93.接收模块501,用于接收数据库变更消息,其中数据库变更消息包括发生变化的数据库字段和变化类型。接收模块501可以接收虚拟从库在监听到数据库发生变化后发送的数据库变更消息,其中数据库作为主库,这样就可以利用mysql数据库的主从同步功能监听数据的动态。接收模块501可以通过kafka的消息队列,接收虚拟从库作为生产者发送的数据库变更消息。94.匹配模块502,用于将发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中发生变化的数据库字段对应的缓存标识。匹配模块502可以根据发生变化的数据库字段在配置中心查找预先配置的节点和节点配置信息;在查找到节点和节点配置信息后,循环查找节点配置信息中索引对应的字段配置进行匹配;在字段匹配成功后,获取节点配置信息中的索引名称和发生变化的数据库字段对应的缓存主键id。95.同步模块503,用于根据变化类型,对缓存标识对应的缓存数据执行不同的缓存同步处理。96.从该实施例可以看出,本技术实施例提供的缓存数据处理装置,在配置中心预先配置了配置信息,当接收到数据库变更消息后,可以将数据库变更消息中发生变化的数据库字段与配置中心预先配置的配置信息进行匹配,在匹配成功后,可以获取配置信息中发生变化的数据库字段对应的缓存标识;然后根据变化类型,对缓存标识对应的缓存数据执行不同的缓存同步处理。通过上述处理,不再需要根据数据可能会更新的场景来手动编写代码去同步更新对应的内容,而是可以根据数据库变更消息及与配置中心的配置信息进行匹配的结果,自动对缓存标识对应的缓存数据执行不同的缓存同步处理,这样就能够减少或避免出现数据同步出错或数据同步不全的问题。97.图6是本技术实施例示出的缓存数据处理装置的另一结构示意图。98.参见图6,一种缓存数据处理装置50,包括:接收模块501、匹配模块502、同步模块503。接收模块501、匹配模块502、同步模块503的功能可以参见图5中的描述。99.其中,匹配模块502包括:节点查找模块5021、字段匹配模块5022、信息获取模块5023。100.节点查找模块5021,用于根据发生变化的数据库字段在配置中心查找预先配置的节点和节点配置信息;字段匹配模块5022,用于在查找到节点和节点配置信息后,循环查找节点配置信息中索引对应的字段配置进行匹配;信息获取模块5023,用于在字段匹配成功后,获取节点配置信息中的索引名称和发生变化的数据库字段对应的缓存主键id。101.其中,同步模块503包括:第一同步模块5031、第二同步模块5032、第三同步模块5033。102.第一同步模块5031,用于根据变化类型为更新事件,将缓存标识对应的缓存数据中对应字段的值更新为数据库变更消息中的字段值。例如,第一同步模块5031获取字段配置中的es_field_name(字段名)将es_index_name(索引)下es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值更新为数据库变更消息中的field_value(字段值)。103.第二同步模块5032,用于根据变化类型为新增事件,在新增事件对应的数据库表是字段配置中主键字段所在数据库表时,在索引中新增数据,新增数据设置缓存标识,将缓存标识对应的缓存数据中对应字段的值设置为数据库变更消息中的字段值。例如,第二同步模块5032判断新增事件的数据库表是否是字段配置中主键字段所在数据库表;如果是字段配置中主键字段所在数据库表,则在es_index_name(索引)中新增一条数据,其中新增数据的主键id为es主键id,并将es_index_name(索引)下es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值设置为数据库变更消息中的field_value(字段值);如果不是字段配置中主键字段所在数据库表,则直接将es_index_name(索引)下的es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值设置为数据库变更消息中的field_value(字段值)。104.第三同步模块5033,用于根据变化类型为删除事件,在删除事件对应的数据库表是字段配置中主键字段所在数据库表时,将缓存标识对应的缓存数据删除。例如,第三同步模块5033判断删除事件的数据库表是否是字段配置中主键字段所在数据库表;如果是字段配置中主键字段所在数据库表,则删除es_index_name(索引)下的es主键id对应的整条缓存数据;如果不是字段配置中主键字段所在数据库表,则将es_index_name(索引)下es主键id对应的缓存数据中对应字段的es_field_name(字段名)的值更新为《空》。105.图7是本技术实施例示出的缓存数据处理系统的结构示意图。106.参见图7,一种缓存数据处理系统70,包括:数据库701、监听模块702、配置中心703、聚合模块704。107.数据库701,用于存储数据;监听模块702,用于监听数据库,生成数据库变更消息发送给聚合模块704;配置中心703,用于预先进行配置信息的配置;聚合模块704,用于接收监听模块702发送的数据库变更消息,其中数据库变更消息包括发生变化的数据库字段和变化类型;将发生变化的数据库字段与配置中心703预先配置的配置信息进行匹配,在匹配成功后,获取配置信息中发生变化的数据库字段对应的缓存标识;根据变化类型,对缓存标识对应的缓存数据执行不同的缓存同步处理。108.其中,监听模块702通过虚拟从库监听数据库,在监听到数据库发生变化后向聚合模块704发送数据库变更消息,其中数据库作为主库。109.其中,聚合模块704作为消费者通过kafka的消息队列,接收作为生产者的监听模块702发送的数据库变更消息。110.其中,配置中心703获取配置页面所配置的索引名称和数据库字段,其中配置的数据库字段来自从数据库获取的数据库字段;对配置页面所配置的索引名称和数据库字段进行检查;在检查合格后,如果未存在数据库字段对应的配置节点,则为数据库字段创建节点路径并保存节点配置信息;或,如果已存在数据库字段对应的配置节点和节点配置信息,则更新节点配置信息;或,如果已存在数据库字段对应的配置节点但未存在节点配置信息,则创建节点配置信息。111.其中聚合模块704的功能,可以参见图5或图6中缓存数据处理装置50的描述。112.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。113.图8是本技术实施例示出的计算设备的结构示意图。114.参见图8,计算设备1000包括存储器1010和处理器1020。115.处理器1020可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。116.存储器1010可以包括各种类型的存储单元,例如系统内存、只读存储器(rom)和永久存储装置。其中,rom可以存储处理器1020或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1010可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(例如dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等)、磁性软盘等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。117.存储器1010上存储有可执行代码,当可执行代码被处理器1020处理时,可以使处理器1020执行上文述及的方法中的部分或全部。118.此外,根据本技术的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本技术的上述方法中部分或全部步骤的计算机程序代码指令。119.或者,本技术还可以实施为一种计算机可读存储介质(或非暂时性机器可读存储介质或机器可读存储介质),其上存储有可执行代码(或计算机程序或计算机指令代码),当可执行代码(或计算机程序或计算机指令代码)被电子设备(或服务器等)的处理器执行时,使处理器执行根据本技术的上述方法的各个步骤的部分或全部。120.以上已经描述了本技术的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本
技术领域
:的其他普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献