CN117827778A - 一种cdn超大量级日志数据同步方法和应用系统 - Google Patents

一种cdn超大量级日志数据同步方法和应用系统 Download PDF

Info

Publication number
CN117827778A
CN117827778A CN202311698575.0A CN202311698575A CN117827778A CN 117827778 A CN117827778 A CN 117827778A CN 202311698575 A CN202311698575 A CN 202311698575A CN 117827778 A CN117827778 A CN 117827778A
Authority
CN
China
Prior art keywords
message data
original message
writing
data
queue
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.)
Pending
Application number
CN202311698575.0A
Other languages
English (en)
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.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud 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 Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202311698575.0A priority Critical patent/CN117827778A/zh
Publication of CN117827778A publication Critical patent/CN117827778A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种CDN超大量级日志数据同步方法和应用系统,通过搭建ClickHouse集群的系统架构,生产者获取原始消息数据,并将原始消息数据放入无锁环形队列,设置配置信息和写入条件,判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据,消费者向自研分流组件请求可用节点,并与可用节点建立连接,根据配置信息处理原始消息数据得到格式消息数据,将格式消息数据写入ClickHouse集群,返回判断无锁环形队列中新放入的原始消息数据是否满足写入条件,若满足,将其写入ClickHouse集群,既保证了超大量级数据导入的实时性,又及时进行数据分析,还实现了应用体系的高性能,高可用,高扩展。

Description

一种CDN超大量级日志数据同步方法和应用系统
技术领域
本申请涉及大数据技术领域,特别涉及一种CDN超大量级日志数据同步方法和应用系统,应用于CDN日志处理领域。
背景技术
实时数仓是指一个能够实时或近实时地处理和分析大规模数据的数据仓库系统。传统的数据仓库通常是批处理的,数据定期导入,然后进行分析,而实时数仓允许数据的即时导入和处理,以便在实时或几乎实时的基础上做出决策,目前行业中实时数仓一般有两种架构:
1.Lambda架构。Lambda架构需要同时存在离线计算和实时计算两条链路。离线一般消费T+1历史数据,覆盖前一天实时计算的结果。实时计算通过消息队列采用增量消费方式消费实时数据。该架构数据准确性好,可靠性高,但是架构相对复杂,运维难度大,综合成本高。
2.Kappa架构。Kappa架构只保留了实时计算链路。通过消息队列的偏移量达到消费历史数据的目的。这种架构相对简单,但是缺点在消息队列中必须保留相对久的历史数据,同时计算层压力大。该架构存在一个变种,将数据聚合等逻辑在数据服务层迁移至olap引擎中,从而减轻数据聚合层面的压力。这个方案的优点是查询灵活度更高,但是对olap引擎的性能和健壮性提出了很高的要求。
以上两种现有的架构无法做到保证超大量数据导入的实时性的同时,又能及时进行数据分析,对整个应用体系的性能的提高也存在很大的挑战性,因此引入clickhouse集群系统架构,但随着集群数据量级越来越大,如何快速热扩容,如何跨数据中心应用的同时保证元数据不超载,如何快速使配置热生效,成为常规clickhouse集群系统架构亟需解决的痛点。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本申请的一个目的在于提出一种CDN超大量级日志数据同步方法和应用系统,既能保证超大量级数据导入的实时性,又能及时进行数据分析,同时可以做到整个应用体系的高性能,高可用,高扩展。
本申请的一个方面提供了一种CDN超大量级日志数据同步方法,包括:
搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署;
所述Kubernetes容器化部署为ClickHouse集群的组件部署方法,整个ClickHouse集群中的各个组件运行在Kubernetes容器中,由Kubernetes容器进行调度和管理;
所述ClickHouse集群内的组件配置方法包括:通过ConfigMap配置直接挂载、宿主机文件挂载、在容器内生成的方式进行挂载;
所述ZooKeeper用于ClickHouse集群的拓扑结构、用户配置、权限、配额的统一管理,实现用户、权限、配额的热更新;
所述ZooKeeper系统架构采用了n组ZooKeeper,每组ZooKeeper负责m个分片;
所述Proxy层用于处理读场景和特殊的写场景,还进行账号校验和请求拓扑调整;
所述自研分流组件用于定时更新可用节点的健康度和负载压力,负责管理请求的流量,生成整个ClickHouse集群范围的请求令牌供客户端使用;
数据写入过程包括:
步骤S100:生产者获取原始消息数据,并将原始消息数据放入无锁环形队列;
所述生产者获取原始消息数据,并将原始消息数据放入无锁环形队列具体指:
生产者从消息中间件获取原始消息数据,所述原始消息数据为应用程序生成的消息或事件,进入消息中间件后由生产者进行获取,并放入无锁环形队列,所述无锁环形队列是用于存放原始消息数据的队列;
步骤S200:设置配置信息和写入条件;
所述配置信息是指:原始消息数据的配置字典和格式模板,包括但不限于:格式判断、分隔符判断、字段映射;
所述写入条件是指:决定消费者从无锁环形队列中取出当前批次的原始消息数据写入ClickHouse集群的条件;
所述写入条件为当无锁环形队列中的原始消息数据量达到Q或时间达到时间阈值S;
优选地,设置写入条件为当无锁环形队列中的原始消息数据量达到Q时,消费者从所述队列中取出原始消息数据;
步骤S300:判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据;
所述判断当前无锁环形队列中的原始消息数据是否满足写入条件是指:在处理新的原始消息数据之前,消费者会判断当前无锁环形队列中的原始消息数据是否满足写入当前批次的条件,当原始消息数据量达到Q或时间达到时间阈值时,消费者才会将原始消息数据写入ClickHouse集群;
步骤S400:消费者向自研分流组件请求可用节点,并与可用节点建立连接;
所述自研分流组件用于定时更新可用节点的健康度和负载压力,并生成ClickHouse集群范围内的请求令牌供客户端使用,达到整体限流的效果;
所述可用节点用于连接消费者和ClickHouse集群,消费者通过可用节点将原始消息数据传入ClickHouse集群;
步骤S500:根据配置信息处理原始消息数据得到格式消息数据;
所述根据配置信息处理原始消息数据得到格式消息数据具体是指:
根据配置信息中的格式判断对原始消息数据的格式进行解析或错误处理,根据分隔符判断识别原始消息数据中的分隔符并将原始消息数据拆分成字段,根据字段映射讲原始消息数据中的字段映射到目标字段上,处理得到格式消息数据;
步骤S600:将格式消息数据写入ClickHouse集群,返回步骤S300,判断无锁环形队列中的原始消息数据是否满足写入条件,重复步骤S300~S500;
所述将格式消息数据写入ClickHouse集群,返回步骤S300,判断无锁环形队列中的原始消息数据是否满足写入条件,重复步骤S300~S500是指:当消费者完成上一批次的原始消息数据写入ClickHouse集群后,判断无锁环形队列中的新一批的原始消息数据是否满足写入条件,若满足写入条件,则重复步骤S300~S500,获取新一批的原始消息数据,并将其写入ClickHouse集群。
本申请的一个方面提供了一种CDN超大量级日志数据同步应用系统,包括:
集群系统架构模块,用于搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署;
原始消息获取模块,用于生产者获取原始消息数据,并将原始消息数据放入无锁环形队列;
配置条件设置模块,用于设置配置信息和写入条件;
写入数据获取模块,用于判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据;
可用节点连接模块,用于消费者向自研分流组件请求可用节点,并与可用节点建立连接;
格式消息处理模块,用于根据配置信息处理原始消息数据得到格式消息数据;
循环写入模块,用于将格式消息数据写入ClickHouse集群,返回写入数据获取模块,判断无锁环形队列中新放入的原始消息数据是否满足写入条件,若满足,将其写入ClickHouse集群。
本申请的一个方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,以实现一种CDN超大量级日志数据同步方法中的步骤。
本申请的一个方面提供了一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行一种CDN超大量级日志数据同步方法中的步骤。
本申请提出的一种CDN超大量级日志数据同步方法相对于现有技术,具备以下优点:
1.降低维护成本:通过将ClickHouse集群分散为多个子集群,每个子集群只需维护部分shard的元数据,有效降低了后期维护的成本,这种分散设计线性降低了ZooKeeper的负载,极大程度上避免了元数据不一致的问题,同时减少了数据库定义语言或数据库插入操作的风险。
2.灵活的集群配置:集群配置可以实现热更新,允许动态添加用户、修改配置、修改集群拓扑,以及在需要时添加分片或节点进行扩容,同时,故障节点可以快速剔除或替换,显著提高了集群的健壮性。
3.安全性和可管理性提升:引入了Proxy层和自研分流组件,实现了账号和密码的映射,避免了直接暴露操作ClickHouse集群的账号密码,这种做法使得ClickHouse集群可以作为资源池使用,有利于平台的Saas化,同时还可以进行全局的限流和资源配置。
4.自动化的健壮性保障:系统能够感知到故障节点,并自动调整集群拓扑,确保集群的健壮性,同时保障了集群数据的一致性。
5.改进的数据写入方式和消费效率:改进的ClickHouse写入方式避免了流量全部通过Proxy,从而避免了Proxy节点网络阻塞的问题。系统还能监控集群健康状况和节点负载压力,及时应对故障节点对集群写入的影响。
引入了无锁环形队列,提高了数据消费的处理效率。在等待原始消息数据达到写入条件之前,系统会提前做好处理准备,一旦原始消息数据就绪,能够迅速进行处理,缩短了处理时间。同时,这种设计解耦了消息中间件和业务逻辑,减少了副本扩容时对消息中间件的影响。
附图说明
图1为本申请提供的一种CDN超大量级日志数据同步方法的流程架构图;
图2为本申请提供的一种CDN超大量级日志数据同步方法的ClickHouse集群的系统架构图;
图3为本申请提供的一种CDN超大量级日志数据同步方法的数据写入流程图;
图4为常规ClickHouse集群的系统架构图;
图5为本申请提供的一种电子设备的结构示意图;
图6是本申请提供的一种可读存储介质结构示意图。
具体实施方式
为了更好地理解本申请,将参考附图对本申请的各个方面做出更详细的说明。应理解,这些详细说明只是对本申请的示例性实施方式的描述,而非以任何方式限制本申请的范围。在说明书全文中,相同的附图标号指代相同的元件。表述“和/或”包括相关联的所列项目中的一个或多个的任何和全部组合。
在附图中,为了便于说明,已稍微调整了元素的大小、尺寸和形状。附图仅为示例而并非严格按比例绘制。如在本文中使用的,用语“大致”、“大约”以及类似的用语用作表近似的用语,而不用作表程度的用语,并且旨在说明将由本领域普通技术人员认识到的、测量值或计算值中的固有偏差。另外,在本申请中,各步骤处理描述的先后顺序并不必然表示这些处理在实际操作中出现的顺序,除非有明确其它限定或者能够从上下文推导出的除外。
还应理解的是,诸如“包括”、“包括有”、“具有”、“包含”和/或“包含有”等表述在本说明书中是开放性而非封闭性的表述,其表示存在所陈述的特征、元件和/或部件,但不排除一个或多个其它特征、元件、部件和/或它们的组合的存在。此外,当诸如“...中的至少一个”的表述出现在所列特征的列表之后时,其修饰整列特征,而非仅仅修饰列表中的单独元件。此外,当描述本申请的实施方式时,使用“可”表示“本申请的一个或多个实施方式”。并且,用语“示例性的”旨在指代示例或举例说明。
除非另外限定,否则本文中使用的所有措辞(包括工程术语和科技术语)均具有与本申请所属领域普通技术人员的通常理解相同的含义。还应理解的是,除非本申请中有明确的说明,否则在常用词典中定义的词语应被解释为具有与它们在相关技术的上下文中的含义一致的含义,而不应以理想化或过于形式化的意义解释。
需要说明的是,在不冲突的情况下,本申请中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明本申请。
实施例1
如图1所示,为本申请提供的一种CDN超大量级日志数据同步方法的流程架构图;
本申请提供的一种CDN超大量级日志数据同步方法,具体步骤包括:
搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署;
如图2所示,为本申请的一种CDN超大量级日志数据同步方法的ClickHouse集群的系统架构图;
所述Kubernetes容器化部署为ClickHouse集群的组件部署方法,整个ClickHouse集群中的各个组件运行在Kubernetes容器中,由Kubernetes容器进行调度和管理;
所述ClickHouse集群内的组件配置方法包括:通过ConfigMap配置直接挂载、宿主机文件挂载、在容器内生成的方式进行挂载;
所述ZooKeeper用于ClickHouse集群的拓扑结构、用户配置、权限、配额的统一管理,实现用户、权限、配额的热更新;
所述ZooKeeper系统架构采用了n组ZooKeeper,每组ZooKeeper负责m个分片;
所述Proxy层用于处理读场景和特殊的写场景,还进行账号校验和请求拓扑调整;
其中,所述特殊的写场景是指不同于普通写入操作的应用程序写入行为,包括但不限于:事务操作、数据验证、写入权限控制、数据变换、特定业务逻辑触发;
所述自研分流组件用于定时更新可用节点的健康度和负载压力,负责管理请求的流量,生成整个ClickHouse集群范围的请求令牌供客户端使用;
其中,所述可用节点的健康度是指ClickHouse集群中各个可用节点的健康度,所述可用节点指网络中的独立计算机实体或虚拟机实例,请求令牌指用于限制系统访问的标识符;
如图3所示,为本申请提出的一种CDN超大量级日志数据同步方法的数据写入流程图,数据写入过程包括步骤如下:
步骤S100:生产者获取原始消息数据,并将原始消息数据放入无锁环形队列;
所述生产者获取原始消息数据,并将原始消息数据放入无锁环形队列具体指:
生产者从消息中间件获取原始消息数据,所述原始消息数据为应用程序生成的消息或事件,进入消息中间件后由生产者进行获取,并放入无锁环形队列,所述无锁环形队列是用于存放原始消息数据的队列;
步骤S200:设置配置信息和写入条件;
所述配置信息是指原始消息数据的配置字典和格式模板,包括但不限于:格式判断、分隔符判断、字段映射;
所述写入条件是指决定消费者从无锁环形队列中取出当前批次的原始消息数据写入ClickHouse集群的条件;
所述写入条件为当无锁环形队列中的原始消息数据量达到Q或时间达到时间阈值S;
优选地,设置写入条件为当无锁环形队列中的原始消息数据量达到Q时,消费者从所述队列中取出原始消息数据;
步骤S300:判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据;
所述判断当前无锁环形队列中的原始消息数据是否满足写入条件是指在处理新的原始消息数据之前,消费者会判断当前无锁环形队列中的原始消息数据是否满足写入当前批次的条件,当原始消息数据量达到Q或时间达到时间阈值时,消费者才会将原始消息数据写入ClickHouse集群;
步骤S400:消费者向自研分流组件请求可用节点,并与可用节点建立连接;
所述自研分流组件用于定时更新可用节点的健康度和负载压力,并生成ClickHouse集群范围内的请求令牌供客户端使用,达到整体限流的效果;
所述可用节点用于连接消费者和ClickHouse集群,消费者通过可用节点将原始消息数据传入ClickHouse集群;
步骤S500:根据配置信息处理原始消息数据得到格式消息数据;
所述根据配置信息处理原始消息数据得到格式消息数据具体是指:
根据配置信息中的格式判断对原始消息数据的格式进行解析或错误处理,根据分隔符判断识别原始消息数据中的分隔符并将原始消息数据拆分成字段,根据字段映射讲原始消息数据中的字段映射到目标字段上,处理得到格式消息数据;
步骤S600:将格式消息数据写入ClickHouse集群,返回步骤S300,判断无锁环形队列中的原始消息数据是否满足写入条件,重复步骤S300~S500;
所述将格式消息数据写入ClickHouse集群,返回步骤S300,判断无锁环形队列中的原始消息数据是否满足写入条件,重复步骤S300~S500是指:当消费者完成上一批次的原始消息数据写入ClickHouse集群后,判断无锁环形队列中的新一批的原始消息数据是否满足写入条件,若满足写入条件,则重复步骤S300~S500,获取新一批的原始消息数据,并将其写入ClickHouse集群。
实施例2
在电信行业CDN系统中,通常会产生大量的日志数据,包括用户访问信息、网络性能数据等。这些日志数据规模庞大,需要实时进行消费和分析,以便快速定位网络问题、用户体验问题,并且进行数据聚合、打点,以便进行数据统计分析,为业务和运维团队提供关键洞察。针对这一需求,引入基于ClickHouse的分布式实时数仓系统和自研特大量级实时导入组件,取得了显著的业务和运维效率提升。
利用自研特大量级实时导入组件,实现了高性能的实时数据消费,生产者将产生的日志数据传输到消息中间件,而消费者则通过无锁环形队列高效地将数据加载到ClickHouse集群中。
基于ClickHouse的分布式实时数仓系统,能够实现即席详单查询,快速定位业务问题,无论是特定用户的访问行为还是网络性能异常,运维团队可以快速发现问题,并采取相应措施。
利用ClickHouse的强大聚合和统计分析能力,可以对海量数据进行灵活聚合。通过生成各种数据报告,了解用户行为趋势,网络性能指标等,为业务决策提供数据支持。
相较于传统的离线和实时消费方式,新系统架构的高性能和稳定性使得团队能够更迅速地响应问题,提高了业务和运维团队的工作效率。
随着业务的发展,利用Kubernetes的弹性扩缩容特性,能够根据需求动态调整集群规模,确保系统始终能够应对不断增长的数据量和复杂的业务需求。
通过引入这套改进的ClickHouse集群的系统架构,不仅实现了在特大量级日志场景下的高效处理,还为业务和运维团队提供了更多数据分析的可能性,帮助他们更好地理解用户行为、改进网络性能,并做出明智的决策,从而提升了整体业务水平和用户体验。
实施例3
如图2和图4所示,图4为常规ClickHouse集群的系统架构图,图2为本申请的一种CDN超大量级日志数据同步方法的ClickHouse集群的系统架构图,所述一种CDN超大量级日志数据同步方法的ClickHouse集群的系统架构与常规ClickHouse集群的区别在于:
ClickHouse集群中的各个组件运行在Kubernetes容器中,由Kubernetes容器进行调度和管理,所述Kubernetes容器化部署方式提供了灵活性和可伸缩性,使得ClickHouse集群的部署和扩展更加方便;
ClickHouse集群的组件配置信息集中储存在Kubernetes容器的ConfigMap对象中,所述ConfigMap配置的组件配置方式使得ClickHouse集群的配置管理更为集中和易于管理;
ZooKeeper实现了用户、权限、配额的热更新,采用了n组ZooKeeper系统架构,每组ZooKeeper负责一个分片,分散了ZooKeeper的负载压力,提高了系统的可扩展性和可靠性;
ClickHouse集群的系统架构层面增加Proxy层,所有读场景和部分特殊的写场景全部通过Proxy处理,不会直接暴露ClickHouse集群的可用节点,Proxy层的引入增强了系统的安全性和可控性;
自研分流组件的限流和流量管理机制保证了系统的稳定性和高可用性;
所述ClickHouse集群的系统架构具备热扩容、热更新的配置和高可用的能力,动态降低系统负载压力。
实施例4
本实施例提供了一种CDN超大量级日志数据同步应用系统,包括:
集群系统架构模块,用于搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署;
原始消息获取模块,用于生产者获取原始消息数据,并将原始消息数据放入无锁环形队列;
配置条件设置模块,用于设置配置信息和写入条件;
写入数据获取模块,用于判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据;
可用节点连接模块,用于消费者向自研分流组件请求可用节点,并与可用节点建立连接;
格式消息处理模块,用于根据配置信息处理原始消息数据得到格式消息数据;
循环写入模块,用于将格式消息数据写入ClickHouse集群,返回写入数据获取模块,判断无锁环形队列中新放入的原始消息数据是否满足写入条件,若满足,将其写入ClickHouse集群。
实施例5
图5是本申请一个实施例提供的电子设备结构示意图。如图5所示,根据本申请的又一方面还提供了一种电子设备。该电子设备可包括一个或多个处理器以及一个或多个存储器。其中,存储器中存储有计算机可读代码,计算机可读代码当由一个或多个处理器运行时,可以执行如上所述的一种CDN超大量级日志数据同步方法。
根据本申请实施方式的方法或系统也可以借助于图5所示的电子设备电子设备的架构来实现。如图5所示,电子设备可包括总线、一个或多个CPU、只读存储器(ROM)、随机存取存储器(RAM)、连接到网络的通信端口、输入/输出组件、硬盘等。电子设备中的存储设备,例如ROM或硬盘可存储本申请提供的一种CDN超大量级日志数据同步方法。一种CDN超大量级日志数据同步方法可例如包括:搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署,生产者获取原始消息数据,并将原始消息数据放入无锁环形队列,设置配置信息和写入条件,判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据,消费者向自研分流组件请求可用节点,并与可用节点建立连接,根据配置信息处理原始消息数据得到格式消息数据,将格式消息数据写入ClickHouse集群,返回判断无锁环形队列中新放入的原始消息数据是否满足写入条件,若满足,将其写入ClickHouse集群。进一步地,电子设备还可包括用户界面。当然,图5所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图5示出的电子设备中的一个或多个组件。
实施例6
图6是本申请一个实施例提供的可读存储介质结构示意图。如图6所示,是根据本申请一个实施方式的可读存储介质。计算机可读存储介质上存储有计算机可读指令。当计算机可读指令由处理器运行时,可执行参照以上附图描述的根据本申请实施方式的一种CDN超大量级日志数据同步方法。存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可包括随机存取存储器(RAM)和高速缓冲存储器(cache)等。非易失性存储器例如可包括只读存储器(ROM)、硬盘、闪存等。
另外,根据本申请的实施方式,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质存储有机器可读指令,所述机器可读指令能够由处理器运行以执行与本申请提供的方法步骤对应的指令,例如:搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署,生产者获取原始消息数据,并将原始消息数据放入无锁环形队列,设置配置信息和写入条件,判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据,消费者向自研分流组件请求可用节点,并与可用节点建立连接,根据配置信息处理原始消息数据得到格式消息数据,将格式消息数据写入ClickHouse集群,返回判断无锁环形队列中新放入的原始消息数据是否满足写入条件,若满足,将其写入ClickHouse集群。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。
可能以许多方式来实现本申请的方法和装置、设备。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本申请的方法和装置、设备。用于方法的步骤的上述顺序仅是为了进行说明,本申请的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本申请实施为记录在记录介质中的程序,这些程序包括用于实现根据本申请的方法的机器可读指令。因而,本申请还覆盖存储用于执行根据本申请的方法的程序的记录介质。
另外,本申请的实施方式中提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
如上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明。应理解的是,以上所述仅为本发明的具体实施方式,并不用于限制本发明。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等均应包含在本发明的保护范围之内。

Claims (12)

1.一种CDN超大量级日志数据同步方法,其特征在于,包括:
搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署;
数据写入过程包括:
步骤S100:生产者获取原始消息数据,并将原始消息数据放入无锁环形队列;
步骤S200:设置配置信息和写入条件;
步骤S300:判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据;
步骤S400:消费者向自研分流组件请求可用节点,并与可用节点建立连接;
步骤S500:根据配置信息处理原始消息数据得到格式消息数据;
步骤S600:将格式消息数据写入ClickHouse集群,返回步骤S300,判断无锁环形队列中的原始消息数据是否满足写入条件,重复步骤S300~S500。
2.如权利要求1所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述ClickHouse集群的系统架构具体为:
所述Kubernetes容器化部署为ClickHouse集群的组件部署方法,整个ClickHouse集群中的各个组件运行在Kubernetes容器中,由Kubernetes容器进行调度和管理;
所述ClickHouse集群内的组件配置方法包括:通过ConfigMap配置直接挂载、宿主机文件挂载、在容器内生成的方式进行挂载;
所述ZooKeeper用于ClickHouse集群的拓扑结构、用户配置、权限、配额的统一管理,实现用户、权限、配额的热更新;
所述ZooKeeper系统架构采用了n组ZooKeeper,每组ZooKeeper负责m个分片;
所述Proxy层用于处理读场景和特殊的写场景,还进行账号校验和请求拓扑调整;
所述自研分流组件用于定时更新可用节点的健康度和负载压力,负责管理请求的流量,生成整个ClickHouse集群范围的请求令牌供客户端使用。
3.如权利要求2所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述生产者获取原始消息数据,并将原始消息数据放入无锁环形队列具体指:生产者从消息中间件获取原始消息数据,所述原始消息数据为应用程序生成的消息或事件,进入消息中间件后由生产者进行获取,并放入无锁环形队列,所述无锁环形队列是用于存放原始消息数据的队列。
4.如权利要求3所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述配置信息是指原始消息数据的配置字典和格式模板,包括但不限于:格式判断、分隔符判断、字段映射。
5.如权利要求4所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述写入条件是指:决定消费者从无锁环形队列中取出当前批次的原始消息数据写入ClickHouse集群的条件,所述写入条件为当无锁环形队列中的原始消息数据量达到Q或时间达到时间阈值S。
6.如权利要求5所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述判断当前无锁环形队列中的原始消息数据是否满足写入条件是指:在处理新的原始消息数据之前,消费者会判断当前无锁环形队列中的原始消息数据是否满足写入当前批次的条件,当原始消息数据量达到Q或时间达到时间阈值时,消费者才会将原始消息数据写入ClickHouse集群。
7.如权利要求6所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述自研分流组件用于定时更新可用节点的健康度和负载压力,并生成ClickHouse集群范围内的请求令牌供客户端使用,达到整体限流的效果。
8.如权利要求7所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述根据配置信息处理原始消息数据得到格式消息数据具体是指:根据配置信息中的格式判断对原始消息数据的格式进行解析或错误处理,根据分隔符判断识别原始消息数据中的分隔符并将原始消息数据拆分成字段,根据字段映射讲原始消息数据中的字段映射到目标字段上,处理得到格式消息数据。
9.如权利要求8所述的一种CDN超大量级日志数据同步方法和应用系统,其特征在于,所述将格式消息数据写入ClickHouse集群,返回步骤S400,判断无锁环形队列中的原始消息数据是否满足写入条件,重复步骤S400~S600是指:当消费者完成上一批次的原始消息数据写入ClickHouse集群后,判断无锁环形队列中的新一批的原始消息数据是否满足写入条件,若满足写入条件,则重复步骤S400~S600,获取新一批的原始消息数据,并将其写入ClickHouse集群。
10.一种CDN超大量级日志数据同步应用系统,其特征在于,包括:
集群系统架构模块,用于搭建ClickHouse集群的系统架构,包括:ClickHouse、ZooKeeper、Proxy层、自研分流组件,采用Kubernetes容器化部署方式进行部署;
原始消息获取模块,用于生产者获取原始消息数据,并将原始消息数据放入无锁环形队列;
配置条件设置模块,用于设置配置信息和写入条件;
写入数据获取模块,用于判断当前无锁环形队列中的原始消息数据是否满足写入条件,当满足时,消费者从无锁环形队列中获取原始消息数据;
可用节点连接模块,用于消费者向自研分流组件请求可用节点,并与可用节点建立连接;
格式消息处理模块,用于根据配置信息处理原始消息数据得到格式消息数据;
循环写入模块,用于将格式消息数据写入ClickHouse集群,返回写入数据获取模块,判断无锁环形队列中新放入的原始消息数据是否满足写入条件,若满足,将其写入ClickHouse集群。
11.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,以实现如权利要求1-9任一所述的一种CDN超大量级日志数据同步方法中的步骤。
12.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1-9任一项所述的一种CDN超大量级日志数据同步方法中的步骤。
CN202311698575.0A 2023-12-12 2023-12-12 一种cdn超大量级日志数据同步方法和应用系统 Pending CN117827778A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311698575.0A CN117827778A (zh) 2023-12-12 2023-12-12 一种cdn超大量级日志数据同步方法和应用系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311698575.0A CN117827778A (zh) 2023-12-12 2023-12-12 一种cdn超大量级日志数据同步方法和应用系统

Publications (1)

Publication Number Publication Date
CN117827778A true CN117827778A (zh) 2024-04-05

Family

ID=90506850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311698575.0A Pending CN117827778A (zh) 2023-12-12 2023-12-12 一种cdn超大量级日志数据同步方法和应用系统

Country Status (1)

Country Link
CN (1) CN117827778A (zh)

Similar Documents

Publication Publication Date Title
CN108632365B (zh) 服务资源调整方法、相关装置和设备
CN111767143B (zh) 交易数据处理方法、装置、设备及系统
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
CN110597858A (zh) 任务数据处理方法、装置、计算机设备和存储介质
CN104407926B (zh) 一种云计算资源的调度方法
CN112905323B (zh) 数据处理方法、装置、电子设备及存储介质
CN111176645A (zh) 面向电网大数据应用的数据集成管理系统及其实现方法
US9910881B1 (en) Maintaining versions of control plane data for a network-based service control plane
CN103533058A (zh) 面向HDFS/Hadoop存储集群的资源监控系统及方法
CN110147470B (zh) 一种跨机房数据比对系统及方法
CN115374102A (zh) 数据处理方法及系统
CN111984505A (zh) 一种运维数据采集引擎及采集方法
CN115022198B (zh) 资源信息获取方法、设备及存储介质
WO2023185309A1 (zh) 数据同步方法和系统、计算机可读存储介质
CN112416568A (zh) 音视频转码任务的时长预估方法和时长预估装置
CN116775420A (zh) 基于Flink流计算的信创云平台资源展示和预警方法及系统
CN111858656A (zh) 一种基于分布式架构的静态数据的查询方法和设备
CN117827778A (zh) 一种cdn超大量级日志数据同步方法和应用系统
WO2022121387A1 (zh) 数据存储方法、装置、服务器及介质
CN115617480A (zh) 一种任务调度方法、装置、系统及存储介质
EP2770447B1 (en) Data processing method, computational node and system
CN115587147A (zh) 一种数据处理方法及系统
CN105760215A (zh) 基于映射规约模型分布式文件系统作业的运行方法
CN112667393B (zh) 分布式任务计算调度框架搭建的方法、装置及计算机设备
CN114020368A (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