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

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

什么是服务治理?


相信每一个软件公司(企业)都希望可以确保开发及项目运行流程可以顺利,但是如果要完美完结那么需要其中会有很多的因素存在。包括,最佳实践架构原则服务治理以及其他决定性的因素。而其中服务治理指的是⽤来管理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




相关文章
|
8月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
607 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
8月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
260 12
|
7月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
484 102
|
8月前
|
人工智能 负载均衡 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开发体验。
2855 14
|
8月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
654 3
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
缓存 NoSQL Java
Spring Boot中的分布式缓存方案
Spring Boot提供了简便的方式来集成和使用分布式缓存。通过Redis和Memcached等缓存方案,可以显著提升应用的性能和扩展性。合理配置和优化缓存策略,可以有效避免常见的缓存问题,保证系统的稳定性和高效运行。
401 3
|
3月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路

热门文章

最新文章