微服务--SpringCloud--Eureka

整理记录一下学习的知识!

一.简介

SpringCloud Eureka是什么?

SpringCloud Eureka是微服务中的服务注册与发现组件;

是基于Netfix Eureka做的二次封装;

由两个组件组成:

       -- Eureka Server 注册中心

       -- Eureka Client 服务注册 (微服务中的其他模块作为客户端注册到Eureka Server)

为什么要使用服务注册中心?

1.传统的访问服务需要使用ip:端口的方式,如果只有一个服务看不出什么问题;如果服务有很多个,那么这样是难以维护的。

2.如果搭建集群,服务之间的负载均衡策略需要自己搭建。

使用服务注册中心后服务中心会根据项目名保存服务的地址,服务调用者调用服务时只需要根据服务名调用即可。

服务注册中心常见的有Eureka、Nacos、Zookeeper、Cousul,在本章中只记录Eureka。

二.Eureak服务端搭建

1.创建一个Maven项目,加入以下依赖

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

2.在启动类加上以下注解,表示启动Eureka服务注册中心

@EnableEurekaServer

3.配置文件

# 应用名称
spring:
  application:
    name: eureka
server:
  port: 8761
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false #禁止把自己当做服务注册
  server:
    enable-self-preservation: false #关闭自我保护机制

一个服务注册中心就搭建好了,启动项目,浏览器访问:localhost:8761即可看到以下界面

红色字体是关闭了自我保护模式的警告。

三.Eureka客户端实现

1. 同样创建Maven项目,添加以下依赖

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

2. 启动类上添加以下注解,表示启动一个Eureka客户端

@EnableDiscoveryClient

3.配置文件

# 应用名称
spring:
  application:
    name: eureka-client
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka

4.启动项目,访问之前启动的Eureka服务端

可以看到Application处增加了一个客户端应用。

四.如何搭建一个集群高可用的Eureka服务

为什么要搭建集群Eureka服务

因为Eureka也是一个服务,也会有挂掉的时候,所以需要搭建一个集群环境来保障服务能稳定的运行。

创建多个Eureka服务让他们之间两两注册。

1.修改本地的host映射文件

127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3

2.创建三个Eureka服务,配置文件分别如下所示:

# 应用名称
spring:
  application:
    name: eureka1
server:
  port: 8761
eureka:
  client:
    service-url:
      defaultZone: http://eureka2:8762/eureka,http://eureka3:8763/eureka
#      defaultZone: http://eureka1:8761
    register-with-eureka: false #禁止把自己当做服务注册
    fetch-registry: false #不检索服务
  server:
    enable-self-preservation: false #自我保护机制  如果客户端实例经常切换,开启自我保护机制后,实例不会删除,导致部分请求会连接不存在的实例
  instance:
    hostname: eureka1
# 应用名称
spring:
  application:
    name: eureka2
server:
  port: 8762
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:8761/eureka,http://eureka3:8763/eureka
    register-with-eureka: false #禁止把自己当做服务注册
    fetch-registry: false #不检索服务
  server:
    enable-self-preservation: false #自我保护机制  如果客户端实例经常切换,开启自我保护机制后,实例不会删除,导致部分请求会连接不存在的实例
  instance:
    hostname: eureka2
# 应用名称
spring:
  application:
    name: eureka3
server:
  port: 8763
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:8761/eureka,http://eureka2:8762/eureka
    register-with-eureka: false #禁止把自己当做服务注册
    fetch-registry: false #不检索服务
  server:
    enable-self-preservation: false #自我保护机制  如果客户端实例经常切换,开启自我保护机制后,实例不会删除,导致部分请求会连接不存在的实例
  instance:
    hostname: eureka3

3. 启动项目,访问三个服务

eureka1:

eureka2:

eureka3:

可以看到每个服务之间都是两两注册的

五.小结

第四节中启动方式有很多,可以创建三个Eurek服务,可以打三个jar包,也可在idea中修改配置文件启动多个项目。

posted @ 2021-11-29 23:13  EchoLv  阅读(32)  评论(0编辑  收藏  举报