java面试(微服务)

news/2024/5/19 17:16:32

在这里插入图片描述

SpringCloud五大组件

在这里插入图片描述

  1. Nacos:注册中心
  2. Ribbon:负载均衡
  3. Feign:远程调用
  4. sentinel:服务熔断
  5. Gateway:网关
    在这里插入图片描述

注册中心

Eureka

在这里插入图片描述
在这里插入图片描述

Nacos

在这里插入图片描述
在这里插入图片描述

负载均衡

Ribbon负载均衡流程

在这里插入图片描述

Ribbon的负载均衡策略

  1. RoundRobinRule:简单的轮询服务列表来选择服务器
  2. WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
  3. RandomRule:随机选择一个可用的服务器
  4. BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器
  5. RetryRule:重试机制的选择逻辑
  6. AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较少的实例
  7. ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房,一个机甲等。而后再对Zone内的多个服务做轮询

自定义负载均衡策略如何实现

可以自己创建IRule接口,然后再通过配置类或者配置文件即可,通过定义IRule实现可以修改负载均衡规则,有两种方式:
在这里插入图片描述
在这里插入图片描述

服务雪崩

在这里插入图片描述

服务降级

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用户确保服务不会受请求突增影响变得不可用,确保服务不会崩溃
在这里插入图片描述
如果降级太多则会触发熔断

服务熔断

Hystrix熔断机制,用于监控微服务调用情况,默认是关闭的,如果需要开启需要在引导类上添加注解:@EnableCircuitBreaker,如果检测到10秒内请求的失败率超过50%,就触发熔断机制。之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求。
在这里插入图片描述
在这里插入图片描述

微服务是怎么监控的

在这里插入图片描述

skywalking

一个分布式系统的应用程序性能监控工具(Application Performance Management),提供了完善的链路追踪能力,apache的顶级项目
在这里插入图片描述
在这里插入图片描述

微服务限流

为什么要限流

  1. 并发大
  2. 防止用户恶意刷接口

限流的实现方式

  1. Tomcat:可以设置最大连接数
  2. Ngnix:漏潼算法
  3. 网关,令牌桶算法
  4. 自定义拦截器

Nginx限流

  1. 控制速率(突发流量)
    在这里插入图片描述
    在这里插入图片描述
  2. 控制并发连接数
    在这里插入图片描述

网关限流

配置文件中,微服务路由设置添加局部过滤器RequestRateLimiter
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
漏桶与令牌桶的区别:漏桶的速率绝对固定,令牌桶的速率会变化

在这里插入图片描述

CAP和BASE

CAP定理

分布式系统有三个指标:

  1. Consistency(一致性)
  2. Avaliability(可用性)
  3. Partition tolerance(分区容错性)
    分布式系统无法同时满足这三个指标,这个结论就叫做CAP定理
    在这里插入图片描述

Consistency

Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须保持一致

Availability

Availability(可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝

Partition tolerance

Partition(分区):因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区。
Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务

结论:

  1. 分布式系统节点之间肯定是需要网络连接的,分区(P)是必然存在的
  2. 如果保证访问的高可用性(A),可以持续对外提供服务,但不能保证数据的强一致性–>AP
  3. 如果保证数据的强一致性(C),就要放弃高可用性–>CP

BASE理论

BASE理论是对CAP的一种解决思路,包含三个思想:

  1. Basicially Availability(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用
  2. Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态
  3. Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束之后,最终达到数据一致。
    在这里插入图片描述

分布式事务解决方案

Seata架构

Seata事务管理中有三个重要的角色

  1. TC(Transaction Coordinator)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚
  2. TM(Transaction Manager)-事务管理者:定义全局事务的范围,开始全局事务,提交或回滚全局锁事务
  3. RM(Resource Manager)-资源管理器:管理分治事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚
    在这里插入图片描述

Seata的XA模式

RM一阶段的工作:
1. 注册分治事务到TC
2. 执行分支业务sql但不提交
3. 报告执行状态到TC
TC二阶段的工作:
1. TC检测各分支事务执行状态
2. 如果都成功,通知所有RM提交事务
3. 如果有失败,通过所有RM回滚事务
RM二阶段的工作:
1. 接收TC指令,提交或回滚事务

Seata的AT模式

AT模式同样是分阶段提交的模型,不过却弥补了XA模型中资源锁定周期过长的缺陷
阶段一RM工作:
1. 注册分支事务
2. 记录undo-log(数据快照)
3. 执行业务sql并提交
4. 报告事务状态
阶段二提交时RM的工作
1. 删除undo-log
阶段二回滚时RM的工作
1. 根据undo-log恢复数据到更新之前
在这里插入图片描述

Seata的TCC模式

  1. Try:资源的检测和预留
  2. Confirm:完成资源操作业务;要求Try成功Confirm一定要能成功
  3. Cancel:预留资源释放,可以理解为Try的反向操作
    在这里插入图片描述

MQ分布式事务

在这里插入图片描述
在这里插入图片描述

接口幂等性

幂等:多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单词调用的结果一致。
需要幂等场景:

  1. 用户重复点击
  2. MQ消息重复
  3. 应用使用失败或超时重试机制

接口幂等

基于RESTful API的角度对部分常见请求类型的幂等性特点进行分析:

请求方式说明
GET查询操作,天然幂等
POST新增操作,请求一次与请求多次造成的结果不同,不是幂等的
PUT更新操作,如果是以绝对值更新,则是幂等的。如果是通过增量的方式更新,不幂等
DELETE删除操作,根据唯一值进行删除,是幂等的

token+redis

在这里插入图片描述

分布式锁

在这里插入图片描述
在这里插入图片描述


http://www.mrgr.cn/p/06480320

相关文章

Adobe系列软件安装

双击解压 先运行Creative_Cloud_Set_Up.exe。 完毕后,运行AdobeGenP.exe 先Path,选路径,如 C:\Program Files\Adobe 后Search 最后Patch。 关闭软件,修图!

高校运维赛WEB部分-gxngxngxn

高校运维赛WEB部分-gxngxngxn phpsql 利用万能密码登录 admin/""="a=a 登录进后台后得到flagpyssrf 访问/source可以得到源码 from flask import Flask,request from redis import Redis import hashlib import pickle import base64 import urllib app = Flask…

操作系统安全:安全审计,Windows系统日志详解,Windows事件ID汇总

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。 这一章节需要知道Windo…

大营销抽奖系统,DDD开发要如何建模?

作者:小傅哥 博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!😄大家好,我是技术UP主小傅哥。 👨🏻‍💻 经过5.1假期的一顿框框输出,终于完成了《大营销项目》第二阶段的开发和上线,体验地址:https://gaga.plus 有了这个项目的落地,也终于…

Springboot框架web开发实用功能-02

在些模块中汇总了一些web开发常用的配置和功能。 涉及的模块 springboot-common-config, 端口号:17000 Springboot框架web开发常用功能 Restful接口定义 查询参数 Data public class QueryParam {private String key;private String value; }Control…

WPF 从键盘事件 KeyEventArgs 里获取 Scan Code 的方法

本文将告诉大家如何在 WPF 里面,从键盘事件 KeyEventArgs 参数里获取到 Scan Code 键盘按键的设备独立标识符的方法概念: 以下来自 bing 的答案 键盘的 Scan Code 是按键的设备独立标识符,对应于按键在硬件上的实际标识。每个按键都有一个唯一的扫描码,用于表示该按键。当用…

【Git实战】如何将本地仓库推送至Github(windows版)?

最近使用Go语言开发项目,想寻找位操作相关的工具包。找了一圈没有合适的,因此自己写了一个。又想将其推送到Github上,中间逢山开路,遇水搭桥,终于成功将本地Git仓库和Github进行了关联。现将我的方法公之于众&#xff…

学QT的第一天~

#include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { //窗口相关设置// this->resize(427,330); this->setFixedSize(427,330); //设置图标 this->setWindowIcon(QIcon("C:\\Users\\Admin\\Desktop\\pictrue\\dahz.jpg&q…

【软考】模拟考卷错题本2024-05-05

1 算法 关键词:按照单位重量价值大优先,那就是1、2、3即430;之后的根据排除法又可以得到630;故C。 2 UML 序列图 上图已经基本上有解析;重点在于在四个选项中选正确的。根据概念排除:异步和同步是不一样的&…

宝兰德通过广东教育行业信创适配认证,拓展教育信创生态圈

近日,由宝兰德自主研发的多款中间件产品通过广东省教育行业信创适配中心的适配测试。测试表明,宝兰德四款中间件产品(分布式缓存软件V3.0、应用服务器软件V9.5、消息中间件软件 V2.1、Web服务器软件V3.1) 与当前主流国产操作系统统…

【教程】极简Python接入免费语音识别API

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,请不吝给个[点赞、收藏、关注]哦~ 安装库: pip install SpeechRecognition 使用方法: import speech_recognition as srr sr.Recognizer() harvard sr…

备考2024年上海初中生古诗文大会:单选题真题示例和独家解析

根据往年的经验,上海市初中生古诗文大会(即上海中学生古诗文大会(初中组))即将启动。那么该如何备考上海初中生古诗文大会呢?我们来做几道往年的真题体会一下。 以下题目截取自我独家制作的在线真题集&…

LSTM计算指示图

掌握网络结构组件构成 输入门、遗忘门、输出门候选记忆细胞记忆细胞隐藏状态ref:6.8. 长短期记忆(LSTM) — 《动手学深度学习》 文档 (gluon.ai)

websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步

文章目录 数据准备(阻塞和非阻塞)、数据读写(同步和异步)小总结(陈硕老师的总结) 知识拓展同步执行实例异步编程实例 八股 数据准备(阻塞和非阻塞)、数据读写(同步和异步) 无论是什么样的IO都包含两个阶段:数据准备和数据读写。 我们的网络IO…

Honor of Kings QQ 1537937510

司空震到底要不要物理伤害高呢?还是法术伤害高呢?要不要出魔女和制裁引发的血案 先看下司空震的说明: 说下这个伙计为啥加QQ来骂我,因为这场当然最终是赢了,比赛里他一直强调司空震是物理伤害改版问题,然后…

关于冯诺依曼体系结构 和 操作系统(Operator System)的概念讲解(冯诺依曼体系结构,操作系统的作用等)

目录 一、冯诺依曼体系结构 二、操作系统 1. 概念 2. 设计操作系统的目的 3.系统调用和库函数概念 4.总结 三、完结撒❀ 一、冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 截…

【一起深度学习——NIN】

NIN神经网络 原理图:代码实现:输出结果: 原理图: 代码实现: import torch from torch import nn from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.…

worldclim 当前时期的生物气候变量数据存在的问题

bio2,3,4,6,7,9,12,13,14, 15,16,17,18,19 在格陵兰岛存在显著问题如下: 有明显的分割线。

cmake进阶:文件操作

一. 简介 前面几篇文章学习了 cmake的文件操作,写文件,读文件。文章如下: cmake进阶:文件操作之写文件-CSDN博客 cmake进阶:文件操作之读文件-CSDN博客 本文继续学习文件操作。主要学习 文件重命名,删…

商城系统推荐,如何找到一款可靠的商城系统?

如今,电商系统成为商家必不可少的营销工具,其系统在金融、外贸、零售等行业领域应用广泛。那么,作为初试水的企业又没有挑选电商系统的经验,如何找到拥有全功能、全渠道、可靠的网上商城系统呢? 我们可以先按电商系统…