广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”

news2024/10/7 12:21:14

文章目录

    • 广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”
      • 日志中心
        • 实时服务监控 —— 前链路日志分析
          • 日志收敛手段 —— “手术开口”
          • 基于 metrics 的日志分析 —— Prometheus & Graphite
          • 监控服务是怎么监控自身 & 比常规服务更坚强
            • 高扩展、高性能的架构设计
            • 可靠的两套降级方案
            • 监控服务自身
            • 灵活自主的扩缩容机制
          • 成型监控效果
        • 曝光数据流转结算

广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”

日志中心

日志中心,是广告链路中数据的中转站。实时监控全链路服务健壮性、及支撑 结算、曝光、互动 等监测上报。在后链路中发挥着举足轻重的作用。

日志中心是囊括了多个功能模块,依据其功能特征可分为:实时服务监控、监测[曝光/互动/Win]上报、流转结算 三种类型。

实时服务监控 —— 前链路日志分析

目前来看,ADX 链路包含了多个微服务/模块。为解决各服务数据口径问题,及对系统整体健壮性、业务数据增长点分析、细节处的种种痛点隐患 等问题,将对前链路收敛、统一数据指标,形成基于 trace 日志的 metrics 实时监控。

当然这个模块的背后,也存在着压缩成本/资源等额外的多种因素。

日志收敛手段 —— “手术开口”

依据 暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙” 中的 ADX 架构模块图,链路中包含了 前置、流量引擎、竞价、画像、投放引擎 …等五个主要服务模块。
​欢迎关注文末公众号

那么如何收敛这些模块中的日志数据,并形成统一的日志 trace 呢?

熟悉监控系统搭建的同学,可能觉得不是问题,经典的 EFK\Prometheus\Graphite 等等,很多成熟的轮子。不错,不熟悉的同学,可以参看 云原生社区中 监控系列 “监控组件选型对比”做简单的了解。

由于桃李在前,这里就直接上方案了。

在这里插入图片描述
在上述数据流图中,五个模块/微服务都是基于 Docker 镜像方式进行独立部署[Docker 相关可参看 Docker 工程环境搭建及介绍],其中的日志数据将以 resp 形式进行透传,同时以 pvId/uuid 进行耦合。

耦合形成 pv 粒度的 trace 日志。这时候,我们在数据流的必经之路 —— 前置部分,打开一个小口,将数据流出。

注意:resp 形式并非最佳,虽然成本极低,但且易形成带宽及 IO 压力。[ADX
系统可忽略,与其特定的部署方式有关:为极致压缩服务性能,各服务将以同机的方式部署(详细可关注后续文章);agent\SDK\Filebeat
等等其他形式皆可成为替代方案]

就像是做临床手术一样,从咽喉处开口获取全链路的 trace 数据。由于 ADX 数据的规模随业务增长呈正相关,意味着我们需要考虑到流量翻番的特殊情况。
故,依托 中间件具有 “削峰填谷” 的奇效,将数据灌入 Kafka ,流转至下游分析服务及 Hive 存储。

  • Hive 存储所属异步链路,通过 Flink\Spark 等数据挖掘手段的介入,进行 OLAP 分析,进一步辅助业务决策等。
  • 分析服务所属则是同步链路,凭借 Graphite\Prometheus\Zabbix\Open-Falcon 等组件优秀的数据采集\聚合\可视化 等多维能力,搭建涵盖 业务、服务 两方面的实时监控,共同助力业务前进。
基于 metrics 的日志分析 —— Prometheus & Graphite

Metrics 是 服务可观测方向的三要素之一,其他的分别是 Log\Trace。[可观测方向详情可见 云原生热门话题|什么是可观测性]

先说一下技术选型问题,为什么在那么多组件中选了 Prometheus & Graphite ? 主要涉及到下述流程:

  • 市场调研
    • 需要完备的调研手段及方案,可以是开源产品或竞品、甚至是行业中牛耳公司的设计
  • 结合自身条件
    • 充分内视,了解自身长短板。结合调研结果,找出最适合自己的一种
  • 二次开发/定制
    • 落地的同时,要结合情景考量当前方案的痛点,并给予补充开发或定向开发

  • ​欢迎关注文末公众号

在原本方案中只有 Prometheus 组件,但其存在两个痛点。[Prometheus 组件详情参看 普罗米修斯?古希腊泰坦之神?异形?不,新一代企业级监控组件—Prometheus]

  • Prometheus 指标数据准确度 非 100%
    • 这里应对,是采用 Graphite + Prometheus 双监控链路的形式,提供数据支撑。当然涉及到数据的冗余度问题,这里核心指标是双采形式,常规指标为 Prometheus 独有。
  • Prometheus 重启/中断指标将从 0 初始计算
    • 这里采用热备方式进行规避。
监控服务是怎么监控自身 & 比常规服务更坚强

作为监控服务,核心职责是监控其他服务。

在此前提下,隐含了对监控服务的硬性要求,就是你要比常规服务更健壮。总不能对象服务还没挂,监控服务就先歇了。

所以,为保障坚挺的高可用性,监控服务具备一套高扩展、高性能的架构设计、灵活自主的扩缩容机制、外加两套降级方案 和 一套自身服务监控。

高扩展、高性能的架构设计

服务单实例中,采取多协程并发的方式进行编排。将数据注入 内存 chan 中,动态调起多个协程并发进行业务聚合产出数据指标。在极致利用机器的同时,满足动态扩展的特性。

可靠的两套降级方案

为保障服务在流量超高峰,能够持续输出业务数据,设计了两种降级方案。

  • 流量抽样
    • 在顶着最高承载能力下,一次进行 80%、40%、20%、10% 梯度比例抽样,若 数据量超载,则进入第二方案。
  • 保大不保小
    • 对流量进行漏斗模型过滤,只保障部分核心数据正常产出,其他数据任务将全部放弃。
监控服务自身

在服务进行监控的同时,我们设计了自身服务数据 Check 逻辑,确保服务数据无污染,且是正确无误的。

在 上文中 涉及到过 双链路模式,通过对 Graphtie 和 Prometheus 两个不同链路数据的拟合,可以对服务自身的数据情况做出判定。

灵活自主的扩缩容机制

服务采用 分布式方式部署,以服务流量入口阈值、服务出口失败率、服务出口 P90 阈值,三个指标联动模式,为扩缩容时机提供数据依据。

  • 冗余度:常备节点与扩容节点之间,机器规模冗余度在 1.05 左右。

​欢迎关注文末公众号

成型监控效果

数据指标在聚合之后,以数据源模式内嵌至 Grafana 组件中,提供实时、多样化、多维度的可视化效果。[Grafana 详细可参看 五分钟搭建基于 Prometheus + Grafana 实时监控系统]

在这里插入图片描述
在这里插入图片描述
可支持业务维度:曝光量/占比、物料填充量/占比、各投放引擎候选类型量/占比…;服务维度:QPS/失败率/SLA/HttpCode分布 …

曝光数据流转结算

曝光数据,是 ADX 额外关注的部分。而曝光数据的流转 是沟通结算,涉及营收的重要桥梁…


见后续文章!

​欢迎关注文末公众号

推荐阅读:
三行代码搞定 —— 反转链表…
Kafka 高吞吐、高性能核心技术及最佳应用场景…
HTTPS 如何保证数据传输安全 —— TLS 协议…
五分钟搭建基于 Prometheus + Grafana 实时监控系统…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[L1 - 5分合集]心理阴影面积

L1-060 心理阴影面积 分数 5 作者 陈越 单位 浙江大学 题目: 这是一幅心理阴影面积图。我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线)。由…

外贸邮件营销的优势

邮件营销相对于其他营销方式,历史更悠久。邮件营销具有成本低廉、快速、精准的特点。那么邮件营销有哪些优势,才能获得如此的关注。接下来,米贸搜和大家分享一下邮件营销的优势。1.节约成本的考虑:当前,世界经济复苏乏力&#xff…

Kafka消息队列使用及原理

消息队列作用:异步、削峰、解耦 1、kafka简介 ​ Apache Kafka 是一个分布式的流平台,有三个关键的功能: 能够发布(写入)和订阅(读取)事件流持续可靠的存储事件流在事件发生时回顾性的处理事件…

IB生物笔记:Structure and function of organelles

国际学校生物老师解读IB生物,感兴趣的同学记得收藏哦~IB生物分为SL(standard level)和HL(higher level)SL有6个topic∶细胞生物,分子生物,遗传学,生态学,物种进化以及多样性和人体生理。HL除了上述6个topic外还要加上∶…

C++模板类

目录 前言 类模板 模板类继承 前言 随着c发展,有一部分代码就会出现这样的情况:实现的内容相同,但是参数不同。模板类就是为解决这类情况来的,是一种泛型编码。即与数据类型无关的通用程序设计技术。 模板类本身不占空间&…

C语言模块化

🌞欢迎来到C语言的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误,…

MySQL的行锁总结

文章目录前言一、行锁的介绍二、行锁的使用三、使用行锁所带来的问题四、死锁和死锁检测前言 上篇文章已经学习了MySQL的全局锁和表锁,今天这篇文章我们对行锁进行以下学习 一、行锁的介绍 行锁就是针对数据表中行记录的锁,比如事务A更新了一行&#x…

切面AOP

1.2 AOP体系与概念 简单地去理解,其实AOP要做三类事: 在哪里切入,也就是权限校验等非业务操作在哪些业务代码中执行。 在什么时候切入,是业务代码执行前还是执行后。 切入后做什么事,比如做权限校验、日志记录等。 因…

ES索引切分

提示:对于一些日志类的数据,我们常用到es作为存储,数据量过大时,可能会用到索引切分,这里可以参考 ES索引切分前言方案一:ES索引切分验证(policy策略)配置ilm策略 (max_d…

照片如何修复清晰度?这些修复方法值得你收藏

我们都知道以前的拍照技术落后,拍摄出来的照片像素都比较低,从而导致照片有些模糊不清,再加上我们保存不当,很多旧照片都变得模糊破损,因此很多人为了不让这些旧照片消失,都会选择找人来修复这些旧照片&…

爬虫 大规模数据 采集心得和示例

本篇主要介绍网站数据很是大的采集心得数据库1. 什么样的数据才能称为数据量大:编程我以为这个可能会由于每一个人的理解不太同样,给出的定义 也不相同。我认为定义一个采集网站的数据大小,不单单要看这个网站包括的数据量的大小,…

MySQL高级【锁】

1:锁的概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数据库必…

基于java springmvc+mybatis酒水商城管理系统设计和实现

基于java springmvcmybatis酒水商城管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取…

5.7、TCP 可靠传输的实现

1、TCP基于以字节为单位的滑动窗口来实现可靠传输 TCP 基于以字节为单位的滑动窗口\color{red}以字节为单位的滑动窗口以字节为单位的滑动窗口来实现可靠传输 如下所示,假定数据传输只在一个方向进行 这是发送方待发送字节的序号 假设发送方收到了来自一个接收方的…

RHCE第六天之DNS域名解析服务器详解

文章目录一、 域名解析服务器介绍二、DNS域名解析的过程三、搭建DNS服务器的详细配置四、实验练习一、 域名解析服务器介绍 DNS(Domain Name System) 是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够…

Node转换Excel成JSON

目前想使用Cocos Creator做一个文字游戏,类似于我的人生重开模拟器。 那么其中最重要的一点就是关于数据的存储了。在我的人生重开模拟器中大部分事件和天赋的数据是存储在excel表格当中的,当然如果要使用Cocos Creator,因为我不准备布置服务…

JDBC核心技术_第8章:数据库连接池

目录8.1 JDBC数据库连接池的必要性8.2 数据库连接池技术8.3 多种开源的数据库连接池8.3.1 C3P0数据库连接池8.3.2 DBCP数据库连接池8.3.3 Druid(德鲁伊)数据库连接池8.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模…

【蓝桥杯系列】2020省赛真题之回文日期

⭐️前面的话⭐️ 本篇文章介绍来蓝桥杯真题之回文日期的题解,展示语言java。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由未见花闻原创&#xff0c…

ArcGIS基础实验操作100例--实验81创建点群最小边界几何

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验81 创建点群最小边界几何 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

MySQL是怎么保证高可用的?

在上一篇文章中,我和你介绍了 binlog 的基本内容,在一个主备关系中,每个备库接收主库的 binlog 并执行。 正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。 但是,MySQL 要提供高可用能力…