石家庄网站关键词长春网站建设工作室
石家庄网站关键词,长春网站建设工作室,最火的深圳网站建设,关键词网站查询从用户的视角来感受一个开源项目的成长#xff0c;是我们推出「开发者说」专栏的初衷#xff0c;即在开发者进行开源项目选型时#xff0c;提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿#xff0c;本文是「开发者说」的第9篇#xff0c;作者郑扬勇#xff0…从用户的视角来感受一个开源项目的成长是我们推出「开发者说」专栏的初衷即在开发者进行开源项目选型时提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿本文是「开发者说」的第9篇作者郑扬勇云粒智慧技术专家开源爱好者关注微服务、IOT领域技术希望通过参与开源帮助别人的同时帮助自己。Seata 0.7.0版本中将包含全新的特性 - Metrics作为 APM(Application Performance Management Monitoring)三大基石之一通过它可以快速详尽的获取到TC、TM(规划中)和RM(规划中)中事务的活动状态以及时延等重要统计信息。设计思路Seata 作为一个被集成的数据一致性框架Metrics 模块将尽可能少的使用第三方依赖以降低发生冲突的风险例如不使用 Spring Bean 机制而是使用SPI(Service Provider Interface) 加载扩展。Metrics 模块将竭力争取更高的度量性能和更低的资源开销尽可能降低开启后带来的副作用配置式Metrics 是否激活、数据如何发布取决于对应的配置开始仅在 TC 中完成核心 Transaction 相关指标的实现之后结合社区的需求逐步完善运维所需的其他指标。模块说明Seata Metrics 的模块全部在seata-metrics下0.7版本包含由2个核心 API 模块 seata-metrics-api和seata-metrics-core以及N个实现模块例如seata-metrics-registry-compact、seata-metrics-exporter-prometheus构成seata-metrics-api 模块此模块是 Metrics 的核心将作为 Seata 基础架构的一部分被 TC、TM 和 RM 引用它内部没有任何具体实现代码仅包含接口定义定义的内容包括1、Meter类接口Gauge、Counter、Timer...2、注册容器接口Registry3、Measurement 数据导出接口Exporter提示Metrics 本身在开源领域也已有很多实现例如 Netflix-Spectator、Dropwizard-Metrics、Dubbo-Metrics。它们有的轻而敏捷有的重而强大由于也是“实现”因此不会纳入seata-metrics-api中避免实现绑定。seata-metrics-core 模块Metrics核心模块根据配置组织(加载)1个Registry和N个Exporterseata-metrics-registry-compact 模块这是我们提供的默认(内置)的Registry实现不使用其它Metrics开源库轻量级的实现了以下四种Meter其中包含的 Registry即CompactRegistry它只有接受 measure() 方法调用的时候才计算度量值因此计算窗口完全取决于Exporter的实现故目前不太适合需要多Exporter 的场景使用(如何扩展请参见后文)。说明未来可能增加更丰富复杂的度量器例如Histogram这是一种可以本地统计聚合75th, 90th, 95th, 98th, 99th,99.9th...的度量器适合某些场合但需要更多内存。所有的计量器都将继承自Meter所有的计量器执行 measure() 方法后都将归一化的生成1或N个 Measurement 结果。seata-metrics-exporter-prometheus模块Prometheus 发布器PrometheusExporter将度量数据同步给 Prometheus。工作原理TC中Metrics的初始化步骤和工作原理如下Server 调用 MetricsManager.get().init() 启动 Metrics 的初始化MetricsManager读取配置通过SPI初始化对应的1个Registry和N个Exporter(分别通过RegistryFactory和ExporterFactory)如果初始化成功代表用户启用了 Metrics 特性初始化 MetricsSubscriber 并注册到 EventBusDefaultCore 和 DefaultCoordinator 根据 Transaction 的状态变化触发对应状态的事件MetricsSubscriber 根据状态记录对应的 Metric 至 RegistryExporter 定期从 Registry 中获取数据发布到外部对接的监控系统。可以看出Metrics 定位为一个可选特性如果不配置事件订阅器 MetricsSubscriber并不会创建和注册避免无谓的性能开销。如何使用如果需要开启 TC 的 Metrics需要在其配置中增加配置项## metrics settings metrics { registry-type compact # multi exporters use comma divided exporter-list prometheus exporter-prometheus-port 9898 }启动TC即可在http://tc-server-ip:9898/metrics上获取到Metrics的文本格式数据。提示默认使用9898端口Prometheus 已登记的端口列表在此如果想更换端口可通过metrics.exporter-prometheus-port配置修改。下载并启动 Prometheus下载完毕后修改 Prometheus 的配置文件prometheus.yml在scrape_configs中增加一项抓取 Seata 的度量数据scrape_configs: # The job name is added as a label job to any timeseries scraped from this config. - job_name: prometheus # metrics_path defaults to /metrics # scheme defaults to http. static_configs: - targets: [localhost:9090] - job_name: seata # metrics_path defaults to /metrics # scheme defaults to http. static_configs: - targets: [tc-server-ip:9898]查看数据输出推荐结合配置 Grafana 获得更好的查询效果目前Seata导出的Metrics包括提示seata.transaction(roletc,metersummary,statisticcount,statuscommitted/rollback)和seata.transaction(roletc,metertimer,statisticcount,statuscommitted/rollback)的值可能相同但它们来源于两个不同的度量器。如何扩展如果有下面几种情况1、您不是使用 Prometheus 作为运维监控系统但希望能够将Seata的Metrics数据集成进 Dashboard 中您需要实现新的Exporter例如如果需要对接Zabbix创建seata-metrics-exporter-zabbix模块然后在ExporterType中添加新的Exporter类型最后在metrics.exporter-list中配置。2、您需要更复杂强大的度量器类型这些度量器在其他 Metrics 实现库中已有希望集成这些第三方依赖直接使用您可以不使用内置的 CompactRegistry 的实现完全扩展一个新的Registry库例如希望使用 Netflix Spectator 的实现扩展名为seata-metrics-registry-spectator的模块然后在RegistryType中添加新的Registry类型开发完成后设置metrics.registry-type为对应的类型。3、您需要改变默认 Metric 的 Measurement 输出例如在 Timer 中增加一个min或sd(方差)您可以修改对应 Meter 的实现包括measure()方法返回的 Measurement 列表。未来发展1. 为 TM 和 RM 追加 Metrics 特性TM稍后实现包括诸如seata.transaction(roletm,name{GlobalTransactionalName},metercounter,statusactive/committed/rollback) : 以GlobalTransactionalName为维度区分不同Transactional的状态。RM稍后实现包括诸如eata.transaction(rolerm,name{BranchTransactionalName},modeat/mt,metercounter,statusactive/committed/rollback)以BranchTransactionalName为维度以及AT/MT维度区分不同分支 Transactional 的状态。2. 响应社区扩展更多的 Registry 和 Exporter 以及支持更丰富的 Meter。结束语文介绍的 Metrics 是一个侵入式特性如果用户希望只使用无侵入的 Metrics则可以使用 SkyWalking 在6.3版本中增加的与 Seata 集成的方案。本文作者中间件小哥
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89070.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!