java mongo分组统计_探秘 Dubbo 的度量统计基础设施 - Dubbo Metrics

d2459ac64446f39da78450ff09e44ded.png

对服务进行实时监控,了解服务当前的运行指标和健康状态,是微服务体系中不可或缺的环节。Metrics 作为微服务的重要组件,为服务的监控提供了全面的数据基础。近日,Dubbo Metrics 发布了2.0.1版本,本文将为您探秘 Dubbo Metrics 的起源,及 7 大改进。

Dubbo Metrics 的起源

Dubbo Metrics(原Alibaba Metrics)是阿里巴巴集团内部广泛使用的度量埋点基础类库,有 Java 和 Node.js 两个版本,目前开源的是 Java 版本。内部版本诞生于2016年,经历过近三年的发展和双十一的考验,已经成为阿里巴巴集团内部微服务监控度量的事实标准,覆盖了从系统、JVM、中间件到应用各层的度量,并且在命名规则、数据格式、埋点方式和计算规则等方面,形成了一套统一的规范。

Dubbo Metrics 的代码是基于 Dropwizard Metrics 衍生而来,版本号是3.1.0,当时决定 fork 到内部进行定制化开发的主要原因有两个。

一是社区的发展非常缓慢,3.1.0之后的第3年才更新了下一个版本,我们担心社区无法及时响应业务需求;另一个更重要的原因是当时的3.1.0还不支持多维度的 Tag,只能基于 a.b.c 这样传统的指标命名方法,这就意味着 Dropwizard Metrics 只能在单维度进行度量。然后,在实际的业务过程中,很多维度并不能事先确定,而且在大规模分布式系统下,数据统计好以后,需要按照各种业务维度进行聚合,例如按机房、分组进行聚合,当时的 Dropwizard 也无法满足,种种原因使得我们做了一个决定,内部fork一个分支进行发展。

Dubbo Metrics 做了哪些改进

相对于 Dropwizard Metrics ,Dubbo Metrics 做的改进主要有以下几个方面:

一、引入基于 Tag 的命名规范

如前文所描述,多维度 Tag 在动态埋点,数据聚合等方面相对于传统的 metric 命名方法具有天然的优势,这里举一个例子,要统计一个 Dubbo 服务 DemoService 调用次数和 RT,假设这个服务叫做 DemoService,那么按照传统的命名方式,通常会命名为dubbo.provider.DemoService.qps和dubbo.provider.DemoService.rt。如果只有1个服务的话,这种方法并无太大的问题,但是如果一个微服务应用同时提供了多个 Dubbo 的 Service,那么要聚合统计所有Service 的 QPS 和 RT 就比较困难了。由于 metric 数据具有天然的时间序列属性,因此数据非常适合存储到时间序列数据库当中,要统计所有的 Dubbo 服务的 QPS,那么就需要查找所有名称为dubbo.provider.*.qps的指标,然后对他们进行求和。由于涉及到模糊搜索,这对于绝大部分数据库的实现都是比较费时的。如果要统计更加详细的 Dubbo 方法级别的 QPS 和 RT,那么实现上就会更加复杂了。

36e233bcd109027481c9ef5be19b36bd.png
  • Metric Key:用英文点号分隔的字符串,来表征这个指标的含义
  • Metric Tag:定义了这个指标的不同切分维度,可以是单个,也可以是多个;
  • tag key:用于描述维度的名称;
  • tag value:用于描述维度的值;

同时,考虑到一个公司所有微服务产生的所有指标,都会统一汇总到同一个平台进行处理,因此Metric Key 的命名方式为应当遵循同一套规范,避免发生命名冲突,其格式为appname.category[.subcategory]*.suffix

  • appname: 应用名;
  • category: 这个指标在该应用下的分类,多个单词用'_'连接,字母采用小写;
  • subcategory: 这个指标在该应用下的某个分类下的子分类,多个单词用'_'连接,字母采用小写;
  • suffix: 这个关键的后缀描述了这个指标所度量的具体类型,可以是计数,速率,或者是分布;

在上述例子中,同样的指标可以命名为dubbo.provider.service.qps{service="DemoService"},其中前面部分的名称是固定的,不会变化,括号里面的Tag,可以动态变化,甚至增加更多的维度,例如增加 method 维度dubbo.provider.service.qps{service="DemoService

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

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

相关文章

python可以做运动控制卡吗_今天,终于明白了运动控制器和运动控制卡的区别

原标题:今天,终于明白了运动控制器和运动控制卡的区别 运动控制器是完整的、独立的硬件平台,运动控制卡则需要一个载体(一个系统运行平台,必须基于PC)。 一、从安装使用方式来看 运动控制卡,一般是PCI插槽的&#xff0…

电子计算机技能竞赛数据,2015年浙江省中等职业学校计算机应用技术专业学生职业技能大赛“计算机检测维修与数据恢复”赛项规程.doc...

2015年浙江省中等职业学校计算机应用技术专业学生职业技能大赛“计算机检测维修与数据恢复”赛项规程.doc还剩8页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧,价低环保!内容要点&#x…

设备的dpr_湘潭污水处理设备_处理污水设备生产厂

湘潭污水处理设备_处理污水设备生产厂?氮磷过度排放导致水体富营养化仍是全球关注的水污染热点问题, 而对于传统城市污水处理厂来说, 污水的深度脱氮除磷和同步达标排放仍是需要攻克的难点问题.传统脱氮除磷工艺存在脱氮与除磷对有限碳源的竞争、硝化反应产物对厌氧释磷的抑制…

奥鹏大工17秋计算机文化基础,大工17秋《数字电路与系统》在线作业100分满分答案...

大工17秋《数字电路与系统》在线作业1一、单选题:1.实现与运算功能的逻辑器件称为( )。 (满分:5)A.与门B.或门C.非门D.与或门正确答案:——A——2.变量每增加一个,其函数卡诺图的小格数就增加( )倍。 (满分:5)A.0.5B.1C.1.5D.2正确答…

git 32位_编译64位的BorderlessGaming

BorderlessGaming确实是一款很好用的工具,我主要用来把AS的模拟器全屏,来把Surface当安卓平板用,但是这东西的官方Release和Steam版本都是32位的,不过好在它开源,那就自己动手魔改一份吧首先把源码clone到本地git clone https://github.com/Codeusa/Borderless-Gaming.git用VS打…

十分钟计算机说课稿,足球十分钟说课稿范文(精选3篇)

足球十分钟说课稿范文(精选3篇)作为一位杰出的老师,常常要写一份优秀的说课稿,编写说课稿助于积累教学经验,不断提高教学质量。怎样写说课稿才更能起到其作用呢?以下是小编为大家整理的足球十分钟说课稿范文,欢迎阅读与…

主叫号码未显示怎么设置_微信未授权抖音,应该怎么设置?

微信未授权抖音,应该如何设置?这篇文章,笔点酷玩手把手教你完成。首先我们要明确,这种设置属于将微信账户的授权给第三方,用于统一身份的登录,需要用户自己手动授权“绑定”,也可以随时进行解绑…

eclipse没有日志_「开源资讯」Jboot v3.3.6 发布,更强大的控制台请求日志

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源文件进行热加载。爽…

计算机地址码特点,电脑摇头灯的地址码的设定问题你必须要注意的

原标题:电脑摇头灯的地址码的设定问题你必须要注意的在上一期文章中,我们广州舞台灯光设备批发厂家歌斯达为大家分享了电脑摇头灯的供电电源问题和信号线问题之后,这一次的文章,我们将继续为大家分享更多关于电脑摇头光束灯的相关…

java项目经验怎么写_模具工简历项目经验怎么写

项目经验(案例一)项目时间:2015-04 - 2015-05项目名称:活动策划项目描述:项目介绍通过策划一系列的活动来提高家具店的知名度,从而拔高家具店正式开业后的销售额。我的职责协助经理完成开业前后的活动策划以及提出个人见解&#x…

freemaker if 多个条件_第4天|14天搞定Vue3.0,条件渲染和template

所谓的条件,指的就是满足什么条件,允许做什么事,不满足时,是不允许做的。如共享单车,规定满12周岁或以上才可以骑行,没满的则不被允许。学每门编程语言,条件语句都是必须熟练掌握的,…

服务器用户配置文件在哪里找,管理远程桌面服务的用户配置文件

用户配置文件描述特定用户的配置,包括用户的环境和首选项设置。除非在 RD 会话主机 服务器环境中认真地规划和管理用户配置文件,否则,用户配置文件可能会变大,在用户连接到 RD 会话主机 服务器时可能会造成问题,例如登…

matlaba绘制gps星空图_教大家用EXCEL配合CAD绘制道路标准断面图

在道路绘制横断面时,往往要借助一些针对性比较强的专业软件进行,而作为施工单位的技术人员,却面临着:软件种类五花八门,而实际运用却存在着界面不熟悉,操作熟练度小,导致效率不高的问题&#xf…

微信无法连接到服务器(110087)),110087无法连接网络是什么意思

手机在使用的时候提示110087无法连接网络则说明手机此时无法连接网络是不能上网的,而手机不能上网的原因也是多方面的,找到手机不能上网的原因才能更好的解决问题。首先,可能是手机有短信或者电话正在进入,因此很多手机在该情况下…

pandas 每一列相加_Python数据分析——Pandas 教程(上)

Python 在数据分析领域里是一门非常强大的语言,在数据分析方面有着出色的生态系统。Pandas 包就是其中之一,它的主要特点是导入和分析数据非常的容易,Pandas 类似 Numpy、Matplotlib,提供了单一且方便的方式来处理数据分析和形象化…

ajax刷新iframe页面,通过iframe实现简单的ajax表单提交

之前做项目都是用现成的jquery插件实现表单的校验以及ajax提交,但是今天有个简单的头像图片ajax上传,以及一个很简单的表单提交,实在不想引入一个插件了,本着代码量最小,最简单的原则,照着豆瓣照抄了一个&a…

bat文件设置dns服务器,.bat文件设置IP、DNS

这几天遇到个烦心事,每次开机之后都要去手动去设置一下IP地址,一大串的数字还是有点麻烦,于是就想写个批处理文件设置IP注意:在DOS下设置IP时需要管理员权限运行1.查看机子设置IP需要用到的名字名字是Ethernet2.查看机子在DOS下设…

cv2 画多边形不填充_你不知道的4种方法:python方法绘制扇形

1 说明:1.1 是问答中的我的一个回答。1.1 因为问答中没有代码块的,所以我改为这里写文章,然后链接过去。1.2 4种方法:turtle法、OpenCV法、pygame法和matplotlib法。2 turtle法:2.1 代码:#第1步&#xff1a…

不同角色进入使用不同功能_如何在不同页面上使用不同的Joomla CSS

简介: 我们的一位用户希望其网站首页具有不同的背景。 Joomla确实提供了几种自定义单个页面的方法。本教程将向您介绍两个Joomla选项。让我们开始吧 ...我们的一位用户希望其网站首页具有不同的背景。 Joomla确实提供了几种自定义单个页面的方法。本教程将向您介绍两…

emc文件存储服务器,emc存储怎么挂在linux服务器上

emc存储怎么挂在linux服务器上 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器。例如QQ.exe。本地磁盘映射…