二、SpringCloud学习 之 服务发现组件Eureka项目创建
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将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)
- SpringCloud 服务发现组件 Eureka的初步学习
- SpringCloud 学习 | 第一篇: 高可用的服务注册与发现(Eureka)
- SpringCloud 学习记录(一):服务注册与发现(eureka+feign)
- spring cloud服务发现组件Eureka详解
- 三、SpringCloud之服务注册与发现组件--Eureka
- spring cloud Eureka 服务注册与服务发现的学习(1)
- Spring Cloud 组件搭建(一)Eureka服务发现
- SpringCloud | Docker 学习系列 | Kubernetes 学习 将SpringCloud Eureka 服务注册与发现部署到docker中并放入到Kubernetes中管理
- 服务发现组件SpringCloud Eureka
- SpringCloud(三):服务发现组件Eureka
- spring-cloud项目学习与实践记录之——服务注册与发现
- Spring Cloud Netflix Eureka组件服务注册及发现源码浅析
- SpringCloud 服务发现组件 Eureka
- SpringCloud组件:Eureka的服务发现与消费
- eclipse springcloud服务发现服务注册(Eureka) 学习日志
- Spring cloud Eureka服务注册及发现(一)创建Eurake服务器
- Spring Cloud 学习笔记-Eureka 服务注册与发现
- Spring cloud Eureka服务注册及发现(二)创建注册服务
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群