您的位置:首页 > 编程语言 > Java开发

二、SpringCloud学习 之 服务发现组件Eureka项目创建

2019-02-10 22:27 1026 查看

1.Eureka简介

  • Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目
    spring-cloud-netflix中,实现SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。
  • Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
  • Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就别一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
  • Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

2.创建Eureka的服务端项目

2.1 这里我使用的是IDEA来创建项目,首先create new project,选择Spring Initializr,这里选择jdk的版本是1.8,然后点击next.

在next时有时候可能因为网速问题,无法打开创建页面,可以使用Custom,并使用http://start.spring.io尝试,如果还是无法创建可以通过访问https://start.spring.io/在spring官网创建项目并下载.如果还是不行,那只能用梯子或者使用自己引用porm文件的方法来创建项目了.

2.2 下面的选项自行填写,然后next

2.3 点击Cloud Discovery ,选择Eureka Server,在右上角可以选择spring boot的版本,这里使用最新版,创建项目后他会引用最匹配的SpringCloud的版本,点击next,选择路径,最后finish.

2.4 下面是项目的目录结构

2.5 porm中关于SpringCloud的依赖

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

这里定义SpringCloud的版本,以后在引入依赖时就不需要写版本

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

这里在dependencies中引入Eureka的server端依赖.

2.6 在resource中找到application.properties改名为application.yml (这里使用yml文件是个人喜好)

  • 使用以下配置,端口号可以自行更改
server:
port: 8090 #服务端口
eureka:
client:
registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是无需注册
fetchRegistry: false #是否从Eureka中获取注册信息
service-url:
defaultZone: http://127.0.0.1:${server.port}/eureka/

2.7 在项目的启动类上,添加@EnableEurekaServe,最后启动项目,访问http://127.0.0.1:8090/看到以下页面,说明服务端已经创建成功

3.创建Eureka的客户端项目

3.1 创建步骤与创建服务端类似,在选择项目需要的配置时,选择Cloud Discovery时选择Eureka Discovery,并且springboot的版本需要与server端对应

3.2 porm文件与服务端类似,只是引入的依赖从server变成了client

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

3.3 将application.properties改名为application.yml,并写入以下配置

server:
port: 8081 #服务端口(自行选择)
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8090/eureka/ # 这里IP地址和端口号需要填写服务端的地址
spring:
application:
name: blog-client #项目名称

3.4 在启动类上添加@EnableEurekaClient注解,启动项目.

如果无法启动该项目,可以在porm中添加web依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>`

3.5 在server端的图形界面上看到自己定义的项目名称,说明客户端创建成功

4. 保护模式

如果在Eureka Server的首页看到以下这段提示,则说明Eureka已经进入了保护模式:

  • Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,同时提示这个警告。保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: