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 注解

posted @   Acegzx  阅读(36)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示