Eureka 注册中心的简单使用
介绍
Eureka 使用涉及三个部分,分别是注册中心,服务提供者,服务消费者
优点
Eureka保证AP
Eureka优先保证可用性,Eureka各个节点是平等的,某几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。
Demo
注册中心
添加依赖
<!--Spring Cloud的eureka-server起步依赖(包含springBoot起步依赖)--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
配置yaml配置文件
spring: application: name: eureka-server # 应用名称 server: port: 9100 #端口 eureka: instance: hostname: localhost #设置该服务注册中心的hostname client: register-with-eureka: false #禁止注册中心自己向自己注册,默认true fetch-registry: false #注册中心无需拉取服务地址列表,因为服务注册中心本身的职责就是维护服务实例,默认true service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #指定服务注册中心的地址
启动类加上 @EnableEurekaServer 注解
访问 http://localhost:9100 即可进入注册中心
服务提供者
添加依赖
<!--SpringCloud集成eureka客户端的起步依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
配置信息
spring: application: name: springcloud-eureka-client-provider # 注册到注册中心的微服务名称(也是调用名称) server: port: 8081 #设置端口 servlet: context-path: / #配置项目上下文根 eureka: client: service-url: defaultZone: http://localhost:9100/eureka #配置eureka 注册中心地址
对外提供服务接口
@RestController public class TestController { @RequestMapping("/test") public Object test() { return "使用了eureka注册中心的服务提供者"; } }
启动类加上 @EnableEurekaClient 注解
服务消费者
引入依赖
<!--SpringCloud集成eureka客户端的起步依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
配置yaml信息
spring: application: name: springcloud-eureka-client-consumer #注册到注册中心的微服务名称(也是调用名称) server: port: 8080 servlet: context-path: / eureka: client: service-url: defaultZone: http://localhost:9100/eureka #指定eureka 注册中心地址
服务消费者需要一个工具类来调用服务提供者提供的服务
@Configuration public class RestTemplateConfig { //@LoadBalanced 开启Ribbon的负载均衡从注册中心中获取服务 //服务的发现由eureka客户端实现,而服务的真正调用由ribbon实现,所以我们需要在调用服务提供者时使用ribbon来调用 @LoadBalanced @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
调用服务
@RestController //Spring Cloud是基于rest的访问 public class TestController { @Autowired private RestTemplate restTemplate; @RequestMapping("/test") public Object test(){ //访问远程的SpringCloud的服务 //参数1 要调用的服务的地址 //参数2 指定返回的数据类型 //.getBody()获取响应的主体内容(服务端返回的具体JSON数据) //根据服务提供者地址访问 //return restTemplate.getForEntity("http://localhost:8081/test",String.class).getBody(); //根据服务名访问(可实现负载均衡) return restTemplate.getForEntity("http://springcloud-eureka-client-provider/test",String.class).getBody()+"----带有注册中心的服务消费者"; } }
入口类上添加一个 @EnableEurekaClient 注解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异