java面试(微服务)

news2024/11/16 13:32:35

在这里插入图片描述

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.coloradmin.cn/o/1637946.html

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

相关文章

2024五一杯数学建模B题思路代码文章教学-交通需求规划与可达率问题

交通需求规划与可达率问题 问题总结: 问题一:在一个小型交通网络中,给定的起点和终点之间的交通需求需分配到相应路径上。目标是最大化任意一条路段出现突发状况时的交通需求期望可达率。 问题二:在一个较大的交通网络中&#xff…

C++浮点数format时的舍入问题

C浮点数format时的舍入问题 首先有这样一段代码&#xff1a; #include <iostream> #include <stdio.h> using namespace std;int main() {cout << " main begin : " << endl;printf("%.0f \r\n", 1.5);printf("%.0f \r\n&…

ASP.NET通用作业批改系统设计

摘  要 该系统采用B/S结构&#xff0c;以浏览器方式登陆系统&#xff0c;用ASP.NET作为开发语言&#xff0c;数据库则使用Microsoft SQL Server 2000实现。《通用作业批改系统》包括了学生子系统、教师子系统、管理员子系统三大模块&#xff0c;该系统主要完成学生&#xff…

手撕spring框架(3)

手撕spring框架&#xff08;3&#xff09; 相关系列 手撕spring框架&#xff08;1&#xff09; 手撕spring框架&#xff08;2&#xff09; InitializingBean 接口详解 什么是 InitializingBean 接口&#xff1f; InitializingBean 接口是 Spring 框架中的一个接口&#xff0c…

Vue3管理系统-路由设置+表单校验

一、配置路由规则 1.在views 下创建文件夹分类,搭好架子 2.配置路由规则 在router下Index.js import { createRouter, createWebHistory } from vue-routerconst router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [//一级路由//这里可以…

GitLab服务器的搭建

GitLab服务器的搭建 为公司搭建一台代码托管服务器 服务器规格&#xff1a;2vCPUs4GiB20G 操作系统&#xff1a;RockyLinux8.8 下载软件 gitlab官网&#xff1a;http://about.gitlab.com 在官网下载比较麻烦&#xff0c;推荐从《清华大学开源软件镜像站》下载 清华大学开…

java线上问题排查之CPU使用率过高(一)【保姆级教程】

线上故障排查&#xff0c;主要包括CPU&#xff0c;磁盘&#xff0c;内存以及网络。基本上出问题就是 df、free、top 三连&#xff0c;然后依次 jstack、jmap df&#xff1a;用于显示文件系统的磁盘空间使用情况。 df -h&#xff1a;以人类可读的方式显示磁盘空间使用情况。 d…

微软如何打造数字零售力航母系列科普06 - 如何使用微软的Copilot人工智能

如何使用微软的Copilot人工智能&#xff1f; Copilot和ChatGPT有很多相似之处&#xff0c;但微软的聊天机器人本身就有一定的优势。以下是如何对其进行旋转&#xff0c;并查看其最引人注目的功能。 ​​​​​​​ &#xff08;资料来源&#xff1a;Lance Whitney/微软&…

前端素材库

大家好我是苏麟 , 今天推荐一个前端素材库 . 官网 : iconfont-阿里巴巴矢量图标库 这期就到这里 , 下期见!

WSL2-Ubuntu使用Conda配置百度飞浆paddlepaddle虚拟环境

0x00 缘起 本文将介绍在WSL2-Ubuntu系统中,使用Conda配置百度飞浆paddlepaddle虚拟环境中所出现的各种问题以及解决方法,最终运行"run_check()"通过测试。 在WSL2中配置paddlepaddle不像配置Pytorch那样顺滑,会出现各种问题(如:库的文件缺失、不知道如何匹配C…

Ps 滤镜:锐化

Ps菜单&#xff1a;滤镜/锐化 Filter/Sharpen “锐化”类滤镜一般都是通过增加相邻像素的对比度来达到锐化的目的。 请参阅&#xff1a; 《Ps&#xff1a;更好地进行锐化的建议》 较小范围的局部锐化&#xff0c;可尝试 Photoshop 工具箱里的“锐化工具”。 Photoshop 锐化类的…

ES与关系数据库的同步练习(hotel_admin)

目录 1 es与数据库同步的方法2 实践2.1 任务介绍2.2 MQ方面操作2.2.1 声明交换机队列并且绑定2.2.2 hotel_admin端web层设置mq发送消息2.3 hotel_demo端监听接受消息并执行es操作 1 es与数据库同步的方法 方式一&#xff1a;同步调用 优点&#xff1a;实现简单&#xff0c;粗…

【C++】学习笔记——string_4

文章目录 六、string类7. string类的模拟实现 未完待续 六、string类 7. string类的模拟实现 我们在上文简单实现了string类的构造函数。不知道大家有没有发现一个问题&#xff0c;我们在进行实现无参的构造函数时&#xff0c;初始化列表将 _str 初始化为 nullptr 了&#xf…

GAI工具哪家强?(ChatGPT 4 vs 文心一言)

开始之前&#xff0c; 先来看看 GAI和AI的区别和关系。 AI 和GAI AI 和GAI的概念 AI&#xff08;Artificial Intelligence&#xff09;是人工智能的缩写&#xff0c;是计算机科学的一个分支&#xff0c;旨在使机器像人类一样进行学习和思考。AI技术的研究领域包括机器人、语…

【Mac】Axure RP 9(交互原型设计软件)安装教程

软件介绍 Axure RP 9是一款强大的原型设计工具&#xff0c;广泛用于用户界面和交互设计。它提供了丰富的功能和工具&#xff0c;能够帮助设计师创建高保真的交互原型&#xff0c;用于展示和测试软件应用或网站的功能和流程。以下是Axure RP 9的主要特点和功能&#xff1a; 交…

基于t972 Android9 AP6256,如何在设置中添加5G热点选项,并使其正常打开

通过设置的的WiFi热点选项可以知道关键词“2.4GHz”&#xff0c;因此可以其全局搜索&#xff0c;在packages\apps\Settings\res\values\strings.xml文件下找到如下图所示&#xff0c; 从上面注释可以知道&#xff0c;选项按键选择2.4GHz触发的按键关键词是“wifi_ap_choose_2G…

9U_VPX信号处理机,传感器大数据异构计算平台

9U_VPX信号处理机 1 介绍 1.1 产品概述 9U_VPX信号处理机是一款面向前端射频系统的高速记录、存储和处理系统。信号处理机为应对军用电子信息系统面临的目标种类多样化、战场环境复杂化、执行任务多元化等多重难题&#xff0c;而研发出来的***数据记录存储系统。信号处理机担…

基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 遗传算法&#xff08;GA&#xff09;原理 4.2 BP神经网络原理 4.3 遗传优化BP神经网络结合应用 4.4 遗传算法简要改进 5.完整程序 1.程序功能描述 基于改进遗传优化的BP神经网络金融…

【计算机网络】FTP站点配置搭建教程以及相关问题解决方案(超详细)

文章目录 1、安装Window Server 20082、搭建FTP环境&#xff08;1&#xff09;安装FTP服务器&#xff08;2&#xff09;配置FTP服务器&#xff08;3&#xff09;测试FTP连接 3、遇到的问题以及解决方案&#xff08;1&#xff09;Windows无法访问此文件夹&#xff08;2&#xff…

Github 2024-05-01 开源项目月报Top20

根据Github Trendings的统计,本月(2024-05-01统计)共有20个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目13TypeScript项目5C项目2非开发语言项目1C++项目1JavaScript项目1Rust项目1Go项目1Shell项目1Svelte项目1编程面试大学:成为软件工程…