带你读《Apache Dubbo微服务开发从入门到精通》——二、 微服务集群监控(1)

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 带你读《Apache Dubbo微服务开发从入门到精通》——二、 微服务集群监控(1)

二、 微服务集群监控

 

1. 监控指标

 

a) 指标接入说明

 

b) 指标体系设计

 

Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送

 

指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储

 

本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出

 

指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus

 

c) 结构设计

 

移除原来与Metrics相关的类

 

创建新模块dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig作为该模块的配置类

 

使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换


d) 数据流转

 image.png


 

e) 目标

 

指标接口将提供一个MetricsService,该Service不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明。


public interface MetricsService {
    /**
     * Default {@link MetricsService} extension name.
     */
    String DEFAULT_EXTENSION_NAME = "default";
    /**
     * The contract version of {@link MetricsService}, the future update must make sure compatible.
     */
    String VERSION = "1.0.0";
    /**
     * Get metrics by prefixes
     *
     * @param categories categories
     * @return metrics - key=MetricCategory value=MetricsEntityList
     */
    Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories);
    /**
     * Get metrics by interface and prefixes
     *
     * @param serviceUniqueName serviceUniqueName (eg.group/interfaceName:version)
     * @param categories categories
     * @return metrics - key=MetricCategory value=MetricsEntityList
     */
    Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(String serviceUniqueName, List<MetricsCategory> categories);
    /**
     * Get metrics by interface、method and prefixes
     *
     * @param serviceUniqueName serviceUniqueName (eg.group/interfaceName:version)
     * @param methodName methodName
     * @param parameterTypes method parameter types
     * @param categories categories
     * @return metrics - key=MetricCategory value=MetricsEntityList
     */
    Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(String serviceUniqueName, String methodName, Class<?>[] parameterTypes, List<MetricsCategory> categories);
}

 


其中MetricsCategory设计如下:

 

image.png

 

MetricsEntity设计如下

 

image.png

 

 

 《Apache Dubbo微服务开发从入门到精通》——可视化监测服务状态——二、 微服务集群监控(2):https://developer.aliyun.com/article/1224286


 

 



 


 


相关文章
|
1月前
|
Dubbo Java 应用服务中间件
性能工具之JMeter Dubbo 脚本开发
【5月更文挑战第13天】性能工具之JMeter Dubbo 脚本开发
40 3
性能工具之JMeter Dubbo 脚本开发
|
8天前
|
监控 持续交付 数据安全/隐私保护
Python进行微服务架构的监控
【6月更文挑战第16天】
29 5
Python进行微服务架构的监控
|
6天前
|
监控 API 数据安全/隐私保护
构建高效后端服务:微服务架构的实践与挑战
【6月更文挑战第23天】在现代软件开发中,微服务架构已成为设计高性能、可扩展后端系统的首选模式。本文将深入探讨微服务的设计原则、实践方法及其面临的技术挑战,旨在为开发者提供一个全面的微服务实施指南。
21 3
|
18天前
|
消息中间件 运维 监控
微服务架构中的服务通信与数据一致性挑战
在微服务架构的海洋中,服务之间的通信和数据一致性问题犹如潜藏的暗礁和漩涡,随时可能威胁到整个应用的健康运行。本文将深入探讨微服务间通信机制的选择、数据一致性维护的策略,以及面对网络延迟和分区容忍性时如何保持系统的灵活性和健壮性。通过分析常见的模式和最佳实践,旨在为开发者提供一套应对这些挑战的航海图。
|
23天前
|
缓存 网络协议 算法
微服务架构之从类库到服务之服务发现
服务发现是分布式系统中的核心技术,其实现需要在可用性和一致性之间进行权衡。通过合理设计服务注册中心的架构,并采用有效的健康检查和缓存机制,可以提高系统的可靠性和可用性。不同的服务发现框架各有优缺点,选择适合的框架需要根据具体需求进行权衡和取舍。总之,服务发现的有效实现对于构建可靠的大型分布式系统至关重要。
16 3
|
2天前
|
JSON Java Spring
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
|
2天前
|
存储 运维 Prometheus
微服务监控:确保分布式系统的可观察性与稳定性
微服务监控:确保分布式系统的可观察性与稳定性
|
1月前
|
缓存 微服务
01.【微服务架构】服务注册与发现:AP和CP,你选哪个? -- 客户端容错
【5月更文挑战第12天】客户端容错机制确保在服务端或注册中心故障时仍能正确发送请求。当服务端崩溃,由于延迟,客户端一段时间内仍会尝试发送请求。客户端应实施 failover 策略,即检测到调用失败后,切换到其他节点重试,并将故障节点从列表移除。延时通常等于服务端与注册中心心跳间隔加通知时间。若网络问题导致客户端无法访问服务端,客户端应发送心跳以检测服务端状态,成功则恢复,连续失败则视为崩溃。若客户端无法连接注册中心,它应使用本地缓存并考虑退出。
27 1
01.【微服务架构】服务注册与发现:AP和CP,你选哪个? -- 客户端容错
|
29天前
|
Kubernetes 负载均衡 开发者
构建高效后端服务:从微服务到容器化部署
【5月更文挑战第31天】本文深入探讨了现代后端开发中的关键概念,包括微服务的架构设计、容器化技术的运用以及它们如何共同提升应用的可扩展性、可靠性和性能。通过具体案例分析,我们将揭示这些技术是如何在实际开发中被实施的,并讨论它们对后端开发流程的影响。
|
8天前
|
NoSQL Java MongoDB
实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例
实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例

推荐镜像

更多