Spring Cloud Netflix(一)

介绍

Spring Cloud Netflix 是由 Netflix 开源的,并且由 Spring 项目集成到 Spring Cloud 中的,主要用于构建大型分布式项目。

Spring Cloud Netflix 通过自动配置来绑定到 Spring 项目中,使用注解便可以快速启用相应的功能。

Spring Cloud Netflix 主要提供以下功能

  • Eureka:服务发现
  • Hystrix:断路器
  • Zuul:智能路由
  • Ribbon:客户端的负载均衡

Eureka

Eureka 主要提供服务注册、服务发现功能,这是微服务架构中的核心功能之一。

Eureka 主要分为 ServerClient

Client 是应用端,是向外提供的服务。

Server 是服务端,即注册中心,存储了所有已注册 Client 的元数据信息。例如:主机、端口、健康指标、首页等其他信息。

Client 会发送心跳给 Server,用于表明服务正常可用。如果 Server 不能定时接受到 Client 的心跳信息,便会将 ClientInstance 移除。但是如果在两次心跳之间服务挂掉,那么 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:表示为可用),以及访问的 URLURL 会指向实例的 /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(一)相关推荐

  1. Spring Cloud Netflix Zuul中的速率限制

    来源:SpringForAll社区 1.引言 Spring Cloud Netflix Zuul 是一个包含Netflix Zuul的开源网关.它为Spring Boot应用增加了一些特别的特性.不幸 ...

  2. Spring Cloud Netflix项目进入维护模式之我见

    这两天看到一则新闻:https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-ne ...

  3. 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器

    2. 服务发现:Eureka服务器 2.1 如何创建Eureka服务器 引用org.springframework.cloud的spring-cloud-starter-eureka-server就可 ...

  4. 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端

    1.     服务发现:Eureka客户端 服务发现是微服务架构的关键原则之一.使用手动配置或一些约定方式来处理多服务多实例的方式是非常困难,并且十分脆弱的.Eureka同时是Netflix服务发现的 ...

  5. spring cloud netflix

    spring cloud netflix,实际上就是基于netflix公司的开源组件,然后基于spring cloud的标准规范,在springboot的基础之上进行整合.

  6. SpringCloud学习笔记(1)- Spring Cloud Netflix

    文章目录 SpringCloud学习笔记(1)- Spring Cloud Netflix 单体应用存在的问题 Spring Cloud Eureka Eureka Server代码实现 Eureka ...

  7. Spring Cloud Netflix尤里卡

    本教程是关于Spring云Netflix Eureka的. 在这里,我们将创建eureka发现服务器和微服务,这些服务本身将注册到发现服务器和使用netflix客户端API的客户端中,以使用示例示例来 ...

  8. SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用

    1. 什么是负载均衡? 负载均衡,就是分发请求流量到不同的服务器. 负载均衡一般分为两种 1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 2. 服务提供者(spring-c ...

  9. SpringCloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

    在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化.但试想一下, 在分布式系统中,如果存在很 ...

  10. Spring Cloud Netflix之Eureka上篇

    前言:Spring Cloud NetFlix这个项目对NetFlix中一些久经考验靠谱的服务发现,熔断,网关,智能路由,以及负载均衡等做了封装,并通过注解的或简单配置的方式提供给Spring Clo ...

最新文章

  1. 基于MATLAB的SUI信道模型的理论分析与仿真
  2. 【Python】B 站上这些 Python 视频真香!
  3. Error:Kotlin: Module was compiled with an incompatible version of Kotlin
  4. Java、Apache Tomcat下载与安装及环境变量配置
  5. 支付宝问题LaunchServices: ERROR: There is no registered handler for URL scheme alipay
  6. c语言变量定义数组,C语言中数组的定义和使用
  7. linux下qt实现vlc视频播放器,Qt封装本地视频播放器(VLC二次开发)
  8. 最近完成的一个可伸缩性的WEB开发框架
  9. cube云原生机器学习平台-架构(三)
  10. Android开发UI之补间动画-布局添加动画
  11. oc基础-oc中之集合NSSet,NSMutableSet
  12. 密码学Cryptology
  13. Android 最常用的设计模式六 安卓源码分析—责任链模式
  14. 最好的余生:有家回,有人等,有饭吃
  15. 如何用东华大学的邮箱来在Cousera进行学生认证
  16. 微信小程序如何实现搜索框的防抖功能
  17. MySQL的数据操作
  18. 对接环信踩坑记(环信客服+IMSDk即时通信)
  19. 产品人的三个层次——老吴说产品
  20. 怎么把MP4视频进行压缩

热门文章

  1. JAVA内部类、外部类
  2. 新款 iPad 真香,包邮送一个!
  3. 新款iPad pro键盘带有触控面板,那么支持上一代iPad pro吗?
  4. CMMI认证中的ATM
  5. 【面试题】面试不面试,你都必须得掌握的vue知识
  6. VUE axios 415 错误
  7. 致远项目管理SPM系统之项目风险评估
  8. springcloud steam + rabbitmq
  9. 松下m6高速板材_你必须知道的高速板材使用注意事项
  10. 发光立方体效果 html+css