B站基于Clickhouse的下一代日志体系建设实践

这篇具有很好参考价值的文章主要介绍了B站基于Clickhouse的下一代日志体系建设实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01 背景介绍

日志作为线上定位问题排障的重要手段,在可观测领域有着不可替代的作用。

稳定性、成本、易用性、可扩展性都是日志系统需要追求的关键点。

B站基于Elastic Stack的日志系统(Billions) 从2017建设以来, 已经服务了超过5年,目前规模超过500台机器,每日写入日志量超过700TB。

ELK体系是业界最常用的日志技术栈,在传输上以结合规范key的JSON作为传输格式,易于多种语言实现和解析,并支持动态结构化字段。存储上ElasticSearch支持全文检索,能够快速从杂乱的日志信息中搜寻到关键字。展示上Kibana具有美观、易用等特性。

随着业务系统的高速发展,日志系统的规模也随之快速扩展,我们遇到了一系列的问题,同时可观测业界随着OpenTelemetry规范的成熟,推动着我们重新考量,迈入下一代日志系统。 02 遇到的问题

  • 首先必须要提的就是成本和稳定性。日志作为一种应用产生的实时数据,随着业务应用规模发展而紧跟着扩大。日志系统必须在具备高吞吐量的同时,也要具备较高的实时性要求。Elasticsearch由于分词等特性,在写吞吐量上有着明显的瓶颈,分词耗CPU且难以解决热点问题。如果资源冗余不足,就容易导致稳定性下降,日志摄入发生延迟,日志的延迟会对排障产生极大负面影响。

  • 同时由于压缩率不高的原因,ES的存储成本也较高,对内存有着较高的要求。这些因素导致我们日志必须进行常态化的采样和限流,对用户使用上造成了困扰,限制了排障的场景。

  • 内存使用率的问题也迫使我们必须将warm阶段的索引进行Close,避免占用内存。用户如果需要查询就必须操作进行Open,牺牲了一定的易用性。

  • 为了稳定性和成本,动态Mapping也必须被关闭,有时用户引导不到位,就会导致用户发现自己搜索的日志遗留了Mapping配置而导致难以追溯查询。

  • 在运维上,ES7之前缺少生命周期的能力,我们必须维护一整套生命周期相关组件,来对索引进行预创建、关闭和删除,不可避免的带来高维护成本。

  • Kibana虽然好用,但也不是没有缺点的,整体代码复杂,二次开发困难。且每次升级ES必须升级到对应的Kibana版本也增加了用户迁移的成本。还有一点就是Kibana Query虽然语法较为简单,但对于初次接触的研发还是有一定的学习成本的。

  • 在采集和传输上,我们制定了一套内部的日志格式规范,使用JSON作为传输格式,并提供了Java和Golang的SDK。这套传输格式本身在序列化/反序列化上性能一般,且私有协议难以避免兼容性和可维护性问。

03 新架构体系 针对上述的一系列问题,我们设计了Bilibili日志服务2.0的体系,主要的进化为使用ClickHouse作为存储,实现了自研的日志可视化分析平台,并使用OpenTelemetry作为统一日志上报协议。

B站基于Clickhouse的下一代日志体系建设实践

​如图所示为日志实时上报和使用的全链路。日志从产生到消费会经过采集→摄入 →存储 →分析四个步骤,分别对应我们在链路上的各个组件,先做个简单的介绍:

  • OTEL Logging SDK

  • 完整实现OTEL Logging日志模型规范和协议的结构化日志高性能SDK,提供了Golang和Java两个主要语言实现。

  • Log-Agent

  • 日志采集器,以Agent部署方式部署在物理机上,通过Domain Socket接收OTEL协议日志,同时进行低延迟文件日志采集,包括容器环境下的采集。支持多种Format和一定的加工能力,如解析和切分等。

  • Log-Ingester

  • 负责从日志 kafka 订阅日志数据, 然后将日志数据按时间维度和元数据维度(如AppID) 拆分,并进行多队列聚合, 分别攒批写入ClickHouse中.

  • ClickHouse

  • 我们使用的日志存储方案,在ClickHouse高压缩率列式存储的基础上,配合隐式列实现了动态Schema以获得更强大的查询性能,在结构化日志场景如猛虎添翼。

  • Log-Query

  • 日志查询模块,负责对日志查询进行路由、负载均衡、缓存和限流,以及提供查询语法简化。

  • BLS-Discovery

  • 新一代日志的可视化分析平台,提供一站式的日志检索、查询和分析,追求日志场景的高易用性,让每个研发0学习成本无障碍使用。

下边我们将针对几个重点进行详细设计阐述。 3.1 基于ClickHouse的日志存储 新方案的最核心的部分就是我们将日志的通用存储换成了ClickHouse。 先说结果,我们在用户只需要付出微小迁移成本的条件下( 转过来使用SQL语法进行查询),达到了10倍的写入吞吐性能,并以原先日志系统 1/3的成本,存储了同等规模量的日志。在查询性能上,结构化字段的查询性能提升2倍, 99%的查询能够在3秒内完成。 下图为同一份日志在Elasticsearch, ClickHouse和ClickHouse(zstd)中的容量, 最终对比ES达到了 1:6。

B站基于Clickhouse的下一代日志体系建设实践

​ClickHouse方案里另一个最大的提升是写入性能,ClickHouse的写入性能达到了ES的10倍以上。

B站基于Clickhouse的下一代日志体系建设实践

​在通用结构化日志场景,用户往往是使用动态Schema的,所以我们引入了隐式列Map类型来存储动态字段, 以同时获得动态性和高查询性能,稍后将会重点介绍隐式列的实现。

我们的表设计如下,我们针对每个日志组,都建立了一张复制表。表中的字段分为公共字段(即OTEL规范的Resource字段, 以及trace_id和span_id等),以及隐式列字段,string_map,number_map,bool_map 分别对应字符串字段,数字字段和布尔字段。我们对常用的日志值类型进行分组,使用这三个字段能满足大部分查询和写入的需求。文章来源地址https://www.toymoban.com/news/detail-451003.html

到了这里,关于B站基于Clickhouse的下一代日志体系建设实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 下一代架构指南:DDD

    移动端架构与网站架构的区别是什么?网易新闻客户端的架构演进历程是怎样的?为什么要选择 DDD 思想来指导重构?DDD 落地中应当关注哪些方面?带着这些问题我们来看下文。(节选自网易新闻App架构重构实践) 当前,大多数移动开发团队选择以 MVP 作为业务层的核心架构

    2023年04月10日
    浏览(55)
  • Deno 下一代JavaScript运行时

    目录 1、简介 2、Deno 的特点 3、Deno 和 Node 的区别 4、TypeScript开箱即用 5、内置的基本开发工具 独立可执行文件 测试运行器 代码格式化程序 代码linter  6、专为云而建 7、从浏览器到后端的一致代码 TC39 WinterCG 8、高性能联网 9、数百万个社区模块 10、相关框架 Deno是为执行Jav

    2024年02月08日
    浏览(63)
  • 边缘计算:下一代计算模式的突破

      随着物联网、人工智能和大数据等技术的不断发展,计算需求变得越来越复杂,传统的云计算模式已经难以满足快速增长的数据处理需求。在这样的背景下,边缘计算作为一种全新的计算模式崭露头角,为我们带来了更加灵活、高效的解决方案。本文将深入探讨边缘计算的

    2024年02月12日
    浏览(61)
  • 下一代网络爬虫:AI agents

    下一代网络爬虫是爬虫级 AI agents。 由于现代网页的复杂性,现代爬虫都倾向于使用高性能分布式 RPA,完全和真人一样访问网页,采集数据。由于 AI 的成熟,RPA 工具也在升级为 AI agents。因此,网页爬虫的发展趋势是爬虫级智能体(AI agents),或者我喜欢称为 数字超人 。 互联

    2024年01月22日
    浏览(55)
  • 下一代Windows命名为Win 11?微软的下一步要来了

    这包括一个新的开始菜单,新的系统图标,文件资源管理器的改进,以及结束Windows 95时代的图标,圆角和对内置Windows应用程序的更新也在计划之中。 除了用户界面之外,Windows的重大变化似乎也在稳步进行中。微软似乎准备解决很多挥之不去的问题,计划对多个显示器上的应

    2024年04月12日
    浏览(46)
  • 下一代存储解决方案:湖仓一体

    文章首发地址 湖仓一体是将数据湖和数据仓库相结合的一种数据架构,它可以同时满足大数据存储和传统数据仓库的需求。具体来说,湖仓一体可以实现以下几个方面的功能: 数据集成: 湖仓一体可以集成多个数据源,包括结构化和非结构化数据,例如传统关系型数据库、

    2024年02月10日
    浏览(47)
  • 下一代Edge AI的应用初探

    如您所见,AI已不再只是科幻电影的经典主题,它正在以惊人的速度被应用到我们日常生活中的方方面面,并从个人关系到工作项目上,逐渐改变着我们的想法或行为。 其中,一个最为典型的领域当属NextGEN Edge AI(下一代边缘人工智能)应用。它能够通过诸如:排名、分类、

    2024年02月21日
    浏览(64)
  • 下一代图片格式AVIF,赶紧用起!

    介绍AVIF图片格式的特点和在Web端显示AVIF格式图片的两种方案。 AVIF是一种基于AV1视频编码的新图像格式,相对于JPEG、Wep等图片格式压缩率更高,并且画面细节更好。AVIF通过使用更现代的压缩算法,在相同质量的前提下,AVIF文件大小是JPEG文件的35%左右。 AVIF支持高动态范围(

    2024年02月05日
    浏览(55)
  • 下一代 Vue3 Devtools 正式开源

    Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用程序。 Vue DevTools:Unleash Vue Developer Experience. Enhance your Vue development journey with an amazing experience! 典型的功能特征包括: Pages:显示当前的路由以及一些有用的信息,并提供在

    2024年01月18日
    浏览(45)
  • 移动云COCA架构,重新定义下一代云

    当前,算力已经成为 全球科技竞争的焦点 为此,移动云重磅发布 「移动云COCA(Compute on chip Architecture)软硬一体片上计算架构」 以下简称移动云COCA架构 以此打造国家级自主可控的 高性能算力底座 带动国产化智算产业成熟发展 抓住云计算技术定义权 引领云计算市场下一个

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包