CN113596117A - 实时数据处理方法、系统、设备及介质 - Google Patents

实时数据处理方法、系统、设备及介质 Download PDF

Info

Publication number
CN113596117A
CN113596117A CN202110797741.7A CN202110797741A CN113596117A CN 113596117 A CN113596117 A CN 113596117A CN 202110797741 A CN202110797741 A CN 202110797741A CN 113596117 A CN113596117 A CN 113596117A
Authority
CN
China
Prior art keywords
real
time
data
subscription
time data
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.)
Granted
Application number
CN202110797741.7A
Other languages
English (en)
Other versions
CN113596117B (zh
Inventor
金晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qiyu Information Technology Co Ltd
Original Assignee
Beijing Qiyu Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qiyu Information Technology Co Ltd filed Critical Beijing Qiyu Information Technology Co Ltd
Priority to CN202110797741.7A priority Critical patent/CN113596117B/zh
Publication of CN113596117A publication Critical patent/CN113596117A/zh
Application granted granted Critical
Publication of CN113596117B publication Critical patent/CN113596117B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0246Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
    • H04L41/0253Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using browsers or web-pages for accessing management information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及数据处理及传输领域,旨在解决如何将海量数据实时消费到需求方的技术问题。为此,本发明提供了一种实时数据处理方法、系统、设备及介质,通过特定的多主多从的架构设计实时数据订阅平台,并通过根据一个或多个实时数据需求,创建一个或多个实时任务;通过执行每个所述实时任务,获得需求的所述实时数据并发送给对应的实时数据需求方等处理。从而减小了现有实时数据的传输延迟,提高了用户体验,通过负载均衡提高了系统的性能,适合多种场景和系统,简单操作维护成本低效率高。

Description

实时数据处理方法、系统、设备及介质
技术领域
本发明涉及数据处理及传输领域,具体而言,涉及一种实时数据处理方法、系统、设备及介质。
背景技术
在数据处理传输领域中,实时数据广泛应用于多种场合,尤其是实时数据订阅到下游消费和分析。一个大集团内部对实时数据订阅需求更希望能满足实时性需求。而一般实时订阅、消费,需要通过采集、解析、再发送消费的过程,从而将数据实时传递到订阅方,例如消息队列或者客户端,实现对海量数据的实时处理、分析和传输,这样对时间性能要求高的情况来说,访问数据、获取数据、解析数据等过程都容易带来数据延迟,导致整个数据订阅的系统性能较低、并且用户的体验较差。已知的实时数据订阅方式主要有两种,一种是开源的maxwell方案,其建立的平台可以在功能上满足实时数据订阅的大部分功能,但是并不支持高可用、不支持负载均衡、并且运维和监控困难;另一种是开源的canal方案,其建立的平台可以利用canal的优势,实现深度优化和开发,但是会存在部分单点的情况,性能比较低。
因而,需要改进数据订阅的方案,提高实时数据订阅的处理、传输的效率,提升构建的实时订阅平台的整体性能,降低传输延迟,进而在提高实时数据时效性的同时简化运维监控方式,降低复杂性和成本,实现高可用、高并发、高稳定性的实时数据订阅。
发明内容
针对现有技术中的上述缺陷,本发明提供了一种实时数据处理方法、系统、设备及介质,旨在解决如何将海量数据实时消费到需求方的技术问题;进一步,解决如何利用在实时数据订阅过程中提升实时数据处理和传输的效率的技术问题以提升整体实时订阅的性能、时效、降低延迟;进一步,解决如何简化运维和监控复杂度的技术问题以降低成本、提升实时数据订阅的稳定性、可用性。
为了解决上述技术问题,本发明第一方面提出一种实时数据处理方法,包括:根据一个或多个实时数据需求,创建一个或多个实时任务;通过执行每个所述实时任务,获得需求的所述实时数据并发送给对应的实时数据需求方。
根据本发明的一种优选实施方式,根据一个或多个实时数据需求,创建一个或多个实时任务,具体包括:接收来自实时数据需求方的订阅请求,其中每个订阅请求包含一个或多个实时数据需求;对所述实时数据需求方认证后,建立对应的控制节点;所述控制节点发送一个或多个实时任务的创建命令;基于所述创建命令创建一个或多个实时任务。
根据本发明的一种优选实施方式,所述实时数据需求方包括:与实时订阅平台连接、获得订阅数据的消息队列集群和/或客户端;所述实时数据需求包括:实时数据订阅需求;对所述实时数据需求方认证,具体包括:由实时订阅平台对所述消息队列集群和/或客户端进行认证,建立对应所述消息队列集群和/或客户端的、或者建立对应所述实时数据订阅需求的一个或多个控制节点;所述控制节点发送一个或多个实时任务的创建命令,具体包括:所述控制节点发送所述创建命令到实时订阅平台的数据订阅集群;根据所述创建命令创建一个或多个实时任务,具体包括:所述数据订阅集群中的一个或多个服务节点启动后,接收所述创建命令;每个所述服务节点创建对应一个或多个实时数据订阅需求的一个或多个所述实时任务。
根据本发明的一种优选实施方式,一个所述实时任务包括仅能运行于一个服务节点上的具有生命周期的实时数据订阅任务;所述实时数据订阅任务包括:采集线程、分析线程、缓存区、汇聚线程;执行每个所述实时任务,以获得需求的所述实时数据并发送给对应的实时数据需求方,具体包括:采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区;由汇聚线程消费所述缓存区的数据并发送到实时数据需求方。
根据本发明的一种优选实施方式,在实时订阅平台的一个数据订阅集群Cluster下设有多个服务节点Server,在一个Server上能运行一个或多个实时数据订阅任务Instance;在实时订阅平台上具有一个或多个控制节点Admin,对数据订阅集群Cluster、服务节点Server、实时数据订阅任务 Instance的生命周期进行管理维护,将实时数据订阅任务Instance任务化在每个服务节点Server上运行,使用LVS负载均衡,以及共用元数据业务库MySQL;所述数据订阅集群Cluster负责其服务节点Server以及实时数据订阅任务Instance的集群化配置管理。
根据本发明的一种优选实施方式,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区,具体包括:利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,由多个parser线程并行处理所述二进制数据,以及将所述数据分析为event对象后存储在 Store区中作为内部数据通道;由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,具体包括:由sink线程并发实时消费所述Store区中的数据后,发送到订阅数据的消息队列集群。
根据本发明的一种优选实施方式,利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,具体包括:通过dump 协议线程循环请求元数据业务库MySQL的实例,从指定位点拉取二进制数据;其中,一个实时数据订阅任务Instance对应一个被订阅的MySQL 实例;其中,位点表示一个binlog的位置;其中,如果是第一次启动且没有配置初始化位点则从最新的位点开始,否则从分布式协调服务 Zookeeper记录的上次的位点开始。
根据本发明的一种优选实施方式,还包括:通过单击模式和/或集群模式启动服务节点Server;其中,集群模式包括通过Cluster读取配置信息实现启动;和/或,所述服务节点Server代表一个运行的实例,其对应一个 java虚拟机jvm;和/或,所述控制节点Admin维护服务节点Server和实时数据订阅任务Instance的状态;和/或,采用MataManager管理每个实时数据订阅任务Instance,将其状态信息和消费的位点信息更新到分布式协调服务Zookeeper;和/或,由sink线程并发实时消费所述Store区中的数据时,保持与binlog数据的时序一致;和/或,所述消息队列集群为Kafka 消息队列集群;和/或,通过监控平台对实时订阅平台实时采集并监控平台指标、和/或推送告警信息。
本发明的第二发明提出一种实时数据处理系统,包括:分别连接业务库和实时数据需求方的实时订阅平台;实时订阅平台根据来自实时数据需求方的一个或多个实时数据订阅需求,创建一个或多个实时任务;实时订阅平台执行每个实时任务,以从所述业务库获得对应实时任务的实时数据并发送给对应的实时数据需求方。
根据本发明的一种优选实施方式,实时订阅平台根据来自实时数据需求方的一个或多个实时数据订阅需求,创建一个或多个实时任务,具体包括:所述实时订阅平台接收来自一个或多个实时数据需求方的订阅请求;其中,每个订阅请求包含一个或多个实时数据订阅需求;所述实时订阅平台对所述实时数据需求方认证后,建立控制节点;所述控制节点发送一个或多个实时任务的创建命令给所述实时订阅平台的数据订阅集群;数据订阅集群下的一个或个服务节点在启动后接收所述创建命令;每个服务节点根据所述创建命令创建对应一个或多个实时数据订阅需求的一个或多个所述实时任务。
根据本发明的一种优选实施方式,所述实时数据需求方包括消息队列集群和/或客户端;所述控制节点包括:对应所述消息队列集群和/或客户端的的一个或多个控制节点,或者,对应所述实时数据订阅需求的一个或多个控制节点;一个所述实时任务对应业务库中的被订阅的一个实例,并且仅能运行于一个服务节点上。
根据本发明的一种优选实施方式,所述实时任务包括实时数据订阅任务;所述实时数据订阅任务包括:采集线程、分析线程、缓存区、和/或汇聚线程;实时订阅平台执行每个实时任务,以从所述业务库获得对应实时任务的实时数据并发送给对应的实时数据需求方,具体包括:所述实时数据订阅任务在服务节点上运行时,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区;由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,完成订阅的数据流向。
根据本发明的一种优选实施方式,还包括:所述实时订阅平台的数据订阅集群为Cluster、服务节点为Server、所述实时数据订阅任务为Instance;数据订阅集群为Cluster负责其服务节点Server以及实时数据订阅任务 Instance的集群化配置管理;通过单击模式和/或集群模式启动服务节点Server;其中,集群模式包括通过Cluster读取配置信息实现启动;所述业务库为元数据业务库MySQL;实时数据需求方采用消息队列集群时,为Kafka消息队列集群;所述实时订阅平台上建立的控制节点Admin,对数据订阅集群Cluster、服务节点Server和实时数据订阅任务Instance的生命周期、以及对服务节点Server和实时数据订阅任务Instance的状态进行管理维护,将实时数据订阅任务Instance任务化在每个服务节点Server上运行,使用LVS负载均衡,并且,共用元数据业务库MySQL;采用 MataManager管理每个实时数据订阅任务Instance,将其状态信息和消费的位点信息更新到分布式协调服务Zookeeper;和/或,通过监控平台对实时订阅平台实时采集并监控平台指标、和/或推送告警信息。
根据本发明的一种优选实施方式,其中,采集线程为MySQL的dump 协议线程、分析线程为parser线程、缓存区为Store区、和/或汇聚线程为 sink线程;其中,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区,包括:利用MySQL的dump协议线程从元数据业务库MySQL 的binlog采集二进制数据,由多个parser线程并行处理所述二进制数据,以及将所述数据分析为event对象后存储在Store区中作为内部数据通道;其中,由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,包括:由sink线程并发实时消费所述Store区中的数据后,发送到订阅数据的消息队列集群;其中,由sink线程并发实时消费所述Store区中的数据时,保持与binlog数据的时序一致;其中,所述监控平台的架构采用Protheus 和Grafanna。
根据本发明的一种优选实施方式,利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,具体包括:通过dump 协议线程循环请求元数据业务库MySQL的实例,从指定位点拉取二进制数据;其中,一个实时数据订阅任务Instance对应一个被订阅的MySQL 实例;其中,位点表示一个binlog的位置;其中,如果是第一次启动且没有配置初始化位点则从最新的位点开始,否则从分布式协调服务 Zookeeper记录的上次的位点开始。
本发明第三方面提出一种电子设备,包括:处理器;以及存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器执行前述的第一方面的方法。
本发明第四方面提出一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,当所述一个或多个程序被处理器执行时,实现前述的第一方面的方法。
本发明的技术方案,基于canal对实时数据订阅平台进行开发,该平台利用共用MySQL业务库,采用master-slave多主多从的高性能、高并发架构设计且支持负载均衡和故障转移(多控制节点、多服务节点、多实时任务),降低传输延迟、提高时效性。其为根据消息队列集群或客户端的需求、通过建立实时任务执行对MySQL数据实时采集、解析、消费的实时数据同步平台,实现将海量MySQL数据实时消费到消息队列集群或客户端。并且,通过该架构下实时任务的执行和发送消费数据到下游,实现海量数据实时处理和分析、与各种OLAP场景结合,为大集团海量数据的“零”延迟提供最重要的基础支持。进而,实时任务的线程设计、并行处理、位置记录、状态管理等,提高了实时数据订阅服务的处理传输效率和性能、具有高性能高并发的特点,其更可靠、稳定,同时,降低了运维和监控难度及成本,提升了用户良好体验。
进一步,在平台的架构中控制节点使用LVS负载均衡,如:一个高可用LVS的VIP挂载多个admin的IP和端口,可有效解决admin的高可用、和高负载问题;而多个admin共用一个集团MySQL元数据库,可解决多个admin之间元数据不一致的问题;另外,admin提供了webui运维管理界面,大大降低了运维和管理难度,降低了运维成本。再进一步,在admin 和server之间的通讯提供了ACL认证还能大大提高了集群安全和数据安全;同时,对于原canal进行消息扩展,支持多种消息模式并支持消息定制化,如新增了binlog序列编号等,可用于数据消费端的全局排序,有助于下游分析和消费;并且,在实时任务的线程中,对原canal性能瓶颈的 sink端进行并行改进,也大大提高了并行数据订阅和消费的能力,提升了处理和传输效率。
由此,订阅数据可以以T+1的方式同步,即T时间点下游订阅数据,下一时间点即可返回需要的数据,数据时效性高;实时任务的线程运行,有利于实时订阅和消费MySQL数据的复杂性降低;相对于已有的传统 MySQL实时订阅方案,具有更高的可用性和更高的性能并且降低了运维和监控难度。
附图说明
为了使本发明所解决的技术问题、采用的技术手段及取得的技术效果更加清楚,下面将参照附图详细描述本发明的具体实施例。但需声明的是,下面描述的附图仅仅是本发明的示例性实施例的附图,对于本领域的技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他实施例的附图。
图1是根据本发明的实时数据处理方法的一个实施例的主要流程图;
图2是根据本发明的实时数据处理系统的一个实施例的主要架构原理框图;
图3是根据本发明的技术方案中系统的一个实施例的整体架构设计的示意图;
图4是根据本发明的技术方案中主要的组件之间的控制的一个实施例的示意图;
图5是根据本发明的技术方案中创建和运行实时任务的一个实施例的示意图;
图6是根据本发明的技术方案中server上运行的实时任务的设计的一个实施例的示意图;
图7是根据本发明的技术方案中生命周期管理的一个实施例的示意图;
图8是根据本发明的一种电子设备的一个示例性的实施例的结构框图;
图9是根据本发明的一个计算机可读介质的一个逻辑示例性的实施例的示意图。
具体实施方式
现在将参考附图来更加全面地描述本发明的示例性实施例,虽然各示例性实施例能够以多种具体的方式实施,但不应理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例是为了使本发明的内容更加完整,更加便于将发明构思全面地传达给本领域的技术人员。
在符合本发明的技术构思的前提下,在某个特定的实施例中描述的结构、性能、效果或者其他特征可以以任何合适的方式结合到一个或更多其他的实施例中。
在对于具体实施例的介绍过程中,对结构、性能、效果或者其他特征的细节描述是为了使本领域的技术人员对实施例能够充分理解。但是,并不排除本领域技术人员可以在特定情况下,以不含有上述结构、性能、效果或者其他特征的技术方案来实施本发明。
附图中的流程图仅是一种示例性的流程演示,不代表本发明的方案中必须包括流程图中的所有的内容、操作和步骤,也不代表必须按照图中所显示的的顺序执行。例如,流程图中有的操作/步骤可以分解,有的操作/ 步骤可以合并或部分合并,等等,在不脱离本发明的发明主旨的情况下,流程图中显示的执行顺序可以根据实际情况改变。
附图中的框图一般表示的是功能实体,并不一定必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
各附图中相同的附图标记表示相同或类似的元件、组件或部分,因而下文中可能省略了对相同或类似的元件、组件或部分的重复描述。还应理解,虽然本文中可能使用第一、第二、第三等表示编号的定语来描述各种器件、元件、组件或部分,但是这些器件、元件、组件或部分不应受这些定语的限制。也就是说,这些定语仅是用来将一者与另一者区分。例如,第一器件亦可称为第二器件,但不偏离本发明实质的技术方案。此外,术语“和/或”、“及/或”是指包括所列出项目中的任一个或多个的所有组合。
本发明的一个实施例中,根据一个或多个实时数据需求,创建一个或多个实时任务,并通过执行每个所述实时任务,获得需求的所述实时数据并发送给对应的实时数据需求方。该实时数据处理方案的例子,是基于一个canal进行开发的平台,如图2、3所示的实时数据订阅平台的架构、如图1、4至7的平台架构下的具体设计、处理和传输,采用master-slave高性能、高并发架构设计,多主多从,支持负载均衡和故障转移,提升了整体平台实时数据订阅性能,降低运维监控难度和成本,改进了现有的海量 MySQL数据实时采集、解析、消费的同步平台,使得其数据尽可能高效率地实时消费到消费队列或客户端,便于后续海量数据的实时处理和分析,以及各种OLAP场景的应用,为整个应用平台的网络体系的数据“零”延迟使用提供了最重要的基础技术支持。
下面对与本发明的实施例相关的部分技术术语和/或技术内容进行简要说明:
MySQL主从:是元数据业务库MySQL,大集团海量数据的实时数据订阅平台中的MySQL的架构为一主多从,并且,读写分离,主库负责写入,从库负责查询。在本发明的实施例中,多个Admin共用一个集团 MySQL元数据库,可避免多个Admin之间元数据不一致的情况。
binlog:是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志,本发明的实施例中即为MySQL中的binlog。
Dump:MySQL支持的一种binlog日志采集协议。本发明的实施例中, MySQL提供一种用于增量采集binlog二进制日志的dump协议,能支持多种语言的实现。
Kafka:一种高性能、高可靠消息队列。本发明的实施例中,其为一种能够支持海量数据吞吐的高性能、高可靠性的实时消息队列。
Zookeeper:一种高可靠的分布式协调服务,在本发明的实施例中,用于instance的元数据服务,存放各种元数据信息。
LVS:常用于负载均衡的代理服务,本发明的实施例中主要可以用于平台的控制节点Admin在多主之间的负载均衡和故障转移,具体如,Admin 使用LVS负载均衡时,一个高可用的LVS的虚拟IP(即VIP)挂载多个 Admin的IP端口,可有效保障Admin的高可用性和高负载。
Admin:实时订阅集群的主控制节点,admin节点可管理多个cluster。在本发明的实施例中,Admin提供Webui运营管理界面,大大降低了运维和管理难度,减少运维管理的成本。
Cluster:实时数据订阅平台/实时订阅平台的一个集群,一个集群下面可有多个server组成。
Server:代表一个运行实例,对应于一个java虚拟机jvm,一个server 可以运行多个instance。本发明的实施例中,Admin与Server之间的通信/ 通讯可以采用ACL认证,大大提高了集群安全和数据安全。
Instance:对应于一个数据队列,可将instance理解为server上运行的一个实时任务,一个instance只能运行在一个server上。
Event:binlog的每一条ddl和dml日志都被解析成一个Event对象。
Java多线程:本发明的实施例中,其用于支持整个平台架构的并行 binlog解析和消费机制,提高平台性能。
HTTP协议:本发明的实施例中,实时数据订阅平台的Admin和server 之间的通讯协议。
【实施例1】
下面结合图1所示的根据本发明的方法的一个实施例的主要流程,结合图2至7的本发明的实时数据订阅平台的架构、配置和设计的实施例,对本发明的数据处理和传输的实现过程进行说明。在本发明的该实施例中,包括:
步骤S110,根据一个或多个实时数据需求,创建一个或多个实时任务。
步骤S120,通过执行每个所述实时任务,获得需求的所述实时数据并发送给对应的实时数据需求方。
一个实施方式中,基于canal开发的实时数据订阅平台,采用的主从 master-slave(多主多从)架构设计如图2、3所示。平台共用的一个或多个MySQL业务库,为元数据数据库,存储着N个需要的数据实例,例如,单单在一个大型集团的内部,就可能生产线上运行着200+MySQL实例等。
其中,该实时数据订阅平台或者简称实时订阅平台,按照来自消息队列或者说客户端,即生产线需求方的实时数据消费的订阅请求,实时订阅 MySQL数据,例如通过dump协议线程从业务库中抓取数据,并以事件event 的方式发送到消息队列集群中,用于下游各种实时消费和各种OLAP分析场景。进一步,该消息队列集群可以是Kafka为主的Kafka集群。进一步,还可以进一步为平台关联或设置监控平台,其可以采用Prometheus、 Grafana为主要架构,实时采集和监控平台各项指标,支持各种告警消息推送,高效运维。
一个实施方式中,实时订阅平台根据订阅请求中的各个订阅数据需求,例如经平台界面Webui(浏览器端)对虚拟VIP地址认证后产生对应订阅数据需求或者数据需求方的控制节点Admin,如Admin1、Admin2,并由控制节点Admin发送创建命令给实时订阅平台的集群Cluster,例如 Cluster1、Cluster2。Cluster下具有的一个或多个服务Server,其启动后可以接收创建命令,例如:Clusert1下有Server1、Server2两个节点 (可以是物理服务节点),Server启动并注册虚拟VIP地址、通过认证在 Cluster1下。Server接收到创建命令后,对应订阅数据需求,创建对应的实时任务Instance,例如Instance1、Instance2。一个实时任务 Instance都只能运行在一个Server上,如图如图2、3、6所示。一个或多个Admin可以管理一个或多个Server,其可以为平台上的物理控制单元。平台上的一个或多个实时任务Instance如Instance1、Instance2、 Instance3、Instance4等。每个实时任务被创建后,具有多个线程,例如采集线程dump,即dump协议线程,解析/分析线程parser,缓存区Store,消费线程sink等,还可以包括MetaManager实时状态管理更新。每个实时任务在执行时,通过其dump线程实时采集MySQL的binlog文件中的二进制数据,交给其parser线程;该parser线程是并行设计,可以多个该线程并行处理二进制数据,将数据解析为事件event对象,存储在实时任务的Store区(缓存区)中,相当于建立一个内部的数据通道,再由实时任务的sink线程来消费这些数据,而且这些数据会保持与binlog文件中的数据时序一致。在sink线程实时消费Store区数据通道的数据之后,发送到kafka集群或客户端,例如kafka集群的broker1、broker2。
在该实施例的平台上,执行数据处理和传输,具体包括:
在步骤S110中根据一个或多个实时数据需求,创建一个或多个实时任务,具体如:
一个实施方式中,接收来自实时数据需求方的订阅请求,其中每个订阅请求包含一个或多个实时数据需求;对所述实时数据需求方认证后,建立对应的控制节点;所述控制节点发送一个或多个实时任务的创建命令;基于所述创建命令创建一个或多个实时任务。
一个实施方式中,所述实时数据需求方包括:与实时订阅平台连接、获得订阅数据的消息队列集群和/或客户端;所述实时数据需求包括:实时数据订阅需求;对所述实时数据需求方认证,具体包括:由实时订阅平台对所述消息队列集群和/或客户端进行认证,建立对应所述消息队列集群和 /或客户端的、或者建立对应所述实时数据订阅需求的一个或多个控制节点;所述控制节点发送一个或多个实时任务的创建命令,具体包括:所述控制节点发送所述创建命令到实时订阅平台的数据订阅集群;根据所述创建命令创建一个或多个实时任务,具体包括:所述数据订阅集群中的一个或多个服务节点启动后,接收所述创建命令;每个所述服务节点创建对应一个或多个实时数据订阅需求的一个或多个所述实时任务。
例1,核心组件部分如图4至7的所示,平台的控制节点Admin统一管理和维护cluster、server和instance的生命周期,同时将instance任务化在每个server上运行,并实现集群负载均衡,平台中可包含一到多个admin 节点。在admin的webui上可对cluster、server和instance方便的运维操作。而平台的数据订阅集群cluster,其一个cluster中可包含一到多个server节点,cluster不参与具体的server和instance运维管理,主要负责server和 instance的集群化配置管理,server通过虚拟地址认证在cluster中注册,即作为该集群下的cluster被配置管理。集群中的server,有两种启动方式,单机模式和集群模式,如果是集群模式,则从cluster读取配置信息,一个 server服务可运行多个instance实时任务。而平台上创建的instance:一个实时的数据订阅实时任务,一个instance对应一个被订阅MySQL实例。
进一步,server接收到创建任务后,创建实时任务instance,其具有线程和缓存,server接受到admin的命令,创建instance(可以理解为一个实时任务),整个instance的整个生命周期的管理都是由admin发送维护指令管理,server为实际操作者。
进一步,Admin管理server和instance的生命周期和状态,即admin 统一维护,也都具备查看日志的功能。
对于server:server进程启动后可根据最基本的配置信息,自行认证和注册,成为cluster下的一个server节点,也可由admin来手动创建,其生命周期管理如图。一个server的停止,会导致在其运行的instance全部stop(正常运维操作)。
对于instance:instance的创建和删除都需要手动来操作,除了使用 cluster的集群配置,instance还有其专属配置,如:订阅MySQL实例的各种信息、订阅和解析规则等,用于其任务配置。
进一步,创建的instance,其dump线程还可以循环请求MySQL实例,从指定位点(如某个binlog的position)开始拉取二进制数据,如果是第一次启动且没有配置初始化位点信息,则从最新的位点开始,否则从上次 zookeeper记录的位点(由metaManager进行管理)继续开始。
在步骤S120中,通过执行每个所述实时任务,获得需求的所述实时数据并发送给对应的实时数据需求方,具体如:
一个实施方式中,一个所述实时任务包括仅能运行于一个服务节点上的具有生命周期的实时数据订阅任务;所述实时数据订阅任务包括:采集线程、分析线程、缓存区、汇聚线程;执行每个所述实时任务,以获得需求的所述实时数据并发送给对应的实时数据需求方,具体包括:采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区;由汇聚线程消费所述缓存区的数据并发送到实时数据需求方。
具体地,在实时订阅平台的一个数据订阅集群Cluster下设有多个服务节点Server,在一个Server上能运行一个或多个实时数据订阅任务 Instance;在实时订阅平台上具有一个或多个控制节点Admin,对数据订阅集群Cluster、服务节点Server、实时数据订阅任务Instance的生命周期进行管理维护,将实时数据订阅任务Instance任务化在每个服务节点Server 上运行,使用LVS负载均衡,以及共用元数据业务库MySQL;所述数据订阅集群Cluster负责其服务节点Server以及实时数据订阅任务Instance 的集群化配置管理。
进一步,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区,具体包括:利用MySQL的dump协议线程从元数据业务库MySQL 的binlog采集二进制数据,由多个parser线程并行处理所述二进制数据,以及将所述数据分析为event对象后存储在Store区中作为内部数据通道;由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,具体包括:由sink线程并发实时消费所述Store区中的数据后,发送到订阅数据的消息队列集群。
进一步,利用MySQL的dump协议线程从元数据业务库MySQL的 binlog采集二进制数据,具体包括:通过dump协议线程循环请求元数据业务库MySQL的实例,从指定位点拉取二进制数据;其中,一个实时数据订阅任务Instance对应一个被订阅的MySQL实例;其中,位点表示一个binlog的位置;其中,如果是第一次启动且没有配置初始化位点则从最新的位点开始,否则从分布式协调服务Zookeeper记录的上次的位点开始。
进一步,通过单击模式和/或集群模式启动服务节点Server;其中,集群模式包括通过Cluster读取配置信息实现启动。进一步,所述服务节点 Server代表一个运行的实例,其对应一个java虚拟机jvm。进一步,所述控制节点Admin维护服务节点Server和实时数据订阅任务Instance的状态。进一步,采用MataManager管理每个实时数据订阅任务Instance,将其状态信息和消费的位点信息更新到分布式协调服务Zookeeper。进一步,由sink线程并发实时消费所述Store区中的数据时,保持与binlog数据的时序一致。进一步,所述消息队列集群为Kafka消息队列集群。进一步,通过监控平台对实时订阅平台实时采集并监控平台指标、和/或推送告警信息。
例2,承前述例1,执行实时任务即在server上运行一个instance时,其数据执行流程可以为:
instance中的dump线程,使用MySQL的dump协议,实时从MySQL 的binlog采集二进制数据,然后将二进制数据交给parser线程。parser线程使用了并行设计,可以多个parser线程一起并行处理二进制数据,将数据解析为event对象存储在store区里,相当于一个内部的数据通道,由sink 线程来消费,这里数据会保持和binlog数据时序一致。sink线程实时消费 store数据通道的数据,然后发送到kafka里,完成整个数据订阅流向。
进一步,Instance中的parser线程:实时解析dump线程拉取的二级制数据(字节流),解析成event对象,并将event对象流存储在store数据队列中,可启用多个该线程并发解析。进而,其store区:可以是一个用于存储event对象流的缓冲队列,即一个数据通道形式。其sink线程:用于消费store中的event对象流数据,可启用多个该线程并发消费。支持多种消费模式,如发送到kafka或者其他MQ,消息体亦可定制。并且,其还采用metaManager:实时将instance的状态信息和消费的位点信息更新到 zookeeper中,以保证instance功能上的高可用。
该实施例中,实时数据订阅平台采用经典master-slave集群架构实现,包含至少5类服务:
admin服务:统一管理和维护cluster、server和instance的生命周期,同时将instance任务化在每个server上运行,并实现集群负载均衡。平台中可包含一到多个admin节点。
server服务:代表一个JVM进程,一个server服务可运行多个instance 实时任务,并对每个instance进行生命周期的实际操作,平台中可包含一到多个server节点。
zookeeper服务:为每个在运行的instance实时任务,提供高可用高性能的元数据服务功能,记录每个instance的运行状态、binlog的解析和消费位点等信息,经典高可用zookeeper集群节点数应大于等于3。
MySQL平台元数据服务(可以是物理存储设备云存储等):记录整个平台中cluster、server和instance的生命周期和运行状态等平台的元数据信息,该数据的维护由admin进行统一管理,该服务由hulk提供。
LVS负载均衡服务:多个admin节点通过LVS进行负载均衡,实现多主模式,webui和server都是通过LVS提供的VIP与多个admin实现高可用交互。
【实施例2】
下面结合图2所示的本发明的方案的系统的架构,结合图1、3至7 的数据处理、分析、消费、传输和架构的具体设计,对本发明的实现做进一步说明。该实时数据处理系统的一个实施例,具体可以包括:
分别连接业务库和实时数据需求方的实时订阅平台;或者,业务库(如 MySQL1、MySQL2)、实时数据需求方、和实时订阅平台,平台与业务库和需求方连接;或者,业务库、实时数据需求方、实时订阅平台、和监控平台,实时订阅平台分别连接业务库、实时数据需求方和监控平台。
其中,业务库为元数据业务库MySQL。
其中,实时订阅平台根据来自实时数据需求方的一个或多个实时数据订阅需求,创建一个或多个实时任务(如平台中instance1、instance2);实时订阅平台执行每个实时任务,以从所述业务库获得对应实时任务的实时数据(如dump线程从MySQL获得订阅数据),并发送给对应的实时数据需求方。
其中,连接如无线、有线、远程、近程等连接或网络连接。
其中,实时数据需求方如:消息队列集群(例kafka集群),和/或客户端等。Kafka集群的broker1、broker2获得通过平台送来的订阅的业务库的数据,在下游各种实时消费和OLAP分析场景中使用。
其中,可以通过监控平台对实时订阅平台实时采集并监控平台指标、和/或推送告警信息。该监控平台的架构可以采用Protheus和Grafanna。
一个实施方式中,实时订阅平台根据来自实时数据需求方的一个或多个实时数据订阅需求,创建一个或多个实时任务,具体包括:所述实时订阅平台接收来自一个或多个实时数据需求方的订阅请求;其中,每个订阅请求包含一个或多个实时数据订阅需求;所述实时订阅平台对所述实时数据需求方认证后,建立控制节点;所述控制节点发送一个或多个实时任务的创建命令给所述实时订阅平台的数据订阅集群;数据订阅集群下的一个或个服务节点在启动后接收所述创建命令;每个服务节点根据所述创建命令创建对应一个或多个实时数据订阅需求的一个或多个所述实时任务。其中,所述控制节点可以为物理控制单元,包括:对应所述消息队列集群和 /或客户端的的一个或多个控制节点,或者,对应所述实时数据订阅需求的一个或多个控制节点;一个所述实时任务对应业务库中的被订阅的一个实例,并且仅能运行于一个服务节点上。进一步,所述实时任务包括实时数据订阅任务;所述实时数据订阅任务包括:采集线程、分析线程、缓存区、和/或汇聚线程;实时订阅平台执行每个实时任务,以从所述业务库获得对应实时任务的实时数据并发送给对应的实时数据需求方,具体包括:所述实时数据订阅任务在服务节点上运行时,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区;由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,完成订阅的数据流向。
更具体地,实时订阅平台中,数据订阅集群为Cluster、服务节点为 Server(可以是物理服务设备例如云服务器等)、要创建的实时任务,即实时数据订阅任务为Instance。参见图3所示,控制节点有admin1、admin2 等物理控制单元,admin提供运维管理界面webui在浏览器端,方便对 cluster、instance、server操作管理;有多个服务节点server,如服务器server1、 server2等。如图4,Admin可以管理cluster、instance、server,并且,server是注册到cluser中的,如图示的cluser1、cluser2,server1、server2都注册到cluser1,由其负责Server以及Instance的集群化配置管理。如图3,在订阅请求传到平台,对虚拟IP认证后,建立的对应的多个控制节点,比如admin1、admin2,生成创建命令并发送到cluser的server,同时,控制节点Admin会对数据订阅集群Cluster、服务节点Server和实时数据订阅任务Instance的生命周期、以及对服务节点Server和实时数据订阅任务 Instance的状态进行管理维护,将实时数据订阅任务Instance任务化在每个服务节点Server上运行,使用LVS负载均衡,并且,共用元数据业务库MySQL。其中,生命周期管理如图7所示,admin对各个部分的生命周期的管理可以通过创建、准备ready、开始start、开始完成started、停止、停止完成stoped、删除,这样一个过程。
进一步,可以通过单击模式和/或集群模式启动服务节点Server;其中,集群模式包括通过Cluster读取配置信息实现启动。Server通过虚拟地址 VIP认证注册到Cluster如server1、2都注册到cluster1。
进一步,每个实时任务仅能在一个server上运行,如instance1、2在 server1上,instance3、4在server2上,如图5、6所示。创建的每个实时任务instance执行时或者运行时,其线程和缓存如图5、6所示。具体例如:采集线程为MySQL的dump协议线程、分析线程为parser线程、缓存区为Store区、和/或汇聚线程为sink线程。
具体地,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区,包括:利用MySQL的dump协议线程从元数据业务库MySQL 的binlog采集二进制数据,由多个parser线程并行处理所述二进制数据,以及将所述数据分析为event对象后存储在Store区中作为内部数据通道;
具体地,由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,包括:由sink线程并发实时消费所述Store区中的数据后,发送到订阅数据的消息队列集群;其中,由sink线程并发实时消费所述Store区中的数据时,保持与binlog数据的时序一致。
进一步,在每个实时任务中还包括MetaManager,在采用MataManager 管理每个实时数据订阅任务Instance,将其状态信息和消费的位点信息更新到分布式协调服务Zookeeper。
其中,利用MySQL的dump协议线程从元数据业务库MySQL的binlog 采集二进制数据,具体包括:通过dump协议线程循环请求元数据业务库 MySQL的实例,从指定位点拉取二进制数据;其中,一个实时数据订阅任务Instance对应一个被订阅的MySQL实例;其中,位点表示一个binlog 的位置;其中,如果是第一次启动且没有配置初始化位点则从最新的位点开始,否则从分布式协调服务Zookeeper记录的上次的位点开始。
进一步,具体该系统的实施例的具体数据处理、消费、传输,还可以结合实施例的过程,参见如实施例1中的例1和例2的实现过程,在此不再赘述。
【实施例3】
具体地,还包括一种电子设备的一个实施例,其包括处理器以及存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被执行时使所述处理器执行如前述实施例中涉及的本发明的方案的处理过程。
下面描述本发明的电子设备的一个实施例,该电子设备可以视为对于上述本发明的方法和装置实施例的实体形式的实施方式。对于本发明电子设备的该实施例中描述的细节,应视为对于上述方法或装置/系统的实施例的补充;对于在本发明电子设备的实施例中未披露的细节,可以参照上述方法或装置/系统实施例来实现。
图8是根据本发明的一种电子设备的示例性实施例的结构框图,该电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,该示例性实施例的电子设备200以通用数据处理设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括存储单元220和处理单元210)的总线230等。
其中,所述存储单元220存储有计算机可读程序,其可以是源程序或都只读程序的代码。所述程序可以被处理单元210执行,使得所述处理单元210执行本发明各种实施方式的步骤。例如,所述处理单元210可以执行前述实施例1至4的方法的各个步骤。
所述存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以进一步包括只读存储单元(ROM)。所述存储单元220还可以包括具有一组(至少一个) 程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备(例如键盘、显示器、网络设备、蓝牙设备等)通信,使得用户能经由这些外部设备与该电子设备 200交互,和/或使得该电子设备200能与一个或多个其它数据处理设备(例如路由器、调制解调器等等)进行通信。这种通信可以通过输入/输出(I/O) 接口进行。应当明白,尽管图中未示出,电子设备200中可使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
【实施例4】
具体地,还包括一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,其中,当所述一个或多个程序被处理器执行时,实现前述实施例中涉及本发明的方案。
图9是本发明的一个计算机可读介质实施例的示意图。如图9所示,所述计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。当所述计算机程序被一个或多个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,即:服务端提供的配置服务管理,生成与域名相关的配置文件;当请求业务服务期间出现域名故障时,客户端通过根据所述配置文件进行的配置更新以实现域名访问的自动切换。
通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是 CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台数据处理设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如 Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上所述,本发明可以执行计算机程序的方法、系统、电子设备或计算机可读介质来实现。可以在实践中使用微处理器或者数字信号处理器 (DSP)等通用数据处理设备来实现本发明的一些或者全部功能。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (17)

1.一种实时数据处理方法,其特征在于,包括:
根据一个或多个实时数据需求,创建一个或多个实时任务;
通过执行每个所述实时任务,获得需求的所述实时数据并发送给对应的实时数据需求方。
2.如权利要求1所述的方法,其特征在于,根据一个或多个实时数据需求,创建一个或多个实时任务,具体包括:
接收来自实时数据需求方的订阅请求,其中每个订阅请求包含一个或多个实时数据需求;
对所述实时数据需求方认证后,建立对应的控制节点;
所述控制节点发送一个或多个实时任务的创建命令;
基于所述创建命令创建一个或多个实时任务。
3.如权利要求2所述的方法,其特征在于,
所述实时数据需求方包括:与实时订阅平台连接、获得订阅数据的消息队列集群和/或客户端;
所述实时数据需求包括:实时数据订阅需求;
对所述实时数据需求方认证,具体包括:由实时订阅平台对所述消息队列集群和/或客户端进行认证,建立对应所述消息队列集群和/或客户端的、或者建立对应所述实时数据订阅需求的一个或多个控制节点;
所述控制节点发送一个或多个实时任务的创建命令,具体包括:所述控制节点发送所述创建命令到实时订阅平台的数据订阅集群;
根据所述创建命令创建一个或多个实时任务,具体包括:
所述数据订阅集群中的一个或多个服务节点启动后,接收所述创建命令;
每个所述服务节点创建对应一个或多个实时数据订阅需求的一个或多个所述实时任务。
4.如权利要求1至3任一项所述的方法,其特征在于,
一个所述实时任务包括仅能运行于一个服务节点上的具有生命周期的实时数据订阅任务;
所述实时数据订阅任务包括:采集线程、分析线程、缓存区、汇聚线程;
执行每个所述实时任务,以获得需求的所述实时数据并发送给对应的实时数据需求方,具体包括:
采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区;
由汇聚线程消费所述缓存区的数据并发送到实时数据需求方。
5.如权利要求4所述的方法,其特征在于,还包括:
在实时订阅平台的一个数据订阅集群Cluster下设有多个服务节点Server,在一个Server上能运行一个或多个实时数据订阅任务Instance;
在实时订阅平台上具有一个或多个控制节点Admin,对数据订阅集群Cluster、服务节点Server、实时数据订阅任务Instance的生命周期进行管理维护,将实时数据订阅任务Instance任务化在每个服务节点Server上运行,使用LVS负载均衡,以及共用元数据业务库MySQL;
所述数据订阅集群Cluster负责其服务节点Server以及实时数据订阅任务Instance的集群化配置管理。
6.如权利要求5所述的方法,其特征在于,
采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区,具体包括:
利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,由多个parser线程并行处理所述二进制数据,以及将所述数据分析为event对象后存储在Store区中作为内部数据通道;
由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,具体包括:
由sink线程并发实时消费所述Store区中的数据后,发送到订阅数据的消息队列集群。
7.如权利要求6所述的方法,其特征在于,利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,具体包括:
通过dump协议线程循环请求元数据业务库MySQL的实例,从指定位点拉取二进制数据;
其中,一个实时数据订阅任务Instance对应一个被订阅的MySQL实例;
其中,位点表示一个binlog的位置;
其中,如果是第一次启动且没有配置初始化位点则从最新的位点开始,否则从分布式协调服务Zookeeper记录的上次的位点开始。
8.如权利要求7所述的方法,其特征在于,还包括:
通过单击模式和/或集群模式启动服务节点Server;其中,集群模式包括通过Cluster读取配置信息实现启动;
和/或,
所述服务节点Server代表一个运行的实例,其对应一个jvm;
和/或,
所述控制节点Admin维护服务节点Server和实时数据订阅任务Instance的状态;
和/或,
采用MataManager管理每个实时数据订阅任务Instance,将其状态信息和消费的位点信息更新到分布式协调服务Zookeeper;
和/或,
由sink线程并发实时消费所述Store区中的数据时,保持与binlog数据的时序一致;
和/或,
所述消息队列集群为Kafka消息队列集群;
和/或,
通过监控平台对实时订阅平台实时采集并监控平台指标、和/或推送告警信息。
9.一种实时数据处理系统,其特征在于,包括:
分别连接业务库和实时数据需求方的实时订阅平台;
实时订阅平台根据来自实时数据需求方的一个或多个实时数据订阅需求,创建一个或多个实时任务;
实时订阅平台执行每个实时任务,以从所述业务库获得对应实时任务的实时数据并发送给对应的实时数据需求方。
10.如权利要求9所述的系统,其特征在于,实时订阅平台根据来自实时数据需求方的一个或多个实时数据订阅需求,创建一个或多个实时任务,具体包括:
所述实时订阅平台接收来自一个或多个实时数据需求方的订阅请求;
其中,每个订阅请求包含一个或多个实时数据订阅需求;
所述实时订阅平台对所述实时数据需求方认证后,建立控制节点;
所述控制节点发送一个或多个实时任务的创建命令给所述实时订阅平台的数据订阅集群;
数据订阅集群下的一个或个服务节点在启动后接收所述创建命令;
每个服务节点根据所述创建命令创建对应一个或多个实时数据订阅需求的一个或多个所述实时任务。
11.如权利要求9或10所述的系统,其特征在于,
所述实时数据需求方包括消息队列集群和/或客户端;
所述控制节点包括:对应所述消息队列集群和/或客户端的的一个或多个控制节点,或者,对应所述实时数据订阅需求的一个或多个控制节点;
一个所述实时任务对应业务库中的被订阅的一个实例,并且仅能运行于一个服务节点上。
12.如权利要求9至11任一项所述的系统,其特征在于,
所述实时任务包括实时数据订阅任务;
所述实时数据订阅任务包括:采集线程、分析线程、缓存区、和/或汇聚线程;
实时订阅平台执行每个实时任务,以从所述业务库获得对应实时任务的实时数据并发送给对应的实时数据需求方,具体包括:
所述实时数据订阅任务在服务节点上运行时,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区;
由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,完成订阅的数据流向。
13.如权利要求12所述的系统,其特征在于,还包括:
所述实时订阅平台的数据订阅集群为Cluster、服务节点为Server、所述实时数据订阅任务为Instance;
数据订阅集群为Cluster负责其服务节点Server以及实时数据订阅任务Instance的集群化配置管理;
通过单击模式和/或集群模式启动服务节点Server;其中,集群模式包括通过Cluster读取配置信息实现启动;
所述业务库为元数据业务库MySQL;
实时数据需求方采用消息队列集群时,为Kafka消息队列集群;
所述实时订阅平台上建立的控制节点Admin,对数据订阅集群Cluster、服务节点Server和实时数据订阅任务Instance的生命周期、以及对服务节点Server和实时数据订阅任务Instance的状态进行管理维护,将实时数据订阅任务Instance任务化在每个服务节点Server上运行,使用LVS负载均衡,并且,共用元数据业务库MySQL;
采用MataManager管理每个实时数据订阅任务Instance,将其状态信息和消费的位点信息更新到分布式协调服务Zookeeper;
和/或,
通过监控平台对实时订阅平台实时采集并监控平台指标、和/或推送告警信息。
14.如权利要求13所述的系统,其特征在于,
其中,采集线程为MySQL的dump协议线程、分析线程为parser线程、缓存区为Store区、和/或汇聚线程为sink线程;
其中,采集线程从业务库中采集数据并由分析线程处理后,存储到缓存区,包括:利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,由多个parser线程并行处理所述二进制数据,以及将所述数据分析为event对象后存储在Store区中作为内部数据通道;
其中,由汇聚线程消费所述缓存区的数据并发送到实时数据需求方,包括:由sink线程并发实时消费所述Store区中的数据后,发送到订阅数据的消息队列集群;其中,由sink线程并发实时消费所述Store区中的数据时,保持与binlog数据的时序一致;
其中,所述监控平台的架构采用Protheus和Grafanna。
15.如权利要求14所述的系统,其特征在于,
利用MySQL的dump协议线程从元数据业务库MySQL的binlog采集二进制数据,具体包括:
通过dump协议线程循环请求元数据业务库MySQL的实例,从指定位点拉取二进制数据;
其中,一个实时数据订阅任务Instance对应一个被订阅的MySQL实例;
其中,位点表示一个binlog的位置;
其中,如果是第一次启动且没有配置初始化位点则从最新的位点开始,否则从分布式协调服务Zookeeper记录的上次的位点开始。
16.一种电子设备,包括:处理器以及存储计算机可执行指令的存储器,其特征在于,所述计算机可执行指令在被执行时使所述处理器执行如权利要求1至8任一项所述的方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,当所述一个或多个程序被处理器执行时,实现权利要求1至8任一项所述的方法。
CN202110797741.7A 2021-07-14 2021-07-14 实时数据处理方法、系统、设备及介质 Active CN113596117B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110797741.7A CN113596117B (zh) 2021-07-14 2021-07-14 实时数据处理方法、系统、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110797741.7A CN113596117B (zh) 2021-07-14 2021-07-14 实时数据处理方法、系统、设备及介质

Publications (2)

Publication Number Publication Date
CN113596117A true CN113596117A (zh) 2021-11-02
CN113596117B CN113596117B (zh) 2023-09-08

Family

ID=78247457

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110797741.7A Active CN113596117B (zh) 2021-07-14 2021-07-14 实时数据处理方法、系统、设备及介质

Country Status (1)

Country Link
CN (1) CN113596117B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742298A (zh) * 2021-11-04 2021-12-03 南京芯传汇电子科技有限公司 一种机载二进制文件通用并行的解析方法、装置及电子设备
CN114172846A (zh) * 2021-12-03 2022-03-11 北京云迹科技有限公司 基于Kafka平台的数据限流方法、装置、电子设备及存储介质
CN114328750A (zh) * 2021-12-31 2022-04-12 北京发现角科技有限公司 一种将业务数据同步ods层的方法及装置

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100162260A1 (en) * 2008-12-18 2010-06-24 Veda Technology Limited Data Processing Apparatus
US8539094B1 (en) * 2011-03-31 2013-09-17 Amazon Technologies, Inc. Ordered iteration for data update management
CN107179942A (zh) * 2017-05-16 2017-09-19 中国电子科技集团公司第四十研究所 一种基于多线程的实时数据分析任务分发处理方法
US20170317935A1 (en) * 2015-01-23 2017-11-02 Ebay Inc., Processing high volume network data
WO2018052281A1 (en) * 2016-09-19 2018-03-22 Libniz Sdn Bhd System and method for task management
CN107959666A (zh) * 2016-10-18 2018-04-24 千寻位置网络有限公司 大规模cors站播发系统中数据订阅、发布的方法及其装置
CN109309672A (zh) * 2018-09-17 2019-02-05 南京海兴电网技术有限公司 一种基于Web的空间数据实时推送多任务调度方法
CN110262807A (zh) * 2019-06-20 2019-09-20 北京百度网讯科技有限公司 集群创建进度日志采集系统、方法和装置
CN111092954A (zh) * 2019-12-24 2020-05-01 北京首信科技股份有限公司 一种生成微服务的方法和装置及电子设备
CN112019625A (zh) * 2020-08-31 2020-12-01 重庆紫光华山智安科技有限公司 基于websocket消息推送方法、系统、设备及介质
CN112068940A (zh) * 2020-09-02 2020-12-11 微医云(杭州)控股有限公司 实时任务调度方法、装置、调度系统及存储介质
CN112291224A (zh) * 2020-10-23 2021-01-29 上海淇玥信息技术有限公司 一种实时通信的交互方法、装置和电子设备
CN112346405A (zh) * 2020-10-13 2021-02-09 深圳市汇川技术股份有限公司 数控系统控制方法、装置、数控系统及计算机存储介质
CN112954311A (zh) * 2021-02-08 2021-06-11 福建天晴数码有限公司 一种直播流媒体的性能测试方法及其系统
CN112988741A (zh) * 2021-02-04 2021-06-18 北京淇瑀信息科技有限公司 实时业务数据合并方法、装置及电子设备

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100162260A1 (en) * 2008-12-18 2010-06-24 Veda Technology Limited Data Processing Apparatus
US8539094B1 (en) * 2011-03-31 2013-09-17 Amazon Technologies, Inc. Ordered iteration for data update management
US20170317935A1 (en) * 2015-01-23 2017-11-02 Ebay Inc., Processing high volume network data
WO2018052281A1 (en) * 2016-09-19 2018-03-22 Libniz Sdn Bhd System and method for task management
CN107959666A (zh) * 2016-10-18 2018-04-24 千寻位置网络有限公司 大规模cors站播发系统中数据订阅、发布的方法及其装置
CN107179942A (zh) * 2017-05-16 2017-09-19 中国电子科技集团公司第四十研究所 一种基于多线程的实时数据分析任务分发处理方法
CN109309672A (zh) * 2018-09-17 2019-02-05 南京海兴电网技术有限公司 一种基于Web的空间数据实时推送多任务调度方法
CN110262807A (zh) * 2019-06-20 2019-09-20 北京百度网讯科技有限公司 集群创建进度日志采集系统、方法和装置
CN111092954A (zh) * 2019-12-24 2020-05-01 北京首信科技股份有限公司 一种生成微服务的方法和装置及电子设备
CN112019625A (zh) * 2020-08-31 2020-12-01 重庆紫光华山智安科技有限公司 基于websocket消息推送方法、系统、设备及介质
CN112068940A (zh) * 2020-09-02 2020-12-11 微医云(杭州)控股有限公司 实时任务调度方法、装置、调度系统及存储介质
CN112346405A (zh) * 2020-10-13 2021-02-09 深圳市汇川技术股份有限公司 数控系统控制方法、装置、数控系统及计算机存储介质
CN112291224A (zh) * 2020-10-23 2021-01-29 上海淇玥信息技术有限公司 一种实时通信的交互方法、装置和电子设备
CN112988741A (zh) * 2021-02-04 2021-06-18 北京淇瑀信息科技有限公司 实时业务数据合并方法、装置及电子设备
CN112954311A (zh) * 2021-02-08 2021-06-11 福建天晴数码有限公司 一种直播流媒体的性能测试方法及其系统

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
IT杂货铺: "Canal Admin 搭建 Canal 集群以及体验", Retrieved from the Internet <URL:https://www.itgrocery.cn/posts/99c08147/> *
MOB604756E5202F: "Canal高可用架构部署", Retrieved from the Internet <URL:https://blog.51cto.com/u_15127498/2669798> *
全栈在路上: "实时数据同步服务(canal+kafka)的架构设计", Retrieved from the Internet <URL:https://www.cnblogs.com/itdream/p/13510928.html> *
刘峰;鄂海红;: "基于海量数据的消息队列的性能对比与优化方案", 软件, no. 10 *
阿丸: "「从零单排canal 02」 canal集群版+admin控制台 最新搭建姿势(基于1.1.4版本)", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/147354319?utm_id=0> *
黑马程序员: "云计算大数据教程实时数据同步方案", Retrieved from the Internet <URL:http://yun.itheima.com/jishu/158.html> *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742298A (zh) * 2021-11-04 2021-12-03 南京芯传汇电子科技有限公司 一种机载二进制文件通用并行的解析方法、装置及电子设备
CN113742298B (zh) * 2021-11-04 2022-03-08 南京芯传汇电子科技有限公司 一种机载二进制文件通用并行的解析方法、装置及电子设备
CN114172846A (zh) * 2021-12-03 2022-03-11 北京云迹科技有限公司 基于Kafka平台的数据限流方法、装置、电子设备及存储介质
CN114328750A (zh) * 2021-12-31 2022-04-12 北京发现角科技有限公司 一种将业务数据同步ods层的方法及装置

Also Published As

Publication number Publication date
CN113596117B (zh) 2023-09-08

Similar Documents

Publication Publication Date Title
US11921672B2 (en) Query execution at a remote heterogeneous data store of a data fabric service
US11615087B2 (en) Search time estimate in a data intake and query system
US11341131B2 (en) Query scheduling based on a query-resource allocation and resource availability
US11442935B2 (en) Determining a record generation estimate of a processing task
US11321321B2 (en) Record expansion and reduction based on a processing task in a data intake and query system
Fu et al. A fair comparison of message queuing systems
CN113596117B (zh) 实时数据处理方法、系统、设备及介质
US20200050607A1 (en) Reassigning processing tasks to an external storage system
US20190258635A1 (en) Determining Records Generated by a Processing Task of a Query
US20190310977A1 (en) Bucket data distribution for exporting data to worker nodes
US9727590B2 (en) Data management and indexing across a distributed database
US20190258637A1 (en) Partitioning and reducing records at ingest of a worker node
US20190272271A1 (en) Assigning processing tasks in a data intake and query system
US20190095493A1 (en) Multi-partition operation in combination operations
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
US20190095494A1 (en) Multi-partitioning determination for combination operations
CN109677465B (zh) 用于轨道交通综合监控系统的分布式实时系统架构
JP2011513863A (ja) 同期サーバープロセス
CN109446395A (zh) 一种提高基于Hadoop大数据综合查询引擎效率的方法及系统
CN111177161A (zh) 数据处理方法、装置、计算设备和存储介质
Chen et al. The research about video surveillance platform based on cloud computing
CN114510531A (zh) 数据库同步方法、装置、电子设备和存储介质
Jacobs et al. Bad to the bone: Big active data at its core
Afonso Mechanisms for providing causal consistency on edge computing
CN111858260A (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