ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SpringCloud-Eureka 第 14 章:不同规模场景怎么设计(2 个 / 3 个 / N 个节点)

2026/9/27 21:25:49 拓冰建站 浏览量
SpringCloud-Eureka 第 14 章:不同规模场景怎么设计(2 个 / 3 个 / N 个节点) 第 14 章不同规模场景怎么设计2 个 / 3 个 / N 个节点本章目标给出可直接照抄的选型建议——你有几个服务、要不要单独建注册中心、要不要做集群一看就知道怎么落地。一句话原则注册中心是要不要用的问题不是每个服务配一个的问题。全局最多一套生产是一套集群。14.0 先记住三条铁律注册中心全局只有「一套」不管你有 2 个还是 200 个业务服务它们共用同一套注册中心。注册中心 ≠ 业务服务它是独立进程/独立部署单元不要塞进某个业务服务里学习除外。多个注册中心 高可用副本不是给不同业务各配一个。14.1 场景速查表最重要先看这个场景服务数量会扩容/多实例建议方案要单独建注册中心吗A2 个地址固定否写死地址不用 Eureka不需要B2~3 个会变动偶尔单个 Eureka Server需要1 个C3~10 个会单个 Eureka Server开发→ 生产上集群需要1 个生产 2~3 副本D10 个 / 生产核心会Eureka 集群2~3 副本需要一套集群E全新项目 / 要配置中心会考虑Nacos / Consul需要一套判断口诀服务少且地址固定 → 写死一旦要动/要扩容 → 上注册中心一旦是生产核心 → 注册中心做集群。14.2 场景 A只有 2 个服务地址固定结论不必上 Eureka直接写死地址最省事。http://b-host:8081 (写死)http://a-host:8080 (写死)service-a:8080service-b:8081配置直接写对方 URL# service-a 的配置downstream:service-b-url:http://b-host:8081什么时候别用这招只要出现「B 要部署多个实例做负载均衡」或「地址经常变」就升级到场景 B。✅ 优点零额外组件、零学习成本❌ 缺点地址变要改配置重启无自动负载均衡14.3 场景 B2~3 个服务地址会变/想解耦结论单独建 1 个 Eureka ServerA、B、C都注册进去。用服务名互调用服务名互调Eureka Server :8761(单独一个进程)service-aservice-bservice-c注册中心单独 1 个进程不要塞进 A 或 B。业务服务都配defaultZone: http://注册中心:8761/eureka/用服务名互调。开发/内网可接受单点注册中心挂了期间已缓存地址仍能调用客户端有本地缓存。「能不能让 A 兼任注册中心」——技术可行但 A 一挂注册中心也没了不推荐仅限本机学习。14.4 场景 C3~10 个服务结论开发环境单个 Server 够用生产环境上集群。每个业务服务如果需要抗压可以起多实例同一个spring.application.name不同端口。Eureka 会把同名的多个实例都记下来调用方自动负载均衡。渲染错误:Mermaid 渲染失败: Parse error on line 7: ...均衡 .- A1 B -. .- A2 ----------------------^ Expecting STR, MD_STR, UNICODE_TEXT, EDGE_TEXT, got LINK多实例只需改端口即可同名注册spring:application:name:order-service# 两个实例名字相同server:port:8080# 另一个实例改成 808214.5 场景 D10 服务 / 生产核心链路结论注册中心必须做集群2~3 个副本互相注册。Eureka Server1 :8761Eureka Server2 :8762Eureka Server3 :8763各业务服务客户端指向所有副本eureka:client:service-url:defaultZone:http://s1:8761/eureka/,http://s2:8762/eureka/,http://s3:8763/eureka/副本数建议2~3 个跨机器/跨可用区部署。任意一个 Server 宕机其余副本继续服务不影响注册与发现。详见第08章-高可用集群.md。14.6 场景 E全新项目 / 需要配置中心结论可以直接考虑 Nacos / Consul一套组件同时搞定「注册 配置」。Eureka 只做「服务注册发现」配置中心要另配如 Spring Cloud Config。Nacos 把「注册中心 配置中心」合二为一社区更活跃适合 2026 新项目。已经在用 Spring Cloud Netflix 的老项目Eureka 继续用没问题。详见第11章-2026选型提醒.md。14.7 「是否需要单独建服务」决策图否,地址固定是否(开发/内网)是否是服务是否会扩容/地址是否会变?不建注册中心直接写死地址是不是生产核心?单独建 1 个Eureka Server新项目?Eureka 集群(2~3 副本)考虑 Nacos/Consul(一套集群)14.8 常见误区纠正误区正解每个业务服务都要配一个注册中心❌ 全局共用一套服务多了就多建几个注册中心分担❌ 多副本是为高可用不是按业务拆注册中心挂了业务立刻全断❌ 客户端有本地缓存短时间仍可调用把注册中心塞进业务服务省资源⚠️ 仅限学习生产要独立部署2 个小服务也非得上 Eureka❌ 地址固定时写死更简单14.9 本章小结要不要注册中心地址会变/要扩容才需要否则写死即可。建几个业务角度永远一套生产为高可用做成 2~3 副本集群。别搞错注册中心是独立部署单元不是每个服务各配一个。选型老项目用 Eureka新项目可考虑 Nacos/Consul。