腾讯云 CHDFS 助力微信秒级异常检测

2024-03-23 19:18

本文主要是介绍腾讯云 CHDFS 助力微信秒级异常检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.微信全景监控平台介绍

微信全景监控平台,是微信的多维指标 OLAP 监控以及数据分析平台。支持自定义多维度指标上报,海量数据实时上卷下钻分析,提供了秒级异常检测告警能力。

项目高效支撑了视频号、微信支付、搜一搜等等业务快速迭代,已覆盖微信各产品线,峰值数据达到 30+亿条/min3万亿+条/天。微信全景监控平台架构如下图所示:

全景监控平台的指标数据使用 Druid 引擎,Druid 引擎通将 CHDFS 作为其 DeepStorage 来进行数据存储和查询。

2.什么是 Druid

Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。它既支持高速的数据实时摄入处理,也支持实时且灵活的多维数据分析查询。因此 Druid 最常用的场景就是大数据背景下、灵活快速的多维 OLAP 分析。

Druid 节点可以分为以下几类:

  • Master节点:Overlord、Coordinator

  • 实时数据处理节点:MiddleManager、Peon

  • 存储节点:Historical(数据分片)、HDFS(DeepStorage)(数据分片)、MetaDataStorage(数据表结构等)、Zookeeper(IndexingTask信息)

  • 数据访问节点:Broker、Router

3.Druid 与 CHDFS 完美结合

CHDFS(Cloud HDFS)提供标准 HDFS 访问协议分层命名空间的高性能分布式文件系统,由腾讯云存储团队自研的云原生数据存储产品。通过 CHDFS,可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低大数据分析资源成本。

在和 Druid 系统结合过程中,CHDFS 起到了两个重要的作用:

1. 实时节点 (Peon) 和历史节点 (Historical) 数据交流的重要中转。

2. 全量数据分片,Historical 负载均衡和容灾的基石。

  • 整体数据流转架构:

  • Overlord 节点将任务分配给若干个 MiddleManager 节点。

  • MiddleManager 节点创建 Peon 节点,Peon 节点拥有独立的端口和 JVM,作为基本 Worker 进行数据消费和处理。

  • Peon 节点处理数据,打包分片,达到任务周期时间后,将分片发布到 DeepStorage 中。

  • Coordinator 协调 Historical 节点从 CHDFS 中下载 Segment。

  • Historical 下载完成,一次实时分片任务完成,Historical 接管这个分片的数据查询,Peon 销毁。

实时任务分片是从 Peon -> CHDFS(DeepStorage) -> Historical,其中 Overlord 作为实时任务的总 Master 节点负责调度实时任务并且下发任务 MiddleManager,MiddleManager 顾名思义:中间管理者,它接收 Overlord 的调度,并且作为「监工」生产 Worker(Peon) 并且同步任务状态。

  • Segment 容灾

如果一个 Historical 节点宕机或者处于不可用状态,Coordinator 将会感知到并且认为这个 Historical 中的数据分片都丢掉了。

但是 Coordinator 不会立刻让其它的 Historical 从 CHDFS 中加载这些 Segments,会有一个过渡期的数据结构,存储这些丢掉的 Segments 信息,如果这个 Historical 又回来了,那么它还是会对外提供服务,不会有分片转移,如果 Historical 宕机超过一定时间,Coordinator 会调度其它的 Historical 从 DeepStorage 中加载分片。

  • Segment 负载均衡

为了确保 Segment 在 Historical 节点中均匀分布,Coordinator 会自动检查所有的 Historical 的分片分布情况,并且调度利用率最低的 Historical 从 CHDFS 中加载分片,并且让利用率最高的 Historical 丢弃分片,从而完成负载均衡。

4.轻松配置 CHDFS 为 Druid DeepStorage

1、创建 CHDFS,创建权限组、权限规则和挂载点;

2、下载 CHDFS jar GitHub - tencentyun/chdfs-hadoop-plugin: the hadoop plugin for chdfs(下载链接:https://github.com/tencentyun/chdfs-hadoop-plugin);

3、将上述 jar 文件拷贝至extensions/druid-hdfs-storage 和hadoop-dependencies/hadoop-client/x.x.x ;

4、在 Druid 的 conf/druid/_common/common.runtime.properties  下,添加CHDFS 配置:


// segment存储
druid.storage.type=hdfs
druid.storage.storageDirectory=ofs://xxx.chdfs.ap-shanghai.myqcloud.com/usr/xxx/druid/segments// indexer日志
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=ofs://xxx.chdfs.ap-shanghai.myqcloud.com/usr/xxx/druid/indexing-logsconf/druid/_common/ 下添加 core-site.xml 和 hdfs-site.xml

5、配置 hadoop 环境配置 core-site.xml 和 hdfs-site.xml ;


// core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--chdfs 的实现类-->
<property><name>fs.AbstractFileSystem.ofs.impl</name><value>com.qcloud.chdfs.fs.CHDFSDelegateFSAdapter</value>
</property>
<property><name>fs.ofs.impl</name><value>com.qcloud.chdfs.fs.CHDFSHadoopFileSystemAdapter</value>
</property>
<property><name>fs.ofs.tmp.cache.dir</name><value>/home/xxx/data/chdfs_tmp_cache</value>
</property>
<!--appId-->
<property><name>fs.ofs.user.appid</name><value>00000000</value>
</property>
</configuration>// hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property><name>fs.AbstractFileSystem.ofs.impl</name><value>com.qcloud.chdfs.fs.CHDFSDelegateFSAdapter</value>
</property>
<property><name>fs.ofs.impl</name><value>com.qcloud.chdfs.fs.CHDFSHadoopFileSystemAdapter</value>
</property>
<!--本地 cache 的临时目录, 对于读写数据, 当内存 cache 不足时会写入本地硬盘, 这个路径若不存在会自动创建-->
<property><name>fs.ofs.tmp.cache.dir</name><value>/home/qspace/data/chdfs_tmp_cache</value>
</property>
<!--appId 用户需要换成自己的 appid,可前往 https://console.cloud.tencent.com/cam/capi 获取-->
<property><name>fs.ofs.user.appid</name><value>00000</value>
</property>
</configuration>

 

6、通过 Indexer 日志可以看到,数据已经成功写入 HDFS,并且可以被 Historical 节点下载。

5.整体效果

当前,微信监控通过 CHDFS 存储了百 TB 级别,共计百万级别的文件稳定运行没有故障。

相比于原 HDFS 依赖运维手动部署、维护,CHDFS 开箱即用,无运维、裁撤等问题,真正解决了业务的一大痛点。

CHDFS 产品非常稳定,微信监控共使用 百 TB 的存储空间、百万级别的文件,上线至今稳定运行无故障。后续,微信指标监控会逐步将所有的存储 DeepStorage 迁移至 CHDFS,总量达 PB 级别

— END —

这篇关于腾讯云 CHDFS 助力微信秒级异常检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839273

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片