SpringCloud----(2)Eureka Server(服务治理)

上一篇:SpringCloud-----(1)微服务基础概念

前言

  SpringCloud微服务已经是目前互联网应用开发的一个趋势,简单来讲,其实就是将我们的一个整体的项目拆分成多个小的模块,这样使得我们的项目扩展更加灵敏。Eureka是Springcloud的服务与注册中心。作为SpringCloud的第一个组件,它的主要作用是负责SpringCloud中各个相互独立的服务之间相互调用。Eureka相当于 Zookeeper+Dubbo,服务提供者将自己提供的服务注册到注册中心,然后Eureka将注册的服务存储到一个双层结构的Map中。Eureka包含了两个组件:eureka servereureka client

  Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
  Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

  现在社区里面关于Eureka的概念知识点有很多,我简单记录一下自己在项目中使用Eureka过程。

  Eureka Server是服务注册功能的服务器,是服务注册中心。系统中的其他微服务,可以通过Eureka Client连接到注册中心并保持心跳连接,下图中的服务消费者服务提供者都是Eureka Client

在这里插入图片描述

创建项目

一、创建一个 Eureka Server

1.创建项目的时候,勾选上依赖Eureka Server在这里插入图片描述
2.在项目的启动类上添加注解:@EnableEurekaServer,在此注解中导入了一个EurekaServerMarkerConfiguration类,此类会向spring容器中添加一个bean,添加此注解之后,eureka server将会和spring 容器一起启动。

@SpringBootApplication
@EnableEurekaServer
public class ServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServerApplication.class, args);
	}
}

3.在application配置文件中配置eureka server注册信息。


#设置项目端口
server:
  port: 8082

#设置 eureka 注册中心url
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/

4.此时启动该项目,访问localhost:8082,可以看到可以访问eureka页面。
在这里插入图片描述
上图中红框内表示当前的eureka 注册中心注册了哪些服务,从后面箭头所指的端口中可以看出,8082端口就是我们在配置文件中本项目的端口,也就是说,eureka注册中心将自己也注册上了。可以在配置文件中进行如下设置:

#设置 eureka 注册中心url
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/
      #不将自己注册到 eureka server
    register-with-eureka: false

重启项目之后,重新访问localhost:8082
在这里插入图片描述
说明现在eureka server上面没有注册服务。

二、创建一个 Eureka Client

1.添加依赖
在这里插入图片描述
2.在启动类applicaiton中添加注解:@EnableDiscoveryClient,此注解的作用与上文中的@EnableEurekaServer类似。

@SpringBootApplication
@EnableDiscoveryClient
public class ClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(ClientApplication.class, args);
	}
}

3.在properties配置文件中配置注册url

#设置项目的端口号
server:
  port: 8083

#设置要注册的url(也就是 eureka server的url地址)
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/

4.启动client项目,再访问:localhost:8082
在这里插入图片描述
发现端口为8083的client成功注册到eureka了。但是该注册的服务名称为UNKNOWN,这里我们可以再client项目的properties配置文件中设置服务的名称,整体配置如下:

#设置项目的端口号
server:
  port: 8083

#设置要注册的url
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/
      
#设置应用的名称      
spring:
  application:
    name: eurekaClient

重启项目,再访问localhost:8082页面:
在这里插入图片描述
这样就可以看到注册的应用名称变成了client
  在eureka的控制台页面,有时候可能会出现下面的红字提示,

在这里插入图片描述
遇到这种情况先不要慌,这是eureka的自我保护机制给予的提示,Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期(什么意思?就是Eureka Server在短时间内失去过多的客户端的时候,Eureka就会进入自我保护模式,将注册的服务信息全都保护起来,不再被删除。直到客户端重新连接注册上Eureka Server后,自我保护模式退出),但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。
  清楚了根本原因之后,只需要在eureka server项目的配置文件中做如下配置:


#设置项目端口
server:
  port: 8082



#设置 eureka 注册中心url
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/
      #不将自己注册到 eureka server
    register-with-eureka: false

    #关闭eureka server自我保护机制(开发环境可以关闭,但是生产环境不建议关闭)
  server:
    enable-self-preservation: false

关闭eureka server的自我保护机制,上述问题就解决了,但是注意:在开发环境中我们可以关闭自我保护机制,但是在项目的生产环境中,不建议将它关闭。

有关于eureka 的配置可以参考一下:eureka 常用配置
  到这里基本上eureka server项目和eureka client项目就注册完成了。其实主要就是启动类上添加注解,再到配置文件中进行一系列配置就Ok了

下一篇:SpringCloud—(3)实现Eureka的高可用

发布了79 篇原创文章 · 获赞 42 · 访问量 7979

猜你喜欢

转载自blog.csdn.net/qq_43655835/article/details/103400209