微服务八股(自用)

news2025/5/18 16:07:54

微服务

SpringCloud

注册中心:Eureka

负载均衡:Ribbon

远程调用:Feign

服务熔断:Hystrix

网关:Gateway/Zuul

Alibaba

配置中心:Nacos

负载均衡:Ribbon

服务调用:Feign

服务保护:sentinel

服务网关:Gateway

注册中心:服务注册和发现

1.注册服务(心跳续约,每30s一次)

2.拉取服务,服务提供者信息

3.负载均衡选择服务提供者

4.远程调用

Nacos

yml设置非临时实例

临时实例采用心跳监测

非临时实例nacos主动询问,主动向服务消费者推送变更消息

Nacos和Eureka

同:服务注册,服务拉取,心跳方式健康监测

异:

  1. nacos支持服务端主动监测提供者状态

    1. 临时实例:心跳模式

    2. 非临时实例:主动检测模式

  2. 临时实例不正常会被剔除,非临时实例不会剔除

  3. nacos服务变更推送

  4. nacos集群默认采用ap方式,当存在非临时实例采用cp方式

    eureka采用ap方式

nacos支持配置中心

负载均衡

发起远程调用feign使用Ribbon

feign发送请求给Ribbon,Ribbon拉取服务列表

注册中心向Ribbon返回服务列表,决定访问哪一个服务器

负载均衡策略有哪些

1.轮询

2.权重,响应时间长,权重小

3.随机

4.区域敏感策略

区域可用的服务器为基础进行服务器选择,再对区域内的服务器进行轮询(默认)

如何设置负载均衡策略

创建类实现iRule接口,

通过配置类(全局)或者配置文件配置(局部,某一个服务调用)

服务雪崩

一个服务失败,导致整条链路的服务都失败

服务降级

保护下游服务

防止请求突增不可用,确保服务不崩溃

如果降级太多,会触发熔断机制

在OpenFeign的接口上增加一个自定义的fallback回调函数(继承之后重写里面的方法)

服务熔断

Hystrix熔断机制,监控微服务调用情况,默认关闭(引导类添加注解打开)

请求失败率超过一定阈值,触发熔断(快速失败),一定时间内重新尝试请求,

不能响应,继续走熔断机制,微服务可达,关闭熔断,恢复正常请求

微服务监控方式

Springboot-admin

prometheus+Grafana

zipkin 链路追踪工具

skywalking 链路追踪工具

skywalking 程序性能监控工具,链路追踪能力

可以监控:

服务(微服务)

端点(接口)

实例(物理机)

告警服务:发短信发邮件

限流

并发大

用户恶意刷接口

实现方式:

1.Tomcat:可以设置最大的连接数 在xml文件设置

2.Nginx:漏桶算法

3.网关:令牌桶算法

4.自定义拦截器

Nginx限流(漏桶算法)

水滴代表请求的流量

漏桶存储请求

多余请求等待或抛弃

漏桶以固定速率漏出请求

控制并发连接数

网关限流(令牌桶算法)

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

限流对象、平均速率、令牌桶总容量

固定速度生成令牌,存入令牌桶,桶满后暂停生成

请求需要到令牌桶申请令牌

申请到令牌的请求才会被服务处理

没有令牌的请求,会被阻塞或被丢弃

CAP

C一致性(任意节点数据必须一致)

A可用性(不能超时或拒绝)

P分区容错性

分区:因为网络故障导致部分节点与其他节点失联,独立分区

容错:集群出现分区,也要对外提供服务

分区P必然存在(需要网络连接)

AP最终一致性

CP强一致性

BASE是对CAP的一种解决思路

基本可用:允许损失部分可用性,保证核心可用

软状态:允许出现中间状态,临时不一致状态

最终一致性

分布式事务解决方式

seata(XA、AT、TCC)

MQ

seata架构

TC事务协调者:协调全局事务提交或回滚

TM事务管理器:定义全局事务范围,开始、提交、回滚全局事务

RM资源管理器:向TC注册报告分支事务状态,驱动分支事务提交、回滚

XA模式

TM向TC开启全局事务

TM向RM调用分支

RM向TC注册分支事务

RM内部执行业务sql

RM向TC报告事务状态

TM向TC提交、回滚全局事务

TC检查分支事务的状态

TC向RM提交、回滚

AT模式

TM向TC开启全局事务

调用分支

RM向TC注册分支事务

执行业务sql并提交

记录更新前后快照 undo.log

RM向TC报告事务状态

TM向TC提交、回滚全局事务

TC检查事务分支状态

TC通知RM提交/回滚事务

RM删除log/恢复log数据

TCC模式

TM向TC开启全局事务

TM调用分支

RM注册分支事务

RM内进行资源预留(Try)

RM向TC报告事务的状态

TM向TC提交、回滚全局事务

TC检查分支事务状态

TC通知RM提交(完成资源操作业务,try成功Confirm一定成功)

/回滚(预留资源释放,try的反向操作)

MQ模式实现分布式事务 异步 性能最好

分布式服务的接口幂等性

多次调用方法或者接口不会改变业务状态

重复调用的结果与单次调用的结果一致

网络波动用户重复点击、MQ消息重复、使用失败或超时重试机制

RESTful API

GET DELETE 幂等

POST PUT 不是幂等的

新增 数据库唯一索引

token+redis 新增修改

分布式锁 新增修改

token+redis

创建商品、提交订单、转账、支付

第一次请求

客户端获取token

生成唯一token将token存入redis中

返回token

第二次请求

带token请求业务接口

验证token是否存在

存在则处理业务(删除token)

不存在返回

返回请求结果

分布式锁(redisson)

抢不到锁的线程快速失败

控制锁的粒度

xxl-job

解决集群任务的重复执行

cron表达式定义灵活

定时任务失败了,重试和统计

任务量大,分片执行

路由策略

轮询

故障转移:按照顺序依次进行心跳检测,

选择第一个心跳检测成功的机器

分片广播:广播触发对应集群中所有机器执行一次任务

同时系统自动传递分片参数

大数据量的任务同时需要执行

集群部署时,任务路由策略选择分片广播

通过对任务项进行取模就知道这个任务项属于哪个分片

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

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

相关文章

Fidder基本操作

1.抓取https请求 Fidder默认不能抓取https请求,我们必须通过相应的设置才能抓取https请求 1.选择tools下的option 2.选择https选项,并且勾选下面的选项 3.点击Actions导出信任证书到桌面(expert root certificate to desktop) 4.在浏览器中添加对应的证…

项目管理进阶:精读 78页华为项目管理高级培训教材【附全文阅读】

本文概述了华为项目管理(高级)课程的学习目标及学习方法。学习该课程后,学员应能: 1. **深刻理解项目管理**:掌握项目管理的基本概念与方法,构建项目管理思维框架。 2. **应用IBEST理念**:结合I…

[Java] 方法和数组

目录 1. 方法 1.2 什么是方法 1.2 方法的定义 1.3 方法的调用 1.4 方法的重载 1.5 递归 2. 一维数组 2.1 什么是数组 2.2 数组的创建 2.3 数组的初始化 2.4 遍历数组 2.5 引用数据类型 2.6 关于null 2.7 数组转字符串 2.8 数组元素的查找 2.9 数组的排序 2.10…

微软家各种copilot的AI产品:Github copilot、Microsoft copilot

背景 大家可能听到很多copilot,比如 Github Copilot,Microsoft Copilot、Microsoft 365 Copilot,有什么区别 Github Copilot:有网页版、有插件(idea、vscode等的插件),都是面向于程序员的。Mi…

回溯法理论基础 LeetCode 77. 组合 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合

目录 回溯法理论基础 回溯法 回溯法的效率 用回溯法解决的问题 如何理解回溯法 回溯法模板 LeetCode 77. 组合 回溯算法的剪枝操作 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合 回溯法理论基础 回溯法 回溯法也可以叫做回溯搜索法,它是一…

【进程控制二】进程替换和bash解释器

【进程控制二】进程替换 1.exec系列接口2.execl系列2.1execl接口2.2execlp接口2.3execle 3.execv系列3.1execv3.2总结 4.实现一个bash解释器4.1内建命令 通过fork创建的子进程,会继承父进程的代码和数据,因此本质上还是在执行父进程的代码 进程替换可以将…

JavaScript 的编译与执行原理

文章目录 前言🧠 一、JavaScript 编译与执行过程1. 编译阶段(发生在代码执行前)✅ 1.1 词法分析(Lexical Analysis)✅ 1.2 语法分析(Parsing)✅ 1.3 语义分析与生成执行上下文 🧰 二…

NHANES指标推荐:FMI

文章题目:Exploring the relationship between fat mass index and metabolic syndrome among cancer patients in the U.S: An NHANES analysis DOI:10.1038/s41598-025-90792-9 中文标题:探索美国癌症患者脂肪量指数与代谢综合征之间的关系…

【JDBC】JDBC常见错误处理方法及驱动的加载

MySQL8中数据库连接的四个参数有两个发生了变化 String driver "com.mysql.cj.jdbc.Driver"; String url "jdbc:mysql://127.0.0.1:3306/mydb?useSSLfalse&useUnicodetrue&characterEncodingutf8&serverTimezoneAsia/Shanghai"; 或者Strin…

车载以太网驱动智能化:域控架构设计与开发实践

title: 车载以太网驱动专用车智能化:域控架构设计与开发实践 date: 2023-12-01 categories: 新能源汽车 tags: [车载以太网, 电子电气架构, 域控架构, 专用车智能化, SOME/IP, AUTOSAR] 引言:专用车智能化转型的挑战与机遇 专用车作为城市建设与工业运输…

如何利用技术手段提升小学数学练习效率

在日常辅导孩子数学作业的过程中,我发现了一款比较实用的练习题生成工具。这个工具的安装包仅1.8MB大小,但基本能满足小学阶段的数学练习需求。 主要功能特点: 参数化出题 可自由设置数字范围(如10以内、100以内) 支…

BGP路由策略 基础实验

要求: 1.使用Preva1策略,确保R4通过R2到达192.168.10.0/24 2.用AS_Path策略,确保R4通过R3到达192.168.11.0/24 3.配置MED策略,确保R4通过R3到达192.168.12.0/24 4.使用Local Preference策略,确保R1通过R2到达192.168.1.0/24 …

第9讲、深入理解Scaled Dot-Product Attention

Scaled Dot-Product Attention是Transformer架构的核心组件,也是现代深度学习中最重要的注意力机制之一。本文将从原理、实现和应用三个方面深入剖析这一机制。 1. 基本原理 Scaled Dot-Product Attention的本质是一种加权求和机制,通过计算查询(Query…

双向长短期记忆网络-BiLSTM

5月14日复盘 二、BiLSTM 1. 概述 双向长短期记忆网络(Bi-directional Long Short-Term Memory,BiLSTM)是一种扩展自长短期记忆网络(LSTM)的结构,旨在解决传统 LSTM 模型只能考虑到过去信息的问题。BiLST…

MySQL UPDATE 执行流程全解析

引言 当你在 MySQL 中执行一条 UPDATE 语句时,背后隐藏着一套精密的协作机制。从解析器到存储引擎,从锁管理到 WAL 日志,每个环节都直接影响数据一致性和性能。 本文将通过 Mermaid 流程图 和 时序图,完整还原 UPDATE 语句的执行…

亚马逊云科技:开启数字化转型的无限可能

在数字技术蓬勃发展的今天,云计算早已突破单纯技术工具的范畴,成为驱动企业创新、引领行业变革的核心力量。亚马逊云科技凭借前瞻性的战略布局与持续的技术深耕,在全球云计算领域树立起行业标杆,为企业和个人用户提供全方位、高品…

【实测有效】Edge浏览器打开部分pdf文件显示空白

问题现象 Edge浏览器打开部分pdf文件显示空白或显示异常。 ​​​​​​​ ​​​​​​​ ​​​​​​​ 问题原因 部分pdf文件与edge浏览器存在兼容性问题,打开显示异常。 解决办法 法1:修改edge配置 打开edge浏览器&#x…

RJ连接器的未来:它还会是网络连接的主流标准吗?

RJ连接器作为以太网接口的代表,自20世纪以来在计算机网络、通信设备、安防系统等领域中占据了核心地位。以RJ45为代表的RJ连接器,凭借其结构稳定、信号传输可靠、成本低廉等优势,在有线网络布线领域被广泛采用。然而,在无线网络不…

Redis持久化机制详解:保障数据安全的关键策略

在现代应用开发中,Redis作为高性能的内存数据库被广泛使用。然而,内存的易失性特性使得持久化成为Redis设计中的关键环节。本文将全面剖析Redis的持久化机制,包括RDB、AOF以及混合持久化模式,帮助开发者根据业务需求选择最适合的持…

DeepSeek 大模型部署全指南:常见问题、优化策略与实战解决方案

DeepSeek 作为当前最热门的开源大模型之一,其强大的语义理解和生成能力吸引了大量开发者和企业关注。然而在实际部署过程中,无论是本地运行还是云端服务,用户往往会遇到各种技术挑战。本文将全面剖析 DeepSeek 部署中的常见问题,提…