微信全景监控平台介绍

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

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

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

什么是 Druid

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

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

Master节点:Overlord、Coordinator

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

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

数据访问节点:Broker、Router

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 丢弃分片,从而完成负载均衡。

轻松配置 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-logs

conf/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 节点下载。

整体效果

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

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

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

腾讯云 CHDFS 助力微信秒级异常检测的更多相关文章

  1. tomcat、腾讯云主机和微信

    腾讯云主机和微信 申请一个腾讯云上的服务器(在这里我是申请的Linux系统,里面自己事先装好了tomcat.jdk等所需要用到的工具,注意做好必要的配置工作) 连接服务器和部署项目时必要的步骤:1.将 ...

  2. 腾讯云 CHDFS — 云端大数据存算分离的基石

    随着网络性能提升,云端计算架构逐步向存算分离转变,AWS Aurora 率先在数据库领域实现了这个转变,大数据计算领域也迅速朝此方向演化. 存算分离在云端有明显优势,不但可以充分发挥弹性计算的灵活,同 ...

  3. EasyNVR结合阿里云/腾讯云CDN实现微信/小程序直播的方案

    背景需求: 许多客户有这样的需求:微信公众号做为平台来对摄像机进行直播:可以让用户随时随地打开公共号就可以观看:保证画面的流畅性:保证视频的并发访问量等. 问题分析: 虽然需求看似很简单,其实真正实现 ...

  4. 磊哥测评之数据库SaaS篇:腾讯云控制台、DMC和小程序

    本文由云+社区发表 作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大.数据库的性能如处理速度.对高并发的支持在节节攀升,同时分布式.实时的数据分析.兼容主流数据库等强大的性能 ...

  5. 为 “超级大脑”构建支撑能力,腾讯云聚焦AI技术落地

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月24日,以"无界数据.无限智能"为主题的2018腾讯"云+未来"峰会AI大数据分论坛在广州拉开帷 ...

  6. 腾讯云分布式高可靠消息队列服务CMQ架构

    在分布式大行其道的今天,我们在系统内部.平台之间广泛运用消息中间件进行数据交换及解耦.CMQ是腾讯云内部自研基于的高可靠.强一致.可扩展分布式消息队列,在腾讯内部包括微信手机QQ业务红包.腾讯话费充值 ...

  7. 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化

    作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...

  8. 腾讯云AI平台张文杰:构建一站式机器学习服务平台

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月24日,以"无界数据无限智能"为主题的腾讯"云+未来"峰会AI大数据分论坛在广州拉开帷幕.此次分 ...

  9. 万物智联,腾讯云 IoT 边缘计算揭秘——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:现在是万物互联的时代,智能穿戴设备,智能家居,无人商业,改变了我们的生活方式.预计到2021年,全球物联网设数将达到150亿,超过手机 ...

  10. 腾讯云+社区开发者大会开启报名,WeGeek 邀你一起聊聊小程序

    刚满 2 岁的微信小程序,正给我们带来一种全新轻便的生活方式. 内测时的青涩还历历在目,到现在,小程序生态已日渐成熟.超过 150 万开发者在这里找到了自己的新天地,打磨出超过 100 万个小程序. ...

随机推荐

  1. Android Qcom USB Driver学习(八)

    因为要看usb charging的问题,所以需要补充一下battery的相关知识,算是入门吧 BAT SCH (1)VBATT_VSNS_P (2)BAT_THERM (3)I2C_SDA (4)I2 ...

  2. OpenCL架构

    OpenCL提供了一种统一的编程接口,使得程序员可以编写一次代码,然后在多种处理器上运行. 平台模型 OpenCL平台总是包括一个宿主机(host).宿主机与OpenCL程序外部的环境交互,包括I/O ...

  3. Blinn-Phong

    为什么出现Blinn-Phong 虽然Phong性能较高,但是在某些镜面反射条件下就会失效.比如下图,我们明显发现了一条明显的亮暗边界线,这在实际场景中是不应该发生的(实际场景中不会出现这种明显的过渡 ...

  4. 60 .vue的生命周期和小程序的生命周期区别

    https://blog.csdn.net/weixin_43359799/article/details/123137288

  5. Android复习(三)清单文件中的元素——>uses-configuration、uses-library、uses-permission、uses-permission-sdk-23

    <uses-configuration> 语法: <uses-configuration android:reqFiveWayNav=["true" | &quo ...

  6. HOW MANY OF THEM?(让人匪夷所思的一题)

    题面 由n个节点构成的,割边数不超过m条的无向连通图个数(无自环和重边),答案对1e9+7取模. \[------------------------------------------- \] 真是 ...

  7. Tailwind CSS:最受欢迎的实用类CSS框架!Github Star达到了惊人的82.5K!

    在前端开发的世界中,随着项目的复杂性增加,如何高效管理样式,快速开发出响应式.美观的界面成为每个开发者关心的问题.Tailwind CSS 作为一个革命性的实用类(utility-first)CSS ...

  8. 云原生周刊:CNCF 2023 年度调查报告 | 2024.4.15

    开源项目推荐 highlight 该项目是一个开源全栈监控平台.其功能包括错误监控.会话重放.日志记录.分布式跟踪等. Helm Compose Helm Compose 是一个 helm 插件,用于 ...

  9. 基于 WeDataSphere Prophecis 与 KubeSphere 构建云原生机器学习平台

    KubeSphere 开源社区的小伙伴们,大家好.我是微众银行大数据平台的工程师周可,接下来给大家分享的是基于 WeDataSphere 和 KubeSphere 这两个开源社区的产品去构建一个云原生 ...

  10. 在 VMware vSphere 中构建 Kubernetes 存储环境

    作者:马伟,青云科技容器顾问,云原生爱好者,目前专注于云原生技术,云原生领域技术栈涉及 Kubernetes.KubeSphere.kubekey等. 相信很多小伙伴和企业在构建容器集群时都会考虑存储 ...