最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

美团开源实时监控系统 CAT 3.0 发布:多语言客户端及多项性能提升

  • 2018-11-07
  • 本文字数:2200 字

    阅读完需:约 7 分钟

美团开源实时监控系统  CAT 3.0 发布:多语言客户端及多项性能提升

CAT 项目背景

CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统。美团点评基础架构部希望在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案,CAT 目前在美团点评的产品定位是应用层的统一监控组件,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等服务。

本文会对 CAT 的客户端、性能等做详细深入的介绍,更多技术细节,欢迎阅读《深度剖析开源分布式监控 CAT》。

使用 CAT 能:

  • 减少故障发现时间

  • 降低故障定位成本

  • 辅助应用程序优化

CAT 技术优势

  • 实时处理:信息的价值会随时间锐减,尤其是在事故处理过程中

  • 全量数据:全量采集指标数据,便于深度分析故障案例

  • 高可用:故障的还原与问题定位,需要高可用监控来支撑

  • 故障容忍:故障不影响业务正常运转、对业务透明

  • 高吞吐:海量监控数据的收集,需要高吞吐能力做保证

  • 可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统

CAT 使用现状

目前,CAT 已经覆盖了美团点评的外卖、酒旅、出行、金融等核心业务线,几乎已经接入美团点评的所有核心应用,并在生产环境中大规模地得到使用。

2016 年初至今,CAT 接入的应用增加了 400%,机器数增加了 900%,每天处理的消息总量高达 3200 亿,存储消息量近 400TB,高峰期集群 QPS 达 650 万 / 秒。

面对流量的成倍增长,CAT 在通信、计算、存储方面都遇到了前所未有的挑战。整个系统架构也经历了一系列的升级和改造,包括消息采样聚合、消息存储、业务多维度指标监控、统一告警等等,项目最终稳定落地。为公司未来几年内业务流量的稳定增长,打下了坚定的基石。

经过 7 年的持续建设,CAT 也在不断发展,我们也希望更好的回馈社区,将 CAT 提供的服务惠及更多的外部公司。我们今年将对开源版本进行较大的迭代与更新,未来也会持续把公司内部一些比较好的实践推广出去,欢迎大家跟我们一起共建这个开源社区。

新版特性

CAT 3.0.0 Release Notes

多语言客户端

随着业务的不断发展,很多产品和应用需要使用不同的语言,CAT 多语言客户端需求日益增多,除 Java 客户端外,目前提供了 C/C++、Python、Node.js、Golang 客户端,基本覆盖了主流的开发语言。对于多语言客户端,核心设计目标是利用 C 客户端提供核心 API 接口作为底层基石,封装其他语言 SDK。

目前支持的主流语言使用指南:

  • Java

  • C/C++

  • Python

  • Node.js

  • Golang

性能提升

消息采样聚合

消息采样聚合在客户端应对大流量时起到了至关重要的作用,当采样命中或者内存队列已满时都会经过采样聚合上报。采样聚合是对消息树拆分归类,利用本地内存做分类统计,将聚合之后的数据进行上报,减少客户端的消息量以及降低网络开销。

通信协议优化

CAT 客户端与服务端通信协议由自定义文本协议升级为自定义二进制协议,在大规模数据实时处理场景下性能提升显著。目前服务端同时支持两种版本的通信协议,向下兼容旧版客户端。

测试环境:CentOS 6.5,4C8G 虚拟机
测试结果:新版相比旧版,序列化耗时降低约 3 倍

消息文件存储

新版消息文件存储进行了重新设计,解决旧版本的文件存储索引、数据文件节点过多以及随机 IO 恶化的问题。

新版消息文件存储为了同时兼顾读写性能,引入了二级索引存储方案,对同一个应用的 IP 节点进行合并,并且保证一定的顺序存储。下图是索引结构的最小单元,每个索引文件由若干个最小单元组成。每个单元分为 4 * 1024 个桶,第一个桶作为我们的一级索引 Header,存储 IP、消息序列号与分桶的映射信息。剩余 4 * 1024 - 1 个桶作为二级索引,存储消息的地址。

新版消息文件存储文件节点数与应用数量成正比,有效减少随机 IO,消息实时存储的性能提升显著。以下为美团点评内部 CAT 线上环境单机消息存储的数据对比:

未来规划

技术栈升级

拥抱主流技术栈,降低学习和开发成本,使用开源社区主流技术工具(Spring、Mybatis 等),建设下一代开源产品。

产品体验

对产品、交互进行全新设计,提升用户体验。

开源社区建设

产品官网建设、组织技术交流。

更多语言 SDK

关于开源

GitHub 连接

CAT 自 2011 年开源以来,Github 收获 5900+ Star,2400+ Forks,被 100+ 公司企业使用,其中不乏携程、陆金所、猎聘网、平安等业内知名公司。在每年全球 QCon 大会、全球架构与运维技术峰会等都有持续的技术输出,受到行业内认可,越来越多的企业伙伴加入了 CAT 的开源建设工作,为 CAT 的成长贡献了巨大的力量。

美团点评基础架构部负责人黄斌强表示,在过去四年中,美团点评在架构中间件领域有比较多的积累沉淀,很多系统服务都经历过大规模线上业务实际运营的检验。我们在使用业界较多开源产品的同时,也希望能把积累的技术开源出去,一方面是回馈社区,贡献给整个行业生态;另一方面,让更多感兴趣的开发工程师也能参与进来,共同加速系统软件的升级与创新。所以,像 CAT 这样的优秀项目,我们将陆续开源输出并长期持续运营,保证开源软件本身的成熟度、支撑度与社区的活跃度,也欢迎大家给我们提出更多的宝贵意见和建议。

结语

这是一场没有终点的长跑,我们整个 CAT 项目组将长期有耐心地不断前行。愿同行的朋友积极参与我们,关注我们,共同打造一款企业级高可用、高可靠的分布式监控中间件产品,共同描绘 CAT 的新未来!

这次开源仅仅是一个新的起点,如果你对 CAT 新版本有一些看法以及建议,欢迎联系我们:cat@dianping.com 或 Github issues

2018-11-07 18:402092
用户头像
张婵 InfoQ 技术编辑

发布了 87 篇内容, 共 51.5 次阅读, 收获喜欢 218 次。

关注

评论 2 条评论

发布
用户头像
提个小问题,最后的github issues的链接不对
2018-11-09 14:46
回复
没有更多了
发现更多内容

面试突击37:线程安全问题的解决方案有哪些?

王磊

Java java面试

深入剖析 RocketMQ 源码 - 负载均衡机制

vivo互联网技术

负载均衡 分布式 java

【架构学习 07】——王者荣耀商城异地多活架构设计

tiger

架构实战营

Flink on K8s 在京东的持续优化实践

Apache Flink

大数据 flink 编程 流计算 实时计算

OceanBase 在江西人社养老统筹系统的实践分享

OceanBase 数据库

oceanbase 江西人社

Apache ShardingSphere 企业行|走进怪兽充电

SphereEx

开源 ShardingSphere SphereEx apache 社区 怪兽充电

java培训-不干程序员了还能干什么

@零度

JAVA开发

Linux驱动开发-编写FT5X06触摸屏驱动

DS小龙哥

4月月更

Ali266首次商用落地,助力优酷码率最高节省40%

阿里云视频云

阿里云 音视频 优酷 编码器 视频云

王者荣耀商城异地多活架构设计

风中奇缘

架构实战营 「架构实战营」

王者荣耀商城异地多活架构设计

smile

建木持续集成平台v2.2.5发布

Jianmu

开源 持续集成 开发运维 建木CI

直播回顾| Apache Pulsar 2.10.0 新特性概览

Apache Pulsar

开源 架构 云原生 Apache Pulsar Apache Pulsar 社区

【课程汇总】OpenHarmony成长计划知识赋能第三期系列课程(附链接)

OpenHarmony开发者

OpenHarmony ETS Openharmony啃论文俱乐部

王者荣耀商城异地多活架构设计

张逃逃

浅谈电商网站开发中用户会话管理机制的设计和实现原理

Jerry Wang

JavaScript 电商 用户管理 电商系统 4月月更

分享回顾|木兰技术开放日,建木团队与你一同畅聊「云原生」

Jianmu

ci 开源 云原生 开发运维

Zadig 构建缓存如何配置才好用?

Zadig

云原生 CI/CD 软件交付 Zadig

【模块七】王者荣耀商城异地多活架构设计

yhjhero

架构训练营

怒肝 JavaScript 数据结构 — 栈篇(一)

杨成功

JavaScript 数据结构 4月月更

为什么Java仍旧生机盎然——对“为什么Java正在消亡”的回应

翊君

Java

带码农《手写Mybatis》进度3:实现映射器的注册和使用

小傅哥

小傅哥 mybatis 手写Mybatis

web前端培训-数组扁平化实现方式

@零度

前端开发 ES6

有了这款工具,定位线上问题事半功倍|云效工程师指北

阿里云云效

云计算 阿里云 程序员 云原生 开发

OpenMLDB 获评 CSDN IT 技术影响力之星 “年度开源项目”奖项

第四范式开发者社区

人工智能 深度学习 数据库 开源 特征平台

最全讲解:GPU技术架构知识

Finovy Cloud

人工智能 GPU服务器 GPU算力

Flink 在 B 站的多元化探索与实践

Apache Flink

大数据 flink 编程 流计算 实时计算

KubeEdge-Sedna边云协同终身学习:迈向次时代AI范式

华为云原生团队

人工智能 开源 AI 边缘计算 边缘技术

[Day7]-[动态规划] 最大子数组和

方勇(gopher)

LeetCode 动态规划 数据结构与算法、

高性能云桌面服务提供商酷栈科技加入龙蜥社区,共建开源新生态

OpenAnolis小助手

开源 云桌面 龙蜥社区 CLA 酷栈科技

大数据培训-程序员坚持不断的学习能成大神吗

@零度

大数据开发

美团开源实时监控系统  CAT 3.0 发布:多语言客户端及多项性能提升_DevOps & 平台工程_张婵_InfoQ精选文章