面试题-微服务

面试题-微服务

什么是微服务

微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可维护。

微服务带来了哪些挑战

  1. 系统复杂性增加:一个服务拆成了多个服务,整体系统的复杂性增加,需要处理服务之间的通信、部署、监控和维护等方面的复杂性。

  2. 服务间通信开销:微服务之间通过网络进行通信,传递数据需要额外的网络开销和序列化开销,可能导致性能瓶颈和增加系统延迟。

  3. 数据一致性和事务管理:每个微服务都有自己的数据存储,数据一致性和跨服务的事务管理变得更加复杂,需要额外解决分布式事务和数据同步的问题。

  4. 部署和运维复杂性:微服务架构涉及多个独立部署的服务,对于部署、监控和容错机制的要求更高,需要建立适当的部署管道和自动化工具,以简化部署和运维过程。

  5. 团队沟通和协作成本:每个微服务都由专门的团队负责,可能增加团队之间的沟通和协作成本。需要有效的沟通渠道和协作机制,确保服务之间的协调和一致性。

  6. 服务治理和版本管理:随着微服务数量的增加,服务的治理和版本管理变得更加复杂。需要考虑服务的注册发现、负载均衡、监控和故障处理等方面,以确保整个系统的可靠性和稳定性。

  7. 分布式系统的复杂性:微服务架构涉及构建和管理分布式系统,而分布式系统本身具有一些固有的挑战,如网络延迟、分布式一致性和容错性。

微服务的优缺点


springCloud 与dubbo的区别

???????????????????

springCloud与springboot的关系

‌服务雪崩、熔断与降级解决方案解析

‌一、服务雪崩定义与成因‌

服务雪崩指‌单个服务故障引发连锁反应,导致整个系统不可用‌的现象,常见于微服务架构中。核心成因包括:

‌服务提供者不可用‌(如硬件故障、代码缺陷、缓存击穿)‌

‌重试机制加剧流量‌(用户或代码重复请求)‌

‌资源耗尽‌(调用方因同步等待耗尽线程或连接)‌

‌二、核心解决方案‌

‌1. 服务熔断(Circuit Breaker)‌

‌作用‌:自动切断对故障服务的调用,防止故障扩散‌

‌实现逻辑‌:

‌触发条件‌:检测到单位时间内请求失败率超过阈值(如10秒内失败率≥50%)‌

‌熔断状态‌:开启后直接返回预设降级结果,不再发送真实请求‌

‌恢复机制‌:定期探测服务可用性(如每5秒),成功则关闭熔断‌

‌典型工具‌:Hystrix、Resilience4j、Polly(.NET Core)‌

‌2. 服务降级(Fallback)‌

‌作用‌:在服务不可用时返回替代响应,保障核心业务可用‌

‌场景与策略‌:

‌超时降级‌:设置合理超时时间(如2秒),超时后返回默认数据‌

‌资源不足降级‌:线程池或信号量满载时,直接执行本地降级逻辑‌

‌多级降级‌:依次尝试备用服务(如自建邮箱→网易邮箱→QQ邮箱)‌

‌实现方式‌:通过Feign+Hystrix定义@Fallback方法,或AOP切面注入降级逻辑‌

‌3. 服务限流(Rate Limiting)‌

‌目标‌:控制请求量,避免突发流量压垮系统‌

‌算法选择‌:

‌令牌桶算法‌:允许突发流量(如网关层限流)‌

‌漏桶算法‌:平滑流量峰值(如Nginx限流)‌

‌工具示例‌:Sentinel、Spring Cloud Gateway限流过滤器‌

‌4. 资源隔离‌

‌线程池隔离‌:为不同服务分配独立线程池,避免资源竞争‌

‌信号量隔离‌:限制并发请求数(适用于低延迟场景)‌

‌物理隔离‌:通过容器化或虚拟机隔离故障服务‌

‌5. 超时控制‌

‌配置原则‌:根据服务响应历史数据,设置略高于平均响应时间的阈值(如P99值+20%)‌

‌实现层级‌:

‌客户端超时‌:Ribbon/OpenFeign设置readTimeout‌

‌服务端超时‌:Tomcat/Nginx配置请求处理超时‌

‌6. 监控与预警‌

‌指标体系‌:监控QPS、RT、错误率、熔断状态等关键指标‌

‌工具链‌:

‌Prometheus+Grafana‌:实时可视化监控‌48

‌ELK(Elasticsearch+Logstash+Kibana)‌:日志分析与异常追踪‌

‌自动化响应‌:通过告警触发熔断或扩容操作(如Kubernetes自动伸缩)‌

‌三、方案关联与差异对比

‌四、实践建议‌

‌组合使用‌:熔断与降级需配合使用(熔断触发后执行降级逻辑)‌

‌渐进式优化‌:优先实施超时控制+限流,再逐步引入熔断与隔离‌

‌动态调参‌:根据业务高峰与低谷动态调整阈值(如电商大促期间降低熔断触发阈值)‌

‌全链路压测‌:通过模拟流量验证熔断降级策略的有效性‌

相关推荐
bing_15828 分钟前
如何将 Redis 监控集成到微服务整体的监控体系中( 如 Prometheus + Grafana)
redis·微服务·prometheus
非极限码农1 小时前
基于Deepseek的语言润色助手API实现与部署指南
python·微服务·自然语言处理
conkl4 小时前
嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
linux·运维·服务器·架构·php·底层·堆栈
智践行6 小时前
ROS2 Jazzy:执行器
架构
东风微鸣8 小时前
职场生存指南:如何优雅应对"双面人"同事
docker·云原生·kubernetes·可观察性
null不是我干的8 小时前
微服务消息队列之RabbitMQ,深入了解
微服务·rabbitmq·java-rabbitmq
●VON9 小时前
重生之我在暑假学习微服务第七天《微服务之服务治理篇》
java·学习·微服务·云原生·nacos·架构·springcloud
贾全9 小时前
Transformer架构全解析:搭建AI的“神经网络大厦“
人工智能·神经网络·ai·语言模型·自然语言处理·架构·transformer
云和数据.ChenGuang9 小时前
云计算k8s集群部署配置问题总结
云原生·容器·kubernetes·云计算
阿里云云原生9 小时前
Vibecoding 新体验:实测 Qwen3 Coder 代码生成效果
云原生