news 2026/4/25 22:30:44

Spring Cloud微服务架构详解:从服务注册到配置中心,阿里面试核心知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Cloud微服务架构详解:从服务注册到配置中心,阿里面试核心知识点

一、微服务架构核心概念

1.1 什么是微服务

传统架构:All in One ├── 前端应用 ├── 后端应用 ├── 数据库 └── 全部部署在同一台服务器 微服务架构: ├── 服务A(用户服务) ├── 服务B(订单服务) ├── 服务C(商品服务) ├── 服务D(支付服务) └── 消息队列 + 注册中心 + 配置中心

1.2 微服务优势

优势说明
独立部署每个服务可独立发布,不用影响其他服务
技术异构不同服务可用不同技术栈
容错隔离一个服务挂了不影响其他服务
可扩展按需扩展瓶颈服务

二、Eureka服务注册与发现

2.1 Eureka架构

┌─────────────┐ │ Eureka Server │ ← 注册中心 └───────┬───────┘ │注册/发现 ▼ ┌───────────────┐ │ Provider服务提供者 │ ← 启动时注册自己的地址 └───────────────┘ │ ▼ ┌───────────────┐ │ Consumer服务消费者 │ ← 从注册中心获取地址列表 └───────────────┘

2.2 服务端配置

server:port:8761eureka:instance:hostname:localhostclient:register-with-eureka:falsefetch-registry:falseserver:enable-self-preservation:false

2.3 客户端配置

spring:application:name:user-serviceeureka:client:register-with-eureka:truefetch-registry:trueservice-url:defaultZone:http://localhost:8761/eureka/instance:lease-renewal-interval-in-seconds:10lease-expiration-duration-in-seconds:30

三、Ribbon负载均衡

3.1 Ribbon核心组件

publicinterfaceIRule{publicServerchoose(Objectkey);}

Ribbon负载均衡策略:

策略类名原理
轮询RoundRobinRule依次选择
随机RandomRule随机选择
重试RetryRule轮询失败后重试
响应时间权重WeightedResponseTimeRule响应时间越短权重越高
最佳可用BestAvailableRule选择并发最低的

3.2 自定义负载均衡策略

publicclassMyRuleextendsAbstractLoadBalancerRule{@OverridepublicvoidinitWithNiwsServerList(ILoadBalancerlb){}@OverridepublicServerchoose(Objectkey){ILoadBalancerbalancer=getLoadBalancer();List<Server>servers=balancer.getReachableServers();returnservers.get(servers.size()-1);}}@ConfigurationpublicclassMyRibbonConfig{@BeanpublicIRulemyRule(){returnnewMyRule();}}

四、Feign声明式HTTP客户端

4.1 Feign_vs_Ribbon

对比RibbonFeign
调用方式RestTemplate接口+注解
代码量
可读性

4.2 Feign使用

步骤1:引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

步骤2:开启Feign

@SpringBootApplication@EnableFeignClientspublicclassOrderApplication{publicstaticvoidmain(String[]args){SpringApplication.run(OrderApplication.class,args);}}

步骤3:定义调用接口

@FeignClient(name="user-service",fallback=UserClientFallback.class)publicinterfaceUserClient{@GetMapping("/user/{id}")UsergetUserById(@PathVariable("id")Longid);@PostMapping("/user")UsercreateUser(@RequestBodyUseruser);}@ComponentpublicclassUserClientFallbackimplementsUserClient{@OverridepublicUsergetUserById(Longid){returnnewUser(-1L,"默认用户");}@OverridepublicUsercreateUser(Useruser){returnnull;}}

4.3 Feign超时配置

feign:client:config:default:connect-timeout:5000read-timeout:5000

五、Hystrix服务降级熔断

5.1 为什么需要Hystrix

用户 → 订单服务 → 用户服务 ↓ 用户服务挂了 ↓ 请求堆积,拖垮订单服务 ↓ 整个系统雪崩

5.2 Hystrix降级

@ServicepublicclassUserService{@HystrixCommand(fallbackMethod="getUserFallback")publicUsergetUserById(Longid){returnuserClient.getUserById(id);}publicUsergetUserFallback(Longid){returnnewUser(-1L,"服务繁忙,请稍后再试");}}

5.3 Hystrix熔断配置

hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds:3000circuitBreaker:requestVolumeThreshold:20errorThresholdPercentage:50sleepWindowInMilliseconds:5000

熔断器三种状态:

Closed(关闭)→ 熔断打开 → Open(打开) ↑ ↓ └──── 过了熔断时间 ←───┘ Closed:正常调用 Open:请求直接降级,不调用服务 Half-Open:尝试放行一个请求测试

六、Gateway网关

6.1 Gateway_vs_Zuul

对比GatewayZuul
底层WebFlux(非阻塞)Servlet(阻塞)
性能一般
SpringCloud版本Finchley+Edgware及以前

6.2 Gateway配置

spring:cloud:gateway:routes:-id:user-routeuri:lb://user-servicepredicates:-Path=/user/**filters:-StripPrefix=1

6.3 全局过滤器

@ComponentpublicclassAuthFilterimplementsGlobalFilter{@OverridepublicMono<Void>filter(ServerWebExchangeexchange,GatewayFilterChainchain){Stringtoken=exchange.getRequest().getQueryParams().getFirst("token");if(StringUtils.isBlank(token)){exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);returnexchange.getResponse().setComplete();}returnchain.filter(exchange);}}

七、Config配置中心

7.1 配置中心架构

┌─────────────┐ │ Git仓库 │ ← 配置文件存储 └──────┬──────┘ │ ▼ ┌─────────────┐ │ Config Server│ ← 配置中心服务 └──────┬──────┘ │ ▼ ┌─────────────┐ │ 业务服务 │ ← 启动时拉取配置

7.2 配置中心使用

Config Server:

server:port:8888spring:cloud:config:server:git:uri:https://github.com/xxx/config-repodefault-label:mastersearch-paths:config

业务服务:

spring:cloud:config:name:user-serviceprofile:devlabel:masterdiscovery:enabled:trueservice-id:config-server

7.3 配置刷新

@RestController@RefreshScopepublicclassUserController{@Value("${user.max-size}")privateintmaxSize;@GetMapping("/config")publicStringgetConfig(){return"maxSize = "+maxSize;}}

总结

组件作用关键词
Eureka服务注册发现心跳机制
Ribbon负载均衡轮询/随机/重试
Feign声明式HTTP接口+注解
Hystrix降级熔断线程隔离/熔断器
Gateway网关路由断言/过滤器
Config配置中心Git集成/自动刷新

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 22:30:07

天赐范式第22天:当我把拉格朗日点和ZFC公理烧录进全AI地铁工控的顶层FPGA,这套架构我感觉,跑高铁也完全够用

本文「数学毒丸公式FPGA烧录方案」配套前文和前文的前文&#xff0c;提供可直接复用的顶层工程连接图&#xff0c;完整对接19枚原生算子、数学毒丸公式核心模块、五级工控流水线及FPGA硬件执行层&#xff0c;逻辑闭环、接口清晰&#xff0c;适配轨道交通车载FPGA工控场景&#…

作者头像 李华
网站建设 2026/4/25 22:30:07

如何高效下载网页视频:VideoDownloadHelper 完整指南

如何高效下载网页视频&#xff1a;VideoDownloadHelper 完整指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否经常遇到想要保存网页…

作者头像 李华
网站建设 2026/4/25 22:28:22

2026 年 DeepSeek 融资与 V4 发布:国产 AI 算力自主挑战与机遇并存

国产替代和推理跃进&#xff0c;V4 的新故事2026 年 4 月&#xff0c;DeepSeek 几乎同时公布两条大新闻&#xff0c;一是启动首次外部融资&#xff0c;目标估值从 100 亿美元抬升至 200 - 300 亿美元&#xff0c;腾讯、阿里正洽谈入局&#xff1b;二是新一代旗舰模型 V4 发布&a…

作者头像 李华
网站建设 2026/4/25 22:23:24

Kubernetes 集成 Windows Server 容器完全指南

Kubernetes 集成 Windows Server 容器完全指南 1. 前提条件 Kubernetes v1.5 引入 Windows Server 容器支持&#xff08;Alpha 特性&#xff09;&#xff0c;核心依赖如下&#xff1a; 1.1 环境要求 Kubernetes 控制平面&#xff1a;必须运行在 Linux 节点&#xff08;v1.5 …

作者头像 李华
网站建设 2026/4/25 22:09:22

免费降AI实测:高效降低论文AI率方法+工具测评

临近毕业季&#xff0c;不少同学都在论文审核环节遇到了新难题&#xff0c;最近收到很多同学的求助&#xff1a; “我全程自己逐字打磨的内容&#xff0c;为什么AI检测结果有70%&#xff1f;” “之前随便找了个降AI工具&#xff0c;改完逻辑不通顺&#xff0c;专业术语还被改得…

作者头像 李华