阳泉市网站建设_网站建设公司_漏洞修复_seo优化
2026/1/21 16:27:08 网站建设 项目流程

知识点 2:服务治理与 Eureka

1. 核心理论:服务治理

微服务架构引入了一个新的问题:当一个系统被拆分成很多微服务后,服务 A 如何知道服务 B 的 IP 地址和端口号在哪里?如果服务 B 为了高可用,部署了多个实例,服务 A 又该如何选择调用哪一个(负载均衡)?

这就是服务治理 (Service Governance) 要解决的核心问题。服务治理的基石是服务注册中心 (Service Registry)

核心流程

  1. 服务注册 (Register): 每个微服务实例在启动时,都会将自己的网络地址、服务名称、元数据等信息“注册”到服务注册中心。
  2. 服务发现 (Discover): 当服务 A 需要调用服务 B 时,它不会硬编码服务 B 的地址。相反,它会向服务注册中心“查询”,询问:“服务名叫 B 的服务有哪些可用的实例?”注册中心会返回一个包含所有健康实例的地址列表。
  3. 心跳续约 (Renew): 每个服务实例会定期向注册中心发送“心跳”(通常是每隔 30 秒),以证明自己还处于活动状态。如果注册中心在一定时间内(默认 90 秒)没有收到某个实例的心跳,就会认为该实例已下线,并将其从服务列表中“剔除”,以防止其他服务调用到已经失效的实例。

Eureka:一个经典的服务注册中心

Eureka 是 Netflix 开源的一款服务注册中心,也是 Spring Cloud 生态中最经典、最常用的组件之一(尽管现在 Nacos 等新组件也很流行)。

它主要由两部分组成:

  1. Eureka Server (服务端): 提供服务注册和发现的功能。它就像微服务世界的“电话簿”或“通讯录”,集中管理着所有服务实例的信息。
  2. Eureka Client (客户端): 内嵌在每个微服务中,作为一个依赖库存在。它负责与 Eureka Server 进行交互,处理服务的注册、心跳续约和服务发现等逻辑。

生活比喻:

  • Eureka Server: 就像一个手机通讯录
  • 服务启动 (注册): 你买了一部新手机,办了一张新卡,你的朋友会把你的新号码存到他的通讯录里。
  • 服务调用 (发现): 当你的朋友想给你打电话时,他会打开通讯录,找到你的名字,然后拨号。
  • 心跳续约: 你每个月都按时给手机号交话费,以确保号码不会被注销。

2. 代码示例:搭建一个 Eureka Server

2.1 添加依赖 (pom.xml)

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2.2 编写主启动类

package com.study.eurekaserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer // 声明这是一个 Eureka Server
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

2.3 编写配置文件 (application.yml)

server:port: 8761 # Eureka Server 的默认端口eureka:instance:hostname: localhostclient:# 由于这是一个注册中心,它自己不需要去注册自己register-with-eureka: false# 它自己就是注册中心,不需要去检索服务fetch-registry: falseservice-url:# 设置 Eureka Server 的交互地址,查询服务和注册服务都需要依赖这个地址defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  • 运行与验证: 启动这个 Spring Boot 应用,然后在浏览器中访问 http://localhost:8761。如果你能看到 Eureka 的管理界面,就说明你的服务注册中心已经成功搭建并运行起来了!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询