上一题下一题

微服务拆分后服务注册发现解决的问题以及客户端发现和服务端发现的差异

基础版
来源:alibaba初级工程师微服务架构服务端服务发现客户端服务发现服务注册与发现
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

微服务拆分之后,一个系统会变成很多独立服务实例,而且实例数量、IP、端口都可能动态变化,比如扩容、缩容、发布重启、故障下线等。如果还靠配置文件写死调用地址,维护成本很高,也不可靠。

服务注册发现主要解决的就是: 调用方如何动态找到可用的服务实例 。

一般流程是这样的:服务启动后,把自己的服务名、IP、端口、健康状态等信息注册到注册中心,比如 Nacos、Eureka、Consul、Zookeeper。调用方需要访问某个服务时,不再写死地址,而是通过服务名去注册中心获取可用实例列表,再结合负载均衡策略选择一个实例发起调用。同时注册中心会配合心跳或健康检查,把不可用实例剔除,避免请求打到故障节点上。

它主要解决几个问题:

服务地址动态变化的问题 服务实例自动上下线的问题 多实例负载均衡的问题 故障实例感知和摘除的问题 降低服务之间硬编码依赖的问题

客户端发现和服务端发现的区别主要在于: 服务实例选择和负载均衡发生在哪里 。

客户端发现模式下,调用方自己从注册中心拉取服务实例列表,然后在本地做负载均衡,再直接请求目标服务。像 Spring Cloud

登录后查看完整内容