微服务八股

微服务

5大组件

注册中心(Eureka、Nacos、zookeeper等)

远程调用(Feign等)

负载均衡(Ribbon等)

服务熔断(Hystrix、Sentinel等)

网关(Getway、Zuul等)

注册中心

主要作用:服务注册和发现、服务健康监控

服务注册:服务提供者需要把自己的信息注册到注册中心中,如服务名称、ip和端口等

服务发现:消费者拉取服务列表信息,如果服务提供者有集群,则会利用负载均衡算法,选择一个发起调用

服务监控:服务提供者每隔一段时间向注册中心发送心跳,报告健康状态,如果长时间没有收到心跳,这从服务列表里剔除

负载均衡

Ribbon负载均衡策略:

  • RoundRobinRule:简单轮询
  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
  • RandomRule:随机选择
  • BestAvailableRule:选择当前并发度低的服务器
  • RetryRule:重试机制的选择逻辑
  • AvailabilityFilteringRule:先过滤非健康的,再选择连接数较小的实例
  • ZoneAvoidanceRule:按区域就近选择服务器

自定义负载均衡策略:

  • 实现IRule接口(全局生效)
  • 通过配置文件给单独的服务选择负载均衡策略(局部)

服务雪崩

服务雪崩:一个服务失败,导致整条链路的服务都失败的情况

解决方式:

  • 服务降级

    在远程调用@FeignClient()中设置fallback

  • 服务熔断

    Hystrix熔断机制:如果10s内请求的失败率超过50%触发熔断机制,所有请求都会失败。熔断时间结束后尝试放行请求,如果成功则关闭断路器

  • 限流

监控

用于问题定位和性能分析

常见服务监控工具

  • Spring Boot admin
  • prometheus + Grafana
  • zipkin
  • skywalking

限流

为何要限流:

  • 并发大
  • 防止恶意刷接口

实现方式:

  • Nginx:漏桶算法(突发流量)、控制并发连接数

  • 网关:过滤器RequestRateLimiter(令牌桶)

  • 自定义拦截器

分布式系统理论

CAP定理

  1. Consistency:一致性,用户访问分布式系统中的任意节点,得到的数据必须一致

  2. Availability:可用性,访问节点必须得到响应

  3. Partition tolerance:分区容错性,出现分区时也要对外提供服务

    分区:由于网络故障等原因造成部分节点与其他节点失去联系

同时只能满足两个,如果要可用性则只能牺牲一致性,反之亦然

BASE理论

  1. Basically Available:基本可用,保证核心可用
  2. Soft State:软状态,允许出现临时的数据不一致
  3. Eventually Consistent:最终一致性,在软状态结束后,最终达到数据一致

接口幂等性

幂等:多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致

如:点击提交订单,点击多次也只能有一次是成功的

请求方式 说明
GET 查询操作,天然幂等
POST 新增操作,不是幂等的
PUT 更新操作,如果是设置值,是幂等的;如果是在一个值上进行增量操作,不是幂等的
DELETE 删除操作,是幂等的

保证幂等的方式

token+redis

如点击购买,生成token存放到redis并返回给前端;之后提交订单则前端带着token来验证,验证成功则生成订单并删除redis中的token,之后的请求就不会重复生成订单

分布式锁

如第一次提交订单则加锁来生成订单,之后的请求就会由于抢不到锁而不重复生成订单


微服务八股
http://xwww12.github.io/2026/07/30/八股/微服务八股/
作者
xw
发布于
2026年7月30日
许可协议