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

article/2025/6/13 21:54:03

一. 限流

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

 为什么要限流呢?

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

二是防止用户恶意刷接口

 限流的实现方式:

  • 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.hkcw.cn/article/PVCjNLNEMf.shtml

相关文章

AWS App Mesh实战:构建可观测、安全的微服务通信解决方案

摘要:本文详解如何利用AWS App Mesh统一管理微服务间通信,实现精细化流量控制、端到端可观测性与安全通信,提升云原生应用稳定性。 一、什么是AWS App Mesh? AWS App Mesh 是一种服务网格(Service Mesh)解…

《云原生安全攻防》-- K8s网络策略:通过NetworkPolicy实现微隔离

默认情况下,K8s集群的网络是没有任何限制的,所有的Pod之间都可以相互访问。这就意味着,一旦攻击者入侵了某个Pod,就能够访问到集群中任意Pod,存在比较大的安全风险。 在本节课程中,我们将详细介绍如何通过N…

吃透 Golang 基础:数据结构之 Map

文章目录 Map概述初始化删除访问不存在的 key 返回 value 的零值遍历 mapmap 自身的零值map 索引时返回的第二个参数使用 map 实现 set Map Hash Map 是无序的 key/value 对集合,其中所有的 key 都是不同的。通过给定的 key 可以在常数时间复杂度内完成检索、更新或…

手机邮箱APP操作

收发电子邮件方式 邮箱可以在网络段登录,也可以在手机端登录。 大学网络服务 收发电子邮件有三种方式: 1、Web方式: 1)登录“网络服务”(https://its.pku.edu.cn),点页面顶端“邮箱”。 2&…

Spring AI之RAG入门

目录 1. 什么是RAG 2. RAG典型应用场景 3. RAG核心流程 3.1. 检索阶段 3.2. 生成阶段 4. 使用Spring AI实现RAG 4.1. 创建项目 4.2. 配置application.yml 4.3. 安装ElasticSearch和Kibana 4.3.1. 安装并启动ElasticSearch 4.3.2. 验证ElasticSearch是否启动成功 …

Spring AI Alibaba + Nacos 动态 MCP Server 代理方案

作者:刘宏宇,Spring AI Alibaba Contributor 文章概览 Spring AI Alibaba MCP 可基于 Nacos 提供的 MCP server registry 信息,建立一个中间代理层 Java 应用,将 Nacos 中注册的服务信息转换成 MCP 协议的服务器信息&#xff0c…

19-项目部署(Linux)

Linux是一套免费使用和自由传播的操作系统。说到操作系统,大家比较熟知的应该就是Windows和MacOS操作系统,我们今天所学习的Linux也是一款操作系统。 我们作为javaEE开发工程师,将来在企业中开发时会涉及到很多的数据库、中间件等技术&#…

2025.6.3学习日记 Nginx 基本概念 配置 指令 文件

1.初始nginx Nginx(发音为 “engine x”)是一款高性能的开源 Web 服务器软件,同时也具备反向代理、负载均衡、邮件代理等功能。它由俄罗斯工程师 Igor Sysoev 开发,最初用于解决高并发场景下的性能问题,因其轻量级、高…

SpringCloud——Nacos注册中心、OpenFeign

一、Nacos注册中心 1.注册中心原理 2.服务注册 添加依赖&#xff1a; <!--nacos 服务注册发现--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dep…

WAF绕过,网络层面后门分析,Windows/linux/数据库提权实验

一、WAF绕过文件上传漏洞 win7&#xff1a;10.0.0.168 思路&#xff1a;要想要绕过WAF&#xff0c;第一步是要根据上传的内容找出来被拦截的原因。对于文件上传有三个可以考虑的点&#xff1a;文件后缀名&#xff0c;文件内容&#xff0c;文件类型。 第二步是根据找出来的拦截原…

榕壹云健身预约系统:多门店管理的数字化解决方案(ThinkPHP+MySQL+UniApp实现)

随着全民健身热潮的兴起,传统健身房在会员管理、课程预约、多门店运营等方面面临诸多挑战。针对这一需求,我们开发了一款基于ThinkPHP+MySQL+UniApp的榕壹云健身预约系统,为中小型健身机构及连锁品牌提供高效、灵活的数字化管理工具。本文将详细介绍系统的技术架构、核心功能…

nginx去掉暴漏外边的版本号

背景 在做安全扫描的时候&#xff0c;对方说nginx会暴漏版本号属于中危漏洞 解决方法 nginx 在http{括号里增加 server_tokens off; # 关闭版本号显示# add_header Server "Apache/2.4.3"; # 伪造为 Apache 服务器&#xff08;可选&#xff09;效果

飞牛fnNAS存储模式RAID 5数据恢复

目录 一、添加硬盘 二、创建RAID 5 存储空间 三、上传测试文件 四、拆除硬盘 五、更换硬盘 六、修复RAID 5 七、验证其内文件 八、NAS系统崩溃后的数据盘 前文《飞牛fnNAS存储空间模式详解》 中介绍了fnNAS存储空间的几个模式,细心的网友应该能感受到,我是非常推崇R…

OpenEMMA: 打破Waymo闭源,首个开源端到端多模态模型

1. 概述 OpenEMMA&#xff08;Open-source End-to-end Multimodal Model for Autonomous driving&#xff09;是由德州农工大学、密歇根大学和多伦多大学联合推出的开源端到端自动驾驶多模态模型框架&#xff0c;旨在复现并开源 Waymo 旗下 EMMA 系统的核心思路与方法。 该框…

学习STC51单片机26(芯片为STC89C52RCRC)

每日一言 真正的强者&#xff0c;不是没有眼泪&#xff0c;而是含着泪依然奔跑。 硬件&#xff1a;4G模块 这个是接线原理&#xff0c;我们也只要知道这个4根线的连接就好了&#xff0c;我们也是连接到USB转TTL的模块上 要插卡哈......... 随后我们下载一个叫做亿佰特的调试助…

GROM快速上手

&#x1f43e; 个人主页 &#x1f43e; 阿松爱睡觉&#xff0c;横竖醒不来 &#x1f3c5;你可以不屠龙&#xff0c;但不能不磨剑&#x1f5e1; 目录 一、概要二、上手步骤&#xff08;一&#xff09;安装 GORM&#xff08;二&#xff09;连接数据库&#xff08;三&#xff09;定…

MATLAB仿真生成无线通信网络拓扑推理数据集

一、数据集生成程序 %创建时间&#xff1a;2025年6月3日 %用途&#xff1a;生成不同节点样本&#xff0c;统计稀疏性约束情况 %zhouzhichaoclose all clearfor n [20,30,40,50]dataset_n 100;nodes_P ones(n,1);for Sampling_M [3000]%获取一帧信号及对应功率[ack,fs] ac…

【OCCT+ImGUI系列】012-Geom2d_AxisPlacement

Geom2d_AxisPlacement 教学笔记 一、类概述 Geom2d_AxisPlacement 表示二维几何空间中的一个坐标轴&#xff08;轴系&#xff09;&#xff0c;由两部分组成&#xff1a; gp_Pnt2d&#xff1a;原点&#xff08;Location&#xff09;gp_Dir2d&#xff1a;单位方向向量&#xff…

NodeMediaEdge任务管理

NodeMediaEdge任务管理 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 在未使用NodeMediaServer的情况下&#xff0c;或是对部分视频流需要单独推送的需求&#xff0c;也可…

ROS2学习(18)------ROS2 Rviz工具使用说明

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 ROS版本&#xff1a;2 ROS 2 中的 Rviz&#xff08;Robot Visualization&#xff09;是一个强大的三维可视化工具&#xff0c;用于显示来自 ROS 系统的各种传感器数据、路径规划结果、机器人…