Spring Cloud Netflix(一)
Spring Cloud Netflix(一)
介绍
Spring Cloud Netflix
是由 Netflix
开源的,并且由 Spring
项目集成到 Spring Cloud
中的,主要用于构建大型分布式项目。
Spring Cloud Netflix
通过自动配置来绑定到 Spring
项目中,使用注解便可以快速启用相应的功能。
Spring Cloud Netflix
主要提供以下功能
Eureka
:服务发现Hystrix
:断路器Zuul
:智能路由Ribbon
:客户端的负载均衡
Eureka
Eureka
主要提供服务注册、服务发现功能,这是微服务架构中的核心功能之一。
Eureka
主要分为 Server
和 Client
。
Client
是应用端,是向外提供的服务。
Server
是服务端,即注册中心,存储了所有已注册 Client
的元数据信息。例如:主机、端口、健康指标、首页等其他信息。
Client
会发送心跳给 Server
,用于表明服务正常可用。如果 Server
不能定时接受到 Client
的心跳信息,便会将 Client
的 Instance
移除。但是如果在两次心跳之间服务挂掉,那么 Server
中的 Client
不会移出,有一定的信息延迟。
1. 搭建 Eureka-Server
1.1. 依赖
Eureka-Server
的依赖是 spring-cloud-starter-netflix-eureka-server
。
pom.xml
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
1.2. 主类
@EnableEurekaServer
注解是用来启动 Eureka
服务的。
EurekaServerApplication.java
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** @author mw118* @version 1.0* @date 2021/1/8 22:26*/
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}
1.3. 配置
server.port
用于表明 Eureka
服务的访问接口。
eureka.client.register-with-eureka
表示不在其他 Eureka
服务上注册,因为当前只有一个节点。
eureka.client.fetch-registry
表示是否从其他 Eureka
服务上获取注册表信息。
application.properties
server.port=8762eureka.client.register-with-eureka=false
eureka.client.fetch-registry=falselogging.level.com.netflix.eureka=OFF
logging.level.com.netflix.discovery=OFF
1.4. 启动并访问
访问 localhost:8761
,便会展示 Spring Eureka
的网页信息。
其中红色方框内便会展示服务的实例信息,此时还没有服务注册到该节点上。
2. 搭建 Eureka-Client
2.1. 依赖
Eureka-Client
的依赖是 spring-cloud-starter-netflix-eureka-client
。
pom.xml
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.2. 主类
@EnableDiscoveryClient
是客户端进行服务注册的。
EurekaClientApplication.java
package com.example;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author mw118* @version 1.0* @date 2021/1/8 22:29*/@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientApplication.class, args);}
}
2.3. 配置
spring.application.name
指明当前应用名称,会使用该名称的大写作为该应用的名称
eureka.client.serviceUrl.defaultZone
用于定位 Eureka
注册中心
application.properties
spring.application.name=eureka-clienteureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
2.4.启动
启动项目,并刷新 localhost:8761
页面。此时在红色方框中,便会展示刚才启动的客户端服务。
显示的重要信息有:
Application
:实例名称,默认使用客户端的环境变量spring.application.name
Availability Zones
:实例数量,如果部署了多个相同名称的服务,便会展示对应的数量Status
:展示了当前的实例状态(UP:表示为可用),以及访问的URL
,URL
会指向实例的/actuator/info
2.5. 测试客户端关闭的场景
将刚刚启动的 Eureka-Client
关闭,并等待1分钟后,刷新 localhost:9761
的页面。
在图中,尽管 Eureka-Client
服务已经关闭了,但是在注册中心的列表中还存在该实例,并且状态为 UP
。
原因参考图中第一个红色方框中的内容,这是由于 Eureka
的自我保护机制,如果更新的心跳次数小于预期阈值,Eurka
服务不会将实例移除,防止因为网络引起的故障。
资源
代码
- Github Eureka
参考及引用
Spring Cloud Netflix 官方文档
Spring Cloud Eureka Server 自我保护
Spring Cloud Netflix(一)相关推荐
- Spring Cloud Netflix Zuul中的速率限制
来源:SpringForAll社区 1.引言 Spring Cloud Netflix Zuul 是一个包含Netflix Zuul的开源网关.它为Spring Boot应用增加了一些特别的特性.不幸 ...
- Spring Cloud Netflix项目进入维护模式之我见
这两天看到一则新闻:https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-ne ...
- 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器
2. 服务发现:Eureka服务器 2.1 如何创建Eureka服务器 引用org.springframework.cloud的spring-cloud-starter-eureka-server就可 ...
- 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端
1. 服务发现:Eureka客户端 服务发现是微服务架构的关键原则之一.使用手动配置或一些约定方式来处理多服务多实例的方式是非常困难,并且十分脆弱的.Eureka同时是Netflix服务发现的 ...
- spring cloud netflix
spring cloud netflix,实际上就是基于netflix公司的开源组件,然后基于spring cloud的标准规范,在springboot的基础之上进行整合.
- SpringCloud学习笔记(1)- Spring Cloud Netflix
文章目录 SpringCloud学习笔记(1)- Spring Cloud Netflix 单体应用存在的问题 Spring Cloud Eureka Eureka Server代码实现 Eureka ...
- Spring Cloud Netflix尤里卡
本教程是关于Spring云Netflix Eureka的. 在这里,我们将创建eureka发现服务器和微服务,这些服务本身将注册到发现服务器和使用netflix客户端API的客户端中,以使用示例示例来 ...
- SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用
1. 什么是负载均衡? 负载均衡,就是分发请求流量到不同的服务器. 负载均衡一般分为两种 1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 2. 服务提供者(spring-c ...
- SpringCloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus
在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化.但试想一下, 在分布式系统中,如果存在很 ...
- Spring Cloud Netflix之Eureka上篇
前言:Spring Cloud NetFlix这个项目对NetFlix中一些久经考验靠谱的服务发现,熔断,网关,智能路由,以及负载均衡等做了封装,并通过注解的或简单配置的方式提供给Spring Clo ...
最新文章
- 基于MATLAB的SUI信道模型的理论分析与仿真
- 【Python】B 站上这些 Python 视频真香!
- Error:Kotlin: Module was compiled with an incompatible version of Kotlin
- Java、Apache Tomcat下载与安装及环境变量配置
- 支付宝问题LaunchServices: ERROR: There is no registered handler for URL scheme alipay
- c语言变量定义数组,C语言中数组的定义和使用
- linux下qt实现vlc视频播放器,Qt封装本地视频播放器(VLC二次开发)
- 最近完成的一个可伸缩性的WEB开发框架
- cube云原生机器学习平台-架构(三)
- Android开发UI之补间动画-布局添加动画
- oc基础-oc中之集合NSSet,NSMutableSet
- 密码学Cryptology
- Android 最常用的设计模式六 安卓源码分析—责任链模式
- 最好的余生:有家回,有人等,有饭吃
- 如何用东华大学的邮箱来在Cousera进行学生认证
- 微信小程序如何实现搜索框的防抖功能
- MySQL的数据操作
- 对接环信踩坑记(环信客服+IMSDk即时通信)
- 产品人的三个层次——老吴说产品
- 怎么把MP4视频进行压缩