SpringCloud核心组件

04db2e79b6cc4a82b7de5f1a0f2fe941.jpgEureka 注册中心,服务的注册与发现

 

Feign远程调用

Ribbon负载均衡,默认轮询

Hystrix 熔断 降级

Zuul微服务网关(这个组件负责网络路由,可以做统一的降级、限流、认证授权、安全)

Eureka

微服务的功能主要有以下几个方面:

服务的注册和发现

服务的负载均衡

服务的容错

服务网关

服务配置的统一管理

链路追踪

实时日志

一个服务实例注册后,会定时向服务注册中心提供 “心跳”,以表明自己还处于可用的状态。当一个服务实例停止向服务注册中心提供心跳一段时间后,服务注册中心会认为该服务实例不可用,会将该服务实例从服务注册列表中剔 除。如果这个被剔除掉的服务实例过一段时间后继续向注册中心提供心跳,那么服务注册中心会将该服务实例重新加入服务注册中心的列表中。

Eureka 是一个用于服务注册和发现的组件,分为 Server (服务注册中心) 和 Client (服务提供者、服务消费者)。与 Eureka 类似得组件有 Consul 和 ZooKeeper。

Eureka 是 Spring Cloud 首选推荐的服务注册与发现组件,可以与 Spring Cloud 其他组件可以无缝对接。

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。

著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。

3.1 Zookeeper保证CP

会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。

3.2 Eureka保证AP

Eureka在设计时就优先保证可用性。Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。

Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

1. Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务

2. Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)

3. 当网络稳定时,当前实例新的注册信息会被同步到其它节点中

因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪。

Feig

 

 

动态代理,拼接请求地址以http协议发起请求

Ribbon

负载均衡是指将负载分摊到多个执行单元上,常见的负载均衡有两种方式:

一种是独立进程单元,通过负载均衡策略,将请求转发到不同的执行单元上,例如 Ngnix;

另一种是将负载均衡逻辑以代码的形式封装到服务消费者的客户端上,服务消费者客户端维护了一份服务提供者的信息列表,有了信息列表,通过负载均衡策略将请求分摊给多个服务提供者,从而达到负载均衡的目的,例如 Ribbon

Ribbon默认采用轮询的负载均衡策略

Hystrix

在复杂的分布式系统中,可能有几十个服务相互依赖,这些服务由于某些原因,例如机房的不可靠性、网络服务商的不可靠性等,导致某个服务不可用 。 如果系统不隔离该不可用的服务,可能会导致整个系统不可用。Hystrix 提供了熔断器功能,能够阻止分布式系统中出现联动故障。Hystrix 是通过隔离服务的访问点阻止联动故障的,并提供了故障的解决方案,从而提高了整个分布式系统的弹性。

Zuul

Zuul 作为路由网关组件,在微服务架构中有着非常重要的作用,主要体现在以下 6 个方面:

Zuul, Ribbon 以及 Eureka 相结合,可以实现智能路由和负载均衡的功能,Zuul 能够将请求流量按某种策略分发到集群状态的多个服务实例

网关将所有服务的 API 接口统一聚合,并统一对外暴露。外界系统调用 API 接口时,都是由网关对外暴露的 API 接口,外界系统不需要知道微服务系统中各服务相互调用的复杂性。微服务系统也保护了其内部微服务单元的 API 接口 , 防止其被外界直 接调用,导致服务的敏感信息对外暴露

网关服务可以做用户身份认证和权限认证,防止非法请求操作 API 接口,对服务器起到保护作用

网关可以实现监控功能,实时日志输出,对请求进行记录

网关可以用来实现流量监控,在高流量的情况下,对服务进行降级

API 接口从内部服务分离出来,方便做测试

Zuul 的核心是一系列过滤器,可以在 Http 请求的发起和响应返回期间执行一系列的过滤器:

PRE 过滤器:在请求路由到具体的服务之前执行,这种类型的过滤器可以做安全验证,例如身份验证、 参数验证等

ROUTING 过滤器:用于将请求路由到具体的微服务实例。在默认情况下,它使用 Http Client 进行网络请求

POST 过滤器:在请求己被路由到微服务后执行。 一般情况下,用作收集统计 信息、指标,以及将响应传输到客户端

ERROR 过滤器:在其他过滤器发生错误时执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hermite矩阵的特征值估计——courant-fischer定理

Hermite矩阵的特征值估计——courant-fischer定理 一、courant-fischer定理(min-max定理) 将hermite矩阵的特征值表示为一系列最优化问题的解。 一个函数 R ( x ) x H A x x H x R(x)\frac{x^HAx}{x^Hx} R(x)xHxxHAx​,称为Rayleigh商&am…

代码随想录二刷 |字符串 |反转字符串II

代码随想录二刷 |字符串 |反转字符串II 题目描述解题思路 & 代码实现 题目描述 541.反转字符串II 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果…

Linux /etc/shadow密码生成操作示例

一. 前言 之前学习过Linux文件系统下/etc/shadow里面保存着各个用户名的密码,并且密码是通过MD5算法加盐的方式生成的。但是一直没有自己真正动手生成过,今天,就来自己动手写代码生成下。 二. 代码验证/etc/shadow中密码 1. 通过passwd命令生…

算法通关村第六关—序列恢复二叉树(青铜)

根据序列恢复二叉树 示例 给定序列恢复二叉树(1)前序:1 2 3 4 5 6 8 7 9 10 11 12 13 15 14(2)中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 123)后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 一、前中序列恢复二叉树 (1)前序:1 2 3…

try-with-resources使用

1、使用场景 针对 Java 中资源管理和异常管理的正确做法已经有了很好的文档说明。对于任何已成功初始 化的资源,都需要相应地调用它的 close() 方法。这就要求严格遵守 try/catch/finally 块的用法,以 确保任何从资源打开时起的执行路径最终都能调用一…

电商营销场景的RocketMQ实战01-RocketMQ原理

架构图 Broker主从架构与集群模式 RocketMQ原理深入剖析 Broker主从架构原理 HAConnection与HAClient Broker基于raft协议的主从架构 Consumer运行原理 基础知识 001_RocketMQ架构设计与运行流程分析 RocketMQ这一块,非常关键的一个重要的技术,面试的时候…

高级IO select 多路转接实现思路

文章目录 select 函数fd_set 类型timeval 结构体select 函数的基本使用流程文件描述符就绪条件以select函数为中心实现多路转接的思路select 缺陷 select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); selec…

PlantUML语法(全)及使用教程-时序图

目录 1. 参与者1.1、参与者说明1.2、背景色1.3、参与者顺序 2. 消息和箭头2.1、 文本对其方式2.2、响应信息显示在箭头下面2.3、箭头设置2.4、修改箭头颜色2.5、对消息排序 3. 页面标题、眉角、页脚4. 分割页面5. 生命线6. 填充区设置7. 注释8. 移除脚注9. 组合信息9.1、alt/el…

docker的知识点,以及使用

Docker 是一个开源的应用容器引擎,可以让开发者将应用程序及其依赖项打包至一个可移植的容器中,从而实现快速部署、可扩展和依赖项隔离等特性。下面是 Docker 的一些知识点以及使用方法: Docker 的组成部分包括 Docker 引擎、Docker 镜像、Do…

MySQL三大日志详细总结(redo log undo log binlog)

MySQL日志 包括事务日志(redolog undolog)慢查询日志,通用查询日志,二进制日志(binlog) 最为重要的就是binlog(归档日志)事务日志redolog(重做日志)undolog…

MySQL备份与恢复(重点)

MySQL备份与恢复(重点) 一、用户管理与权限管理 ☆ 用户管理 1、创建MySQL用户 注意:MySQL中不能单纯通过用户名来说明用户,必须要加上主机。如jack10.1.1.1 基本语法: mysql> create user 用户名被允许连接的主…

ssm+vue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的仓库在线管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三…

建文工程项目管理软件 SQL 注入漏洞复现

0x01 产品简介 建文工程管理软件是一个适用于工程投资领域的综合型的多方协作平台。 0x02 漏洞概述 建文工程项目管理软件BusinessManger.ashx、Desktop.ashx等接口处存在SQL注入漏洞,攻击者可通过该漏洞获取数据库中的信息(例如,管理员后台…

无图谱不AI之三元组数据保存Neo4j

目录 1. 代码学习1.1 源代码1.2 代码解读 没有图谱称为弱人工智能,有图谱的称为强人工智能。 图谱可以让机器学习和人工智能具备推理能力。 1. 代码学习 1.1 源代码 # -*- coding: utf-8 -*- from py2neo import Node, Graph, Relationship# 可以先阅读下文档&a…

微信小程序体验版提交审核,提示接口未配置在app.json文件且无权限

在火狐浏览器 打开微信公众平台 发布小程序 弹窗一闪而过 是因为 放开这里就可以了

RPA机器人如何确保敏感数据的安全性

数据资源作为数字化时代的关键要素,其重要性一直受到高度重视,由此,数据安全也成为企业和个人必须面对的重要问题。随着RPA技术在各个行业的广泛应用,其系统安全性也成了每个企业关注的重中之重。经验丰富的RPA专家可以有效地采取…

已解决!nginx+php上传大文件返回502错误

先说结论:需要修改fpm配置文件: request_terminate_timeout 300 request_terminate_timeout和max_execution_time 有何不同? request_terminate_timeout和max_execution_time是两个不同的PHP配置参数,它们分别控制着不同的执行…

.360、halo勒索病毒来敲门:抗击.360、halo病毒的智慧安全策略

尊敬的读者: 在数字时代,网络威胁层出不穷,而.360、halo勒索病毒正是近期崛起的一位狡诈对手。本文将深度解析.360、halo病毒的毒性攻击方式,为你揭示如何在遭受其加密威胁后迅速自救,同时提供切实可行的预防策略。面对…

python 入门基础(一)

1. python 的程序结构:包、模块、函数。 包里面包含多个模块,模块里面包含多个函数。 3. python的数据结构: 元组 列表 字典(仅列出不同于c的地方) 4. 模块:一个文件就是一个模块。 模块里面可以包…

网络通信安全的坚固防线双向认证技术详解

目录 什么是双向认证 双向认证的工作原理 双向认证的实现方式 双向认证的重要性 双向认证的挑战 安全最佳实践 小结 什么是双向认证 双向认证,又称为双向身份验证或双向鉴别,是一种在通信双方之间建立信任关系的安全机制。在通信过程中&#xff0…