前言
Eureka是一个基于REST的服务,主要用于AWS云中的定位服务,以实现中间层服务器的负载平衡和故障转移。在 Spring Cloud 微服务架构中通常用作注册中心我们称这个服务为 Eureka Server,还有一个与之交互的客户端称之为 Eureka Client
官网:https://github.com/Netflix/eureka
1、Eureka注册中心
在微服务架构中往往会有一个注册中心,每个微服务都会向注册中心去注册自己的地址及端口信息,注册中心维护着服务名称与服务实例的对应关系。首先我们注册中心服务端:eureka-server,这必须是一个独立的微服务。下面我们来搭建搭建eureka-server。
1、新建一个maven模块
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; publicclassEurekaApplication { 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、启动服务
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注册到了注册中心。
如下图所示:
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注解
//1、添加一个@LoadBalanced注解publicRestTemplaterestTemplate() { returnnewRestTemplate(); }
2、修改 queryOrderById方法
把localhost也就是IP改成了注册时的名称
Stringurl="http://user-service:8081/user/"+order.getUserId();
3、测试
oder-service 使用 user-service 代替Ip功能依旧正常
总结
以上就是Eureka的简单入门,简单说他就是一个注册中心,服务可以注册、发现,其实也算有点生产者和消费者的感觉。