写点什么

CAT 3.0 开源发布,支持多语言客户端及多项性能提升

  • 2020-02-25
  • 本文字数:2248 字

    阅读完需:约 7 分钟

CAT 3.0 开源发布,支持多语言客户端及多项性能提升

项目背景


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


本文会对 CAT 的客户端、性能等做详细深入的介绍,前不久我们也发过一篇 CAT 相关的文章,里面详细介绍了 CAT 客户端和服务端的设计思路,欲知更多细节,欢迎阅读《深度剖析开源分布式监控CAT》

产品价值

  • 减少故障发现时间。

  • 降低故障定位成本。

  • 辅助应用程序优化。

技术优势

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

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

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

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

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

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

使用现状

目前,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。



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


性能提升

  • 消息采样聚合


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



  • 通信协议优化


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


  • 测试环境:CentOS 6.5,4C8G 虚拟机

  • 测试结果:新版相比旧版,序列化耗时降低约 3 倍

  • 消息文件存储


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


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



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


未来规划

  • 技术栈升级

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

  • 产品体验

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

  • 开源社区建设

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

  • 更多语言 SDK

关于开源

https://github.com/dianping/cat


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



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

结语

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


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


2020-02-25 20:331197

评论

发布
暂无评论
发现更多内容

netty系列之:内置的Frame detection

程序那些事

Java Netty 程序那些事

【LeetCode】反转字符串中的元音字母Java题解

Albert

算法 LeetCode 8月日更

测试开发之系统篇-Docker常用操作

禅道项目管理

Docker 容器 测试开发

接口文档生成工具 一键生成文档 ApiPost

CodeNongXiaoW

项目管理 大前端 测试 后端 接口管理工具

接口测试的时候如何一键获取cookie,并在其他接口引用

与风逐梦

软件测试 接口测试 Cookie

李欲晓:加强关键信息基础设施安全保护的法治基石

郑州埃文科技

抖音快手短视频SEO系统开发

web技术分享| 实现WebRTC多个对等连接

anyRTC开发者

音视频 WebRTC JavaScrip web技术分享

抖音快手短视频营销软件系统开发案例

Go 语言, 一文彻底搞懂 map 实现原理

微客鸟窝

Go 语言 8月日更

fil价格走势分析?fil为什么会大涨?

区块链 分布式存储 IPFS fil价格走势 fil大涨

前端基础四之JavaScriptDOM与事件

ベ布小禅

8月日更

用手机写代码:基于Serverless的在线编程能力探索

刘宇

你真的了解二叉树吗?(树形结构基础篇)

有道技术团队

技术 二叉树 网易

fil为什么会暴涨?fil暴涨还会持续吗?

区块链 分布式存储 IPFS fil币价行情 fil币会大涨吗?

一文带你了解NB-IoT标准演进与产业发展

华为云开发者联盟

物联网 IoT NB-IoT

基于Serverless架构的社区文章管理小工具

刘宇

接口管理工具APIPOST的预/后执行脚本里,常见的响应参数变量和常用方法集合——apipost

Proud lion

大前端 后端 Postman 开发工具 接口文档

SpringApplication启动run了啥

Rubble

8月日更

LeetCode题解:27. 移除元素,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

从源码角度解析线程池中顶层接口和抽象类

华为云开发者联盟

Java 线程 软件开发 高并发 线程池

Android SDK 启动退出方案演进

神策技术社区

大前端 后端 代码 数据采集

Swift 实现聚光灯动效

fuyoufang

swift 8月日更

抖音快手短视频平台获客系统开发内容

缓存 | Redis 缓存避坑指南

RadonDB

数据库 redis

华为海外女科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大?

华为云开发者联盟

数据库 云数据库 GaussDB(for MySQL) 云栈 事务数据库服务

神策数据微信小程序 SDK 架构解析

神策技术社区

大前端 后端 数据 代码 数据采集

抖音快手短视频询盘系统开发

抖音快手短视频SEO营销系统软件开发价格

JNI 提示

Changing Lin

8月日更

Go语言那些事儿之浅谈协程并发竞争资源问题

Regan Yue

Go 语言 8月日更

CAT 3.0 开源发布,支持多语言客户端及多项性能提升_文化 & 方法_美团技术团队_InfoQ精选文章