CN108874558B - 分布式事务的消息订阅方法、电子装置及可读存储介质 - Google Patents
分布式事务的消息订阅方法、电子装置及可读存储介质 Download PDFInfo
- Publication number
- CN108874558B CN108874558B CN201810546879.8A CN201810546879A CN108874558B CN 108874558 B CN108874558 B CN 108874558B CN 201810546879 A CN201810546879 A CN 201810546879A CN 108874558 B CN108874558 B CN 108874558B
- Authority
- CN
- China
- Prior art keywords
- message
- database
- log
- slave
- master
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 abstract description 16
- 230000008569 process Effects 0.000 description 18
- 230000009471 action Effects 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种分布式事务的消息订阅方法、电子装置及可读存储介质,该方法包括:获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列;将所述消息队列中的消息通知给预先订阅消息的业务系统;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。本发明由于能将数据库日志实时解析为消息发送给预先订阅消息的业务系统,通过这种消息订阅的方式能保证分布式事务处理的低延时,提高了系统的可用性和性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式事务的消息订阅方法、电子装置及可读存储介质。
背景技术
在业务开发中,很多场景需要解决分布式事务中数据一致性问题。造成数据不一致的原因一般是延时引起的,所以要消除这个延时的影响。现有的解决方案都是从主库进行CUD操作时进行规避,就是等主、从数据库同步完成之后,主数据库上的写请求再返回。这种方式会大大降低系统的可用性和性能。
发明内容
本发明的目的在于提供一种分布式事务的消息订阅方法、电子装置及可读存储介质,旨在提高系统的可用性和性能。
为实现上述目的,本发明提供一种电子装置,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的分布式事务的消息订阅系统,所述分布式事务的消息订阅系统被所述处理器执行时实现如下步骤:
获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;
将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列;
将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。
优选地,所述分布式事务的消息订阅系统被所述处理器执行实现所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤时,包括:
获取主数据库、从数据库的位置;
根据所述主数据库、从数据库的位置向所述主数据库、从数据库发送日志获取指令;
获取所述主数据库、从数据库在进行数据操作时产生的主数据库日志、从数据库日志;
所述将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列的步骤包括:
将获取的主数据库日志、从数据库日志传递至预先设定的内存队列;
将所述预先设定的内存队列中的主数据库日志、从数据库日志转换为消息并形成消息队列。
优选地,预先将所述主数据库和从数据库对应设置类别Topic,将所述主数据库和从数据库作为消息数据生产者Producer,将所述业务系统作为消息数据消费者Consumer;所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤包括:
获取消息数据生产者Producer发布的数据库日志,并按对应的类别Topic进行保存;
所述将所述消息队列中的消息通知给预先订阅消息的业务系统的步骤包括:
将所述消息队列中的消息通知给预先订阅了类别Topic消息的消息数据消费者Consumer。
优选地,在所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤之后,所述处理器还用于执行所述分布式事务的消息订阅系统,以实现以下步骤:
利用分布式一致性算法Paxos将主数据库日志和从数据库日志协调到最终达成一致。
此外,为实现上述目的,本发明还提供一种分布式事务的消息订阅方法,所述分布式事务的消息订阅方法包括:
获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;
将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列;
将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。
优选地,所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤包括:
获取主数据库、从数据库的位置;
根据所述主数据库、从数据库的位置向所述主数据库、从数据库发送日志获取指令;
获取所述主数据库、从数据库在进行数据操作时产生的主数据库日志、从数据库日志;
所述将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列的步骤包括:
将获取的主数据库日志、从数据库日志传递至预先设定的内存队列;
将所述预先设定的内存队列中的主数据库日志、从数据库日志转换为消息并形成消息队列。
优选地,预先将所述主数据库和从数据库对应设置类别Topic,将所述主数据库和从数据库作为消息数据生产者Producer,将所述业务系统作为消息数据消费者Consumer;所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤包括:
获取消息数据生产者Producer发布的数据库日志,并按对应的类别Topic进行保存;
所述将所述消息队列中的消息通知给预先订阅消息的业务系统的步骤包括:
将所述消息队列中的消息通知给预先订阅了类别Topic消息的消息数据消费者Consumer。
优选地,所述在获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤之后,还包括:
利用分布式一致性算法Paxos将主数据库日志和从数据库日志协调到最终达成一致。
优选地,当所述用户指令为提交订单指令时,所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作为向主数据库、从数据库中加入订单数据操作,所述将所述消息队列中的消息通知给预先订阅消息的业务系统的步骤包括:
将所述消息队列中已完成向主数据库和/或从数据库中加入订单数据操作的消息通知给预先订阅消息的业务系统,以将已完成向主数据库和/或从数据库中加入订单数据操作的消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有分布式事务的消息订阅系统,所述分布式事务的消息订阅系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述的分布式事务的消息订阅方法的步骤。
本发明提出的分布式事务的消息订阅方法、电子装置及可读存储介质,通过将主数据库日志和从数据库日志解析为消息,根据解析的消息形成消息队列;并将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑。由于能将数据库日志实时解析为消息发送给预先订阅消息的业务系统,通过这种消息订阅的方式能保证分布式事务处理的低延时,提高了系统的可用性和性能。
附图说明
图1为本发明分布式事务的消息订阅系统10较佳实施例的运行环境示意图;
图2为本发明分布式事务的消息订阅方法一实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种分布式事务的消息订阅系统。请参阅图1,是本发明分布式事务的消息订阅系统10较佳实施例的运行环境示意图。
在本实施例中,所述的分布式事务的消息订阅系统10安装并运行于电子装置1中。该电子装置1可包括,但不仅限于,存储器11、处理器12及显示器13。图1仅示出了具有组件11-13的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器11为至少一种类型的可读计算机存储介质,所述存储器11在一些实施例中可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。所述存储器11在另一些实施例中也可以是所述电子装置1的外部存储设备,例如所述电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括外部存储设备。所述存储器11用于存储安装于所述电子装置1的应用软件及各类数据,例如所述分布式事务的消息订阅系统10的程序代码等。所述存储器11还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或处理数据,例如执行所述分布式事务的消息订阅系统10等。
所述显示器13在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器13用于显示在所述电子装置1中处理的信息以及用于显示可视化的用户界面,例如解析出的消息、消息队列、反馈给用户的消息等。所述电子装置1的部件11-13通过系统总线相互通信。
分布式事务的消息订阅系统10包括至少一个存储在所述存储器11中的计算机可读指令,该至少一个计算机可读指令可被所述处理器12执行,以实现本申请各实施例。在一种可选的实施方式中,本实施例中的分布式事务的消息订阅系统10可以是分布式发布订阅消息系统:Apache Kafka。
其中,上述分布式事务的消息订阅系统10被所述处理器12执行时实现如下步骤:
步骤S1,获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;
步骤S2,将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列;
步骤S3,将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。
本实施例中提供一种分布式事务的消息订阅系统,其中,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。本实施例中,在数据库(主数据库、从数据库等)、业务系统之间加入了消息订阅系统,该消息订阅系统可获取业务执行中数据库的数据库日志,并将数据库日志解析为消息,再将解析的消息加入到预设的消息队列中,订阅了消息的业务系统可从预设的消息队列中获取对应的消息,并根据获取的消息将业务反馈给用户,以执行下一步业务逻辑。
具体的,本实施例中数据库包括主数据库和从数据库,客户端用户在业务系统上执行业务行为(如下订单、支付订单等)后,业务系统会对后台的数据库如主数据库和从数据库进行数据操作(如增加数据、删减数据等),数据操作中会产生主数据库日志、从数据库日志。消息订阅系统获取主数据库日志、从数据库日志,并将主数据库日志、从数据库日志解析为消息,将消息加入到预设的消息队列中,并将消息队列中的消息通知给业务系统,业务系统获知消息后可反馈给客户端用户,客户端用户即可根据反馈的业务消息执行下一步业务。例如,客户端用户在业务系统上执行“提交订单”业务行为时,业务系统在后台订单数据库里做相应的数据库操作,如在订单数据库主数据库中加入一条订单数据,订单数据库主数据库与订单数据库从数据库进行数据同步,在此过程中,订单数据库主数据库与订单数据库从数据库上均会生成相应的数据库日志,消息订阅系统获取订单数据库主数据库和订单数据库从数据库的数据库日志,并将数据库日志解析成Message即消息,通信的基本单位。将“提交订单”的相关消息加入到预设的消息队列中,并将消息队列中的消息通知给已预先在消息订阅系统上订阅了“提交订单”消息的业务系统,业务系统获取消息队列中推送的消息,当业务系统获取到由数据库日志解析的“订单已加入数据库”的消息,则业务系统确认订单已成功下单,将“订单已成功下单”的消息反馈给客户端用户,则客户端用户即可根据反馈的消息执行下一步业务“支付订单”。由于通过消息订阅系统可及时将数据库的数据库日志解析为消息通知给业务系统,以及时处理下一业务逻辑,而无需等待主数据库和从数据库的同步完成之后再处理下一业务逻辑,极大地提高了系统的可用性和性能。
在一种可选的实施方式中,本实施例中的消息订阅系统可以是分布式发布订阅消息系统—Apache Kafka,Kafka是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据。每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。本实施例中,可针对不同类别的数据库对应设置一个Topic,后期在将数据库日志解析为消息放入消息队列时,可将同一个Topic的消息放入同一条消息队列中,以便于区分和管理。本实施例中主数据库和从数据库可作为Producer:消息数据生产者,向Kafka的一个topic发布消息的过程叫做producer。本实施例中能从消息队列中获取消息的业务系统作为Consumer:消息数据消费者,订阅topics并处理其发布的消息的过程叫做consumer。本实施例中利用Kafka作为消息订阅系统应用在消息队列应用场景中,比起大多数的消息系统来说,Kafka有更好的吞吐量,内置的分区,冗余及容错性,Kafka提供一种很好的大规模消息处理应用的解决方案。本实施例中,在对数据库日志的日志收集方案上,一种可选的实施方案可以利用Scribe、Apache Flume等开源产品。另一种可选的方案中也可使用Kafka代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或HDFS)进行处理。本实施例中采用ApacheKafka作为消息订阅系统,Kafka能忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。使得Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。
在一种可选的实施方式中,消息订阅系统获取主数据库日志、从数据库日志并进行解析的流程如下:
消息订阅系统包括连接层、日志解析层等。首先消息订阅系统的连接层获取解析位置如主数据库、从数据库的位置,然后连接层向主数据库、从数据库发送获取日志指令,主数据库、从数据库在根据业务系统的业务执行情况进行数据操作产生数据库日志时,将生成的数据库日志推送至连接层,连接层将数据库日志发送至消息订阅系统的日志解析层,日志解析层将收到的数据库日志传递至预先设定好的内存队列,然后再将内存队列中的数据库日志转换为消息并形成消息队列。最后将消息队列中的消息通知到预先在消息订阅系统上订阅消息的业务系统。
本实施例中通过订阅消息的方式实现分布式事务解耦,开发中无需考虑数据库DB层面的分布式事务,能通过消息订阅系统将数据库日志实时解析为消息,实现低延时。通过消息订阅系统可实时进行数据日志传输,提供灵活的订阅配置,实时生效,能保证毫秒级的数据延迟。
与现有技术相比,本实施例通过将主数据库日志和从数据库日志解析为消息,根据解析的消息形成消息队列;并将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑。由于能将数据库日志实时解析为消息发送给预先订阅消息的业务系统,通过这种消息订阅的方式能保证分布式事务处理的低延时,提高了系统的可用性和性能。
在一可选的实施例中,在上述图1的实施例的基础上,所述分布式事务的消息订阅系统10被所述处理器12执行时,还实现如下步骤:
利用分布式一致性算法Paxos将主数据库日志和从数据库日志协调到最终达成一致。
本实施例中消息订阅系统在获取到主数据库日志和从数据库日志后,还可利用分布式一致性算法Paxos使主数据库日志和从数据库日志协调到最终达成一致。其中,Paxos算法是一种基于消息传递的一致性算法。Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。可以通过Paxos实现多副本一致性,分布式锁,名字管理,序列号分配等。例如,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么它们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。本实施例中,利用分布式一致性算法Paxos将主数据库日志和从数据库日志协调到最终达成一致,以保证分布式事务处理中,每个节点获取的主数据库日志和从数据库日志为一致的。
如图2所示,图2为本发明分布式事务的消息订阅方法一实施例的流程示意图,该分布式事务的消息订阅方法包括以下步骤:
步骤S10,获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;
步骤S20,将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列;
步骤S30,将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。
本实施例中提供一种分布式事务的消息订阅方法,其中,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。本实施例中,在数据库(主数据库、从数据库等)、业务系统之间加入了消息订阅系统,该消息订阅系统可获取业务执行中数据库的数据库日志,并将数据库日志解析为消息,再将解析的消息加入到预设的消息队列中,订阅了消息的业务系统可从预设的消息队列中获取对应的消息,并根据获取的消息将业务反馈给用户,以执行下一步业务逻辑。
具体的,本实施例中数据库包括主数据库和从数据库,客户端用户在业务系统上执行业务行为(如下订单、支付订单等)后,业务系统会对后台的数据库如主数据库和从数据库进行数据操作(如增加数据、删减数据等),数据操作中会产生主数据库日志、从数据库日志。消息订阅系统获取主数据库日志、从数据库日志,并将主数据库日志、从数据库日志解析为消息,将消息加入到预设的消息队列中,并将消息队列中的消息通知给业务系统,业务系统获知消息后可反馈给客户端用户,客户端用户即可根据反馈的业务消息执行下一步业务。例如,客户端用户在业务系统上执行“提交订单”业务行为时,业务系统在后台订单数据库里做相应的数据库操作,如在订单数据库主数据库中加入一条订单数据,订单数据库主数据库与订单数据库从数据库进行数据同步,在此过程中,订单数据库主数据库与订单数据库从数据库上均会生成相应的数据库日志,消息订阅系统获取订单数据库主数据库和订单数据库从数据库的数据库日志,并将数据库日志解析成Message即消息,通信的基本单位。将“提交订单”的相关消息加入到预设的消息队列中,并将消息队列中的消息通知给已预先在消息订阅系统上订阅了“提交订单”消息的业务系统,业务系统获取消息队列中推送的消息,当业务系统获取到由数据库日志解析的“订单已加入数据库”的消息,则业务系统确认订单已成功下单,将“订单已成功下单”的消息反馈给客户端用户,则客户端用户即可根据反馈的消息执行下一步业务“支付订单”。由于通过消息订阅系统可及时将数据库的数据库日志解析为消息通知给业务系统,以及时处理下一业务逻辑,而无需等待主数据库和从数据库的同步完成之后再处理下一业务逻辑,极大地提高了系统的可用性和性能。
在一种可选的实施方式中,本实施例中的消息订阅系统可以是分布式发布订阅消息系统—Apache Kafka,Kafka是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据。每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。本实施例中,可针对不同类别的数据库对应设置一个Topic,后期在将数据库日志解析为消息放入消息队列时,可将同一个Topic的消息放入同一条消息队列中,以便于区分和管理。本实施例中主数据库和从数据库可作为Producer:消息数据生产者,向Kafka的一个topic发布消息的过程叫做producer。本实施例中能从消息队列中获取消息的业务系统作为Consumer:消息数据消费者,订阅topics并处理其发布的消息的过程叫做consumer。本实施例中利用Kafka作为消息订阅系统应用在消息队列应用场景中,比起大多数的消息系统来说,Kafka有更好的吞吐量,内置的分区,冗余及容错性,Kafka提供一种很好的大规模消息处理应用的解决方案。本实施例中,在对数据库日志的日志收集方案上,一种可选的实施方案可以利用Scribe、Apache Flume等开源产品。另一种可选的方案中也可使用Kafka代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或HDFS)进行处理。本实施例中采用ApacheKafka作为消息订阅系统,Kafka能忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。使得Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。
在一种可选的实施方式中,消息订阅系统获取主数据库日志、从数据库日志并进行解析的流程如下:
消息订阅系统包括连接层、日志解析层等。首先消息订阅系统的连接层获取解析位置如主数据库、从数据库的位置,然后连接层向主数据库、从数据库发送获取日志指令,主数据库、从数据库在根据业务系统的业务执行情况进行数据操作产生数据库日志时,将生成的数据库日志推送至连接层,连接层将数据库日志发送至消息订阅系统的日志解析层,日志解析层将收到的数据库日志传递至预先设定好的内存队列,然后再将内存队列中的数据库日志转换为消息并形成消息队列。最后将消息队列中的消息通知到预先在消息订阅系统上订阅消息的业务系统。
本实施例中通过订阅消息的方式实现分布式事务解耦,开发中无需考虑数据库DB层面的分布式事务,能通过消息订阅系统将数据库日志实时解析为消息,实现低延时。通过消息订阅系统可实时进行数据日志传输,提供灵活的订阅配置,实时生效,能保证毫秒级的数据延迟。
与现有技术相比,本实施例通过将主数据库日志和从数据库日志解析为消息,根据解析的消息形成消息队列;并将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑。由于能将数据库日志实时解析为消息发送给预先订阅消息的业务系统,通过这种消息订阅的方式能保证分布式事务处理的低延时,提高了系统的可用性和性能。
在一可选的实施例中,在上述实施例的基础上,所述分布式事务的消息订阅方法还包括如下步骤:
利用分布式一致性算法Paxos将主数据库日志和从数据库日志协调到最终达成一致。
本实施例中消息订阅系统在获取到主数据库日志和从数据库日志后,还可利用分布式一致性算法Paxos使主数据库日志和从数据库日志协调到最终达成一致。其中,Paxos算法是一种基于消息传递的一致性算法。Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。可以通过Paxos实现多副本一致性,分布式锁,名字管理,序列号分配等。例如,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么它们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。本实施例中,利用分布式一致性算法Paxos将主数据库日志和从数据库日志协调到最终达成一致,以保证分布式事务处理中,每个节点获取的主数据库日志和从数据库日志为一致的。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有分布式事务的消息订阅系统,所述分布式事务的消息订阅系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述实施例中的分布式事务的消息订阅方法的步骤,该分布式事务的消息订阅方法的步骤S10、S20、S30等具体实施过程如上文所述,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (8)
1.一种电子装置,其特征在于,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的分布式事务的消息订阅系统,所述分布式事务的消息订阅系统被所述处理器执行时实现如下步骤:
获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;
利用分布式一致性算法Paxos将所述主数据库日志和从数据库日志协调到一致;
将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列,针对不同类别的数据库对应设置一个类别,在将数据库日志解析为消息放入消息队列时,将同一个类别的消息放入同一条消息队列中;
将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。
2.如权利要求1所述的电子装置,其特征在于,所述分布式事务的消息订阅系统被所述处理器执行实现所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤时,包括:
获取主数据库、从数据库的位置;
根据所述主数据库、从数据库的位置向所述主数据库、从数据库发送日志获取指令;
获取所述主数据库、从数据库在进行数据操作时产生的主数据库日志、从数据库日志;
所述将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列的步骤包括:
将获取的主数据库日志、从数据库日志传递至预先设定的内存队列;
将所述预先设定的内存队列中的主数据库日志、从数据库日志转换为消息并形成消息队列。
3.如权利要求1或2所述的电子装置,其特征在于,预先将所述主数据库和从数据库对应设置类别Topic,将所述主数据库和从数据库作为消息数据生产者Producer,将所述业务系统作为消息数据消费者Consumer;所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤包括:
获取消息数据生产者Producer发布的数据库日志,并按对应的类别Topic进行保存;
所述将所述消息队列中的消息通知给预先订阅消息的业务系统的步骤包括:
将所述消息队列中的消息通知给预先订阅了类别Topic消息的消息数据消费者Consumer。
4.一种分布式事务的消息订阅方法,其特征在于,所述分布式事务的消息订阅方法包括:
获取主数据库发送的主数据库日志和从数据库发送的从数据库日志;
利用分布式一致性算法Paxos将所述主数据库日志和从数据库日志协调到一致;
将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列,针对不同类别的数据库对应设置一个类别,在将数据库日志解析为消息放入消息队列时,将同一个类别的消息放入同一条消息队列中;
将所述消息队列中的消息通知给预先订阅消息的业务系统,以将消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑;其中,所述主数据库日志、从数据库日志为所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作产生的数据库日志。
5.如权利要求4所述的分布式事务的消息订阅方法,其特征在于,所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤包括:
获取主数据库、从数据库的位置;
根据所述主数据库、从数据库的位置向所述主数据库、从数据库发送日志获取指令;
获取所述主数据库、从数据库在进行数据操作时产生的主数据库日志、从数据库日志;
所述将获取的主数据库日志和从数据库日志解析为消息,并根据解析的消息形成消息队列的步骤包括:
将获取的主数据库日志、从数据库日志传递至预先设定的内存队列;
将所述预先设定的内存队列中的主数据库日志、从数据库日志转换为消息并形成消息队列。
6.如权利要求4或5所述的分布式事务的消息订阅方法,其特征在于,预先将所述主数据库和从数据库对应设置类别Topic,将所述主数据库和从数据库作为消息数据生产者Producer,将所述业务系统作为消息数据消费者Consumer;所述获取主数据库发送的主数据库日志和从数据库发送的从数据库日志的步骤包括:
获取消息数据生产者Producer发布的数据库日志,并按对应的类别Topic进行保存;
所述将所述消息队列中的消息通知给预先订阅消息的业务系统的步骤包括:
将所述消息队列中的消息通知给预先订阅了类别Topic消息的消息数据消费者Consumer。
7.如权利要求6所述的分布式事务的消息订阅方法,其特征在于,当所述用户指令为提交订单指令时,所述业务系统根据用户指令对所述主数据库、从数据库进行相应的数据操作为向主数据库、从数据库中加入订单数据操作,所述将所述消息队列中的消息通知给预先订阅消息的业务系统的步骤包括:
将所述消息队列中已完成向主数据库和/或从数据库中加入订单数据操作的消息通知给预先订阅消息的业务系统,以将已完成向主数据库和/或从数据库中加入订单数据操作的消息反馈给所述业务系统的用户,便于用户根据反馈的消息执行下一步业务逻辑。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式事务的消息订阅系统,所述分布式事务的消息订阅系统被处理器执行时实现如权利要求4至7中任一项所述的分布式事务的消息订阅方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810546879.8A CN108874558B (zh) | 2018-05-31 | 2018-05-31 | 分布式事务的消息订阅方法、电子装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810546879.8A CN108874558B (zh) | 2018-05-31 | 2018-05-31 | 分布式事务的消息订阅方法、电子装置及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874558A CN108874558A (zh) | 2018-11-23 |
CN108874558B true CN108874558B (zh) | 2024-04-02 |
Family
ID=64335977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810546879.8A Active CN108874558B (zh) | 2018-05-31 | 2018-05-31 | 分布式事务的消息订阅方法、电子装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874558B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109725987A (zh) * | 2018-12-15 | 2019-05-07 | 深圳壹账通智能科技有限公司 | 一种分布式事务一致性解决方法及相关设备 |
CN110045925A (zh) * | 2019-03-05 | 2019-07-23 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备和计算机可读存储介质 |
CN109857410B (zh) * | 2019-03-06 | 2022-03-25 | 广东三维家信息科技有限公司 | 消息队列的云水刀处理方法和系统 |
CN110647385A (zh) * | 2019-08-23 | 2020-01-03 | 南京万米信息技术有限公司 | 分布式事务的执行方法和装置、系统 |
CN110674105A (zh) * | 2019-08-30 | 2020-01-10 | 中国人民财产保险股份有限公司 | 一种数据备份方法、系统及服务器 |
CN111064610B (zh) * | 2019-12-10 | 2023-01-03 | 广州品唯软件有限公司 | 日志文件的订阅方法、终端设备及存储介质 |
CN111143465A (zh) * | 2019-12-11 | 2020-05-12 | 深圳市中电数通智慧安全科技股份有限公司 | 一种数据中台的实现方法、装置以及电子设备 |
CN111258971A (zh) * | 2020-01-10 | 2020-06-09 | 北京农信互联科技集团有限公司 | 一种基于访问日志的应用状态监控报警系统及方法 |
CN111639132B (zh) * | 2020-05-29 | 2023-06-06 | 中国联合网络通信集团有限公司 | 日志同步方法及设备 |
CN112632017A (zh) * | 2020-11-05 | 2021-04-09 | 北京乐学帮网络技术有限公司 | 数据库日志的处理方法、装置以及电子设备、存储介质 |
CN112948342A (zh) * | 2021-02-25 | 2021-06-11 | 杭州沃趣科技股份有限公司 | 一种基于日志解析系统的数据处理方法 |
CN113015203B (zh) * | 2021-03-22 | 2022-08-16 | Oppo广东移动通信有限公司 | 信息获取方法、装置、终端、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN107038162A (zh) * | 2016-02-03 | 2017-08-11 | 滴滴(中国)科技有限公司 | 基于数据库日志的实时数据查询方法和系统 |
-
2018
- 2018-05-31 CN CN201810546879.8A patent/CN108874558B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN107038162A (zh) * | 2016-02-03 | 2017-08-11 | 滴滴(中国)科技有限公司 | 基于数据库日志的实时数据查询方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108874558A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874558B (zh) | 分布式事务的消息订阅方法、电子装置及可读存储介质 | |
CN107958010B (zh) | 用于在线数据迁移的方法及系统 | |
US8762929B2 (en) | System and method for exclusion of inconsistent objects from lifecycle management processes | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN110515912A (zh) | 日志处理方法、装置、计算机装置及计算机可读存储介质 | |
CN103077108B (zh) | 一种对浏览器崩溃进行预警的方法和系统 | |
CN113220431B (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN112286806A (zh) | 自动化测试方法、装置、存储介质及电子设备 | |
CN111966943A (zh) | 流式数据分发方法和系统 | |
CN111784318A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN110737655B (zh) | 用于上报数据的方法和装置 | |
US20210358013A1 (en) | Processing documents | |
US11935004B2 (en) | Reading and writing processing improvements as a single command | |
US20220044144A1 (en) | Real time model cascades and derived feature hierarchy | |
US20240028663A1 (en) | Web site generation based on streams of data records | |
US20210149709A1 (en) | Method and apparatus for processing transaction | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN115617480A (zh) | 一种任务调度方法、装置、系统及存储介质 | |
US11537455B2 (en) | Schema management using an event stream | |
US20140172955A1 (en) | Distributed mobile enterprise application platform | |
CN108566293B (zh) | 电子装置、zk节点信息通知方法及存储介质 | |
CN112015534A (zh) | 配置化平台调度方法、系统及存储介质 | |
CN115460077B (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 |