【分布式技术专题】「架构实践于案例分析」盘点一下分布式模式下的服务治理和监控优化方案

简介: 【分布式技术专题】「架构实践于案例分析」盘点一下分布式模式下的服务治理和监控优化方案

什么是服务治理?


相信每一个软件公司(企业)都希望可以确保开发及项目运行流程可以顺利,但是如果要完美完结那么需要其中会有很多的因素存在。包括,最佳实践架构原则服务治理以及其他决定性的因素。而其中服务治理指的是⽤来管理SOA(微服务)所采⽤和实现的重要环节和因素。下图就算是一个较为完整得RPC模型得服务治理体系机制。

image.png



典型的问题


  • 变更管理变更⼀个服务通常会引起不可预⻅的后果,因为服务的消费者对服务的提供者来说是不可知的


  • 服务质量的保证弹性添加新服务需要对这些服务给予额外的关注




分布式应⽤的治理


服务注册与发现


单体服务拆分为微服务,如果微服务之间存在调⽤依赖,就需要得到⽬标服务的服务地址,也就是微服务治理的”服务发现“。要完成服务发现,就需要将服务信息存储到某个载体(实例),载体本身是微服务治理的”服务注册中⼼“,存储到载体的动作即是”服务注册“。

image.png



服务得可观测性


微服务由于较单体应⽤有了更多的部署实例,需要对众多服务间的调⽤关系、状态有清晰的掌控

可观测性就包括了调⽤拓扑关系、监控(Metrics)、⽇志(Logging)、调⽤追踪(Trace)等,所下图所示,可以通过采用中心进行流量控制得限流控制能力。

image.png



服务流量管控


微服务本身存在不同版本,在版本迭代得过程中,需要对微服务间调⽤进⾏控制,以完成微服务版本更迭的平滑


流量管控主要是根据流量的特征(访问参数等)百分⽐向不同版本服务分发,这也孵化出灰度发布蓝绿发布A/B测试等服务治理的主题,


面向的统计流量范围,主要包含请求打进来的流量管理和微服务之间的流量管理



服务安全控制


服务的安全控制主要分为:服务的安全和服务的控制两个部分。



服务安全


不同微服务承载⾃身独有的业务职责,对于业务敏感的微服务,需要对其他服务的访问进⾏认证与鉴权,也就是安全问题


服务控制


当服务治理能⼒充分建设后,就需要有⾜够的控制能⼒,能实时进⾏服务治理策略向微服务分发,包含服务的降级和熔断能力的额控制等




服务监控


监控的可视化


监控的可视化,随时了解系统运⾏情况帮助我们快速定位问题。

image.png

  1. 通过数据采样分析进行分析对应得上报数据从而帮助我们快速定位问题。
  2. 通过上报数据的信息,进行多维度的指标计算,方便我们时时刻刻的进行分析系统服务,打造全方位的监控体系。



监控维度


在我们日常的实际项⽬中,我们实现了四种维度的监控。


容器实例级别的监控


针对于使用的容器服务,例如:Docker、Podman或者moby服务,k8s的pod(单pod只管理一个容器)级别,那么我们监控的就是容器内部的服务级别,可以理解为实例级别,例如下图我们的crm容器实例,下面每一个容器都是一个监控对象

image.png

针对于SpringBoot的应⽤,我们一般处了专门的监控服务,例如,夜莺、Zabbix和Promethus等,还可以参考SpringBoot-Admin,⾃⼰实现了⼀套监控界⾯,监控Spring Boot应⽤。




主要指标




应⽤实例级别的监控


针对于应用级别的服务实例监控,例如我们有crm服务系统,那么如果我们集群部署、分布式部署等方式,那么会针对于将应用的整体,下图就是整体的应用体系作为一个指标对象,它的指标对象监控维度就是将所有的内部的容器实例监控指标合并。

image.png

  • Prometheus(github.com/prometheus/… 当然Prometheus不仅能监控容器,还能监控数据库、操作系统,甚⾄可以和Spring Boot集成,但⽬前业界主要⽤来监控容器。


系统级的监控


调⽤链监控




⽇志监控及优化


  • Skywalking快速找到性能瓶颈
  • ELK分析⽇志快速找到问题


JVM监控及调优工具推荐




中间件级别监控


Zabbix监控是一个老牌劲旅了。


Redis监控



Kafka监控



MySQL




相关文章
|
7月前
|
人工智能 安全 Java
分布式 Multi Agent 安全高可用探索与实践
在人工智能加速发展的今天,AI Agent 正在成为推动“人工智能+”战略落地的核心引擎。无论是技术趋势还是政策导向,都预示着一场深刻的变革正在发生。如果你也在探索 Agent 的应用场景,欢迎关注 AgentScope 项目,或尝试使用阿里云 MSE + Higress + Nacos 构建属于你的 AI 原生应用。一起,走进智能体的新世界。
1392 90
|
7月前
|
关系型数据库 Apache 微服务
《聊聊分布式》分布式系统基石:深入理解CAP理论及其工程实践
CAP理论指出分布式系统中一致性、可用性、分区容错性三者不可兼得,必须根据业务需求进行权衡。实际应用中,不同场景选择不同策略:金融系统重一致(CP),社交应用重可用(AP),内网系统可选CA。现代架构更趋向动态调整与混合策略,灵活应对复杂需求。
|
9月前
|
数据采集 消息中间件 监控
单机与分布式:社交媒体热点采集的实践经验
在舆情监控与数据分析中,单机脚本适合小规模采集如微博热榜,而小红书等大规模、高时效性需求则需分布式架构。通过Redis队列、代理IP与多节点协作,可提升采集效率与稳定性,适应数据规模与变化速度。架构选择应根据实际需求,兼顾扩展性与维护成本。
289 2
|
8月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
12月前
|
安全 JavaScript 前端开发
HarmonyOS NEXT~HarmonyOS 语言仓颉:下一代分布式开发语言的技术解析与应用实践
HarmonyOS语言仓颉是华为专为HarmonyOS生态系统设计的新型编程语言,旨在解决分布式环境下的开发挑战。它以“编码创造”为理念,具备分布式原生、高性能与高效率、安全可靠三大核心特性。仓颉语言通过内置分布式能力简化跨设备开发,提供统一的编程模型和开发体验。文章从语言基础、关键特性、开发实践及未来展望四个方面剖析其技术优势,助力开发者掌握这一新兴工具,构建全场景分布式应用。
1011 35
|
12月前
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
3723 14
|
12月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
892 3
|
9月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
579 2
|
9月前
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
673 6
|
10月前
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。