SpringCloud 注册中心 (Eureka) 快速入门

简介: SpringCloud 注册中心 (Eureka) 快速入门,超级详细,服务注册与服务发现。

前言

  Eureka是一个基于REST的服务,主要用于AWS云中的定位服务,以实现中间层服务器的负载平衡和故障转移。在 Spring Cloud 微服务架构中通常用作注册中心我们称这个服务为 Eureka Server,还有一个与之交互的客户端称之为 Eureka Client

官网:https://github.com/Netflix/eureka

image.png

1、Eureka注册中心

在微服务架构中往往会有一个注册中心,每个微服务都会向注册中心去注册自己的地址及端口信息,注册中心维护着服务名称与服务实例的对应关系。首先我们注册中心服务端:eureka-server,这必须是一个独立的微服务。下面我们来搭建搭建eureka-server。

1、新建一个maven模块

image-20220824183027986.png

2、引入eureka依赖

引入SpringCloud为eureka提供的starter依赖:

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

3、编写启动类

给eureka-server服务编写一个启动类EurekaApplication

  • 添加@EnableEurekaServer注解开启eureka的注册中心功能
  • 添加@SpringBootApplication注解表示为启动类
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication@EnableEurekaServerpublicclassEurekaApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
    }
}

4、编写配置文件

编写一个application.yml配置文件,内容如下:

server:
port: 10086spring:
application:
name: eureka-servereureka:
client:
service-url: 
defaultZone: http://127.0.0.1:10086/eureka

5、启动服务

访问 http://localhost:10086/

image-20220824183952033.png

2、服务注册

1、引入依赖

  服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去。

在user-service的pom文件中,引入下面的eureka-client依赖:

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


2、配置文件

  在user-service中,修改application.yml文件,添加服务名称、eureka地址等。

spring:
application:
name: user-serviceeureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka


3、启动user-service

  启动user-service之后,查看eureka-server管理页面,可以看到user-service注册到了注册中心。

如下图所示:

image-20220824190420652.png

3、服务发现

  服务发现,就是 user-service 的信息可以通过 eureka-server 服务获取到,正好order-service服务需要调用 user-service 来实现远程调用,下面使用 eureka 来实现服务发现。

1、引入依赖

在order-service的pom文件中,引入下面的eureka-client依赖:

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

2、配置文件

  服务发现也需要知道eureka地址,因此与服务注册一致,都是配置eureka信息,在order-service中,修改application.yml文件,添加服务名称、eureka地址等。

spring:
application:
name: order-serviceeureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka

3、服务拉取

  1、首先需要给RestTemplate这个Bean添加一个@LoadBalanced注解

 

@Bean@LoadBalanced//1、添加一个@LoadBalanced注解publicRestTemplaterestTemplate() {
returnnewRestTemplate();
    }

  2、修改 queryOrderById方法

  把localhost也就是IP改成了注册时的名称

 

Stringurl="http://user-service:8081/user/"+order.getUserId();

  3、测试

  oder-service 使用 user-service 代替Ip功能依旧正常

image-20220824190552807.png

总结

  以上就是Eureka的简单入门,简单说他就是一个注册中心,服务可以注册、发现,其实也算有点生产者和消费者的感觉。

相关文章
|
7天前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
1月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
26天前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
1月前
|
XML Java 数据格式
Spring Cloud全解析:注册中心之zookeeper注册中心
使用ZooKeeper作为Spring Cloud的注册中心无需单独部署服务器,直接利用ZooKeeper服务端功能。项目通过`spring-cloud-starter-zookeeper-discovery`依赖实现服务注册与发现。配置文件指定连接地址,如`localhost:2181`。启动应用后,服务自动注册到ZooKeeper的`/services`路径下,形成临时节点,包含服务实例信息。
139 3
|
26天前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
26天前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
26天前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
26天前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
27天前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
|
27天前
|
Java Spring
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)