黑马Java面试笔记之 微服务篇(业务)

一. 限流

你们项目中有没有做过限流?怎么做的?

 为什么要限流呢?

一是并发的确大(突发流量)

二是防止用户恶意刷接口

 限流的实现方式:

  • Tomcat:可以设置最大连接数

可以通过maxThreads设置最大Tomcat连接数,实现限流,但是适用于单体架构

  • Nginx:漏桶算法
  • 网关,令牌桶算法
  • 自定义拦截器

1.1 Nginx限流

  • 控制速率(突发流量)

  • 控制并发连接数

 1.2 网关限流

        yml配置文件中,微服务路由设置添加局部过滤器RequestRateLimiter

令牌桶:

令牌桶和漏桶的区别:

        令牌桶存储的是令牌,漏桶存储的是请求,两者都可以应对突发的流量.不同的是二者的速率,不管请求量有多大,漏桶都是以固定的速率往外露出请求,以恒定的速率进行放行;而令牌桶可能会超出令牌生成的速度

总结

限流常见的算法有哪些?

对令牌桶和漏桶进行分析,并解释二者的区别

 二. 分布式系统理论

解释一下 CAP 和 BASE

  • 分布式事务方案的指导
  • 分布式系统设计方向
  • 根据业务指导使用正确的技术选择

 2.1 CAP

        1998年,加州大学的计算机科学家 Eric Brewer提出,分布式系统有三个指标:

  • Consistency(一致性)

        用户访问分布式系统中的任意节点,得到的数据必须一致

  • Availability(可用性)

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

  • Partition tolerance(分区容错性)

        Partition(分区):因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区.

        tolerance(容错):再集群出现分区时,整个系统也要持续对外提供服务

Eric Brewer说,分布式系统无法同时满足这三个指标.

这个结论就叫做CAP定理.

 结论

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

 2.2 BASE理论

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

  • Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用.
  • Soft State (软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态
  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致.

总结

三. 分布式事务解决方案

你们采用哪种分布式事务解决方案?

3.1 Seata架构

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

  • TC(Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚.
  • TM(Transaction Manager) - 事务管理器:定义全局事务的范围,开始全局事务,提交或回滚全局事务
  • RM(Resource Manager) - 资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚.

3.2 模式1 seata的XA模式

3.3 模式2 AT模式原理

3.4 TCC模式原理

3.5 MQ分布式事务

总结

        根据自己的业务跟面试官进行陈述

四. 分布式服务接口幂等性

4.1 接口幂等

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

解决幂等性有三种方案:

  • 数据库唯一索引  (新增)
  • token+redis  (新增,修改)
  • 分布式锁  (新增,修改)

4.2 token+redis

        创建商品,提交订单,转账,支付等操作

4.3 分布式锁

总结

五. 分布式任务调度

你们项目中使用了什么分布式任务调度?

首先,要先描述但是实在什么场景使用了任务调度

5.1 xxl-job路由策略有哪些?

5.2 xxl-job 任务执行失败会怎么样

故障转移+失败重试,查看日志分析 --->  邮件告警

5.3 如果有大数据量的任务同时都需要执行,怎么解决?

        执行器集群部署时,任务路由策略选择分片广播情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务

总结

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

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

相关文章

PostgreSQL的扩展 passwordcheck

PostgreSQL的扩展 passwordcheck passwordcheck 是 PostgreSQL 内置的一个密码复杂度检查扩展,用于强制实施基本的密码策略。 一、扩展概述 功能:在创建或修改用户密码时检查密码复杂度目的:防止使用过于简单的密码适用版本:Po…

Go语言学习-->编译器安装

Go语言学习–>编译器安装 Go采用的是UTF-8编码的文本文件存放源代码,理论上使用任何一款文本编辑器都可以做Go语言开发。这里推荐使用VS Code和Goland。 VS Code是微软开源的编辑器,而Goland是jetbrains出品的付费IDE。我们这里使用VS Code …

基于Android的一周穿搭APP的设计与实现 _springboot+vue

开发语言:Java框架:springboot AndroidJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.6 系统展示 APP登录 A…

井字棋——ai PK you

挑战人工智能,体验经典井字棋的对决!AI 拥有强大的逻辑计算能力,每一步都经过精准推演。你能战胜它吗?还是会被 AI 彻底碾压? 特点: 智能 AI,难度可调 极简界面,快速上手 实时胜负…

关于easyx头文件

一、窗口创建 &#xff08;1&#xff09;几种创建方式 #include<easyx.h>//easyx的头文件 #include<iostream> using namespace std;int main() {//创建一个500*500的窗口//参数为&#xff1a;长度&#xff0c;宽度&#xff0c;是否显示黑框&#xff08;无参为不…

【学习记录】Django Channels + WebSocket 异步推流开发常用命令汇总

文章目录 &#x1f4cc; 摘要&#x1f9f0; 虚拟环境管理✅ 创建虚拟环境✅ 删除虚拟环境✅ 激活/切换虚拟环境 &#x1f6e0;️ Django 项目管理✅ 查看 Django 版本✅ 创建 Django 项目✅ 创建 Django App &#x1f4ac; Channels 常用操作✅ 查看 Channels 版本 &#x1f50…

Java线程状态及其流转

在Java编程中&#xff0c;线程是一种重要的并发实体。为了更好地理解和管理多线程应用程序&#xff0c;我们需要清楚线程的不同状态及其流转机制。本文将详细介绍Java中线程的几种主要状态以及它们之间的转换关系。 一、线程状态概述 Java线程的生命周期有多个状态&#xff0…

LabVIEW双光子显微镜开发

基于LabVIEW 开发高性能双光子显微镜系统&#xff0c;聚焦于生物样本深层成像与纳米材料三维表征。实现了超快激光控制、多维数据采集与实时图像重建。系统采用飞秒激光光源与高精度振镜扫描模块&#xff0c;结合 LabVIEW 的 FPGA 实时控制能力&#xff0c;可对活体组织、荧光纳…

数据库操作-MySQL-4(JDBC编程)

JDBC&#xff1a;通过Java代码操作mysql数据库&#xff0c;数据库会提供一些API供我们调用 MySQL、Oracle、等API有差异&#xff0c;但是Java统一了所有接口&#xff0c;即JDBC&#xff1b; 原始api-驱动包&#xff08;类似转接头&#xff09;-统一的api-Java 驱动包&#xff1…

windows修改跃点数调整网络优先级

Windows有两个网卡&#xff0c;一个有线网卡&#xff0c;一个无线网卡&#xff0c;通过修改跃点数来调整优先使用的网卡&#xff0c;这种只是众多设置方式中的其中一种设置方式 文档编写时间&#xff1a;2025年6月 1.打开电脑的网络连接 cmd--ncpa.cpl 在cmd中运行ncpa.cpl可…

实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题。主要涉及线性回归、回归的显著性、回归系数的置信区间。 vial <- seq(1, 10, 1) Viscosity <- c(160,171,175,182,184,181,188,19…

【深入 LangChain 的 Model I/O】提示设计、模型调用与输出解析全解析

目录 什么是 Model I/O&#xff1f; 一、提示模板&#xff08;PromptTemplate&#xff09; 1.1 什么是提示模板&#xff1f; 1.2 常见提示模板类型 二、模型调用&#xff08;Model Predict&#xff09; 三、输出解析&#xff08;Output Parser&#xff09; 综合示例&…

OD 算法题 B卷【跳格子2】

文章目录 跳格子2 跳格子2 小明和朋友玩跳格子游戏&#xff0c;有n个连续格子组成的圆圈&#xff0c;每个格子有不同的分数&#xff0c;小朋友可以选择从任意格子起跳&#xff0c;但是不能跳连续的格子&#xff0c;不能回头跳&#xff0c;也不能超过一圈&#xff0c;给定一个代…

客户线索商机怎么管?客户线索商机管理工具哪个好?

做销售、搞运营的朋友肯定都有过这种烦恼&#xff1a;每天收到海量客户线索&#xff0c;却不知道从哪条开始跟进&#xff1b;试了好几个管理工具&#xff0c;要么功能太复杂&#xff0c;要么用起来不趁手。其实选对客户线索商机管理工具&#xff0c;就像找到靠谱的 “销售小助手…

008房屋租赁系统技术揭秘:构建智能租赁服务生态

房屋租赁系统技术揭秘&#xff1a;构建智能租赁服务生态 在房地产租赁市场日益活跃的当下&#xff0c;房屋租赁系统成为连接房东与租客的重要数字化桥梁。该系统集成用户管理、房屋信息等多个核心模块&#xff0c;面向管理员、房东和用户三类角色&#xff0c;通过前台展示与后…

SpringBoot 系列之集成 RabbitMQ 实现高效流量控制

系列博客专栏&#xff1a; JVM系列博客专栏SpringBoot系列博客 Spring Boot 2.2.1 集成 RabbitMQ 实现高效流量控制 在分布式系统中&#xff0c;消息队列是实现异步通信、解耦服务的重要组件。RabbitMQ 作为一款成熟的开源消息队列&#xff0c;广泛应用于各类项目中。本文将…

新视讯影视官网入口,影视动漫在线播放网站

新视讯影视是一个免费为广大追剧迷提供在线播放服务的影视平台&#xff0c;深受众多影视爱好者的喜爱。它涵盖了大量免费的VIP电视剧资源、最新上映的大片、好看的综艺节目以及动漫视频&#xff0c;是一个播放速度快、资源多的免费影视网站。用户无需注册或登录&#xff0c;即可…

【使用】【经验】docker 清理未使用的镜像的命令

docker images prune在 Docker 中清理未使用的镜像&#xff08;包括悬空镜像和完全未被引用的镜像&#xff09;&#xff0c;可以使用以下命令&#xff1a; 1. ​删除所有悬空镜像​&#xff08;推荐常用&#xff09; docker image prune​悬空镜像 (dangling images)​​ 是指…

OpenCV CUDA模块图像处理------图像融合函数blendLinear()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数执行 线性融合&#xff08;加权平均&#xff09; 两个图像 img1 和 img2&#xff0c;使用对应的权重图 weights1 和 weights2。 融合公式…

【Typst】6.布局函数

概述 上节我们介绍了文档结构元素的函数&#xff0c;本节介绍一些控制布局使用的函数&#xff0c;掌握他们之后你可以更进一步的控制页面元素的布局。 系列目录 1.Typst概述2.Typst标记语法和基础样式3.Typst脚本语法4.导入、包含和读取5.文档结构元素与函数6.布局函数 对齐…