JAVA面试专题-微服务篇

Spring cloud

Spring Cloud 5大组件有哪些

注册中心/配置中心:nacos
负载均衡:Ribbon
服务远程调用:Feign
服务保护:sentinel
服务网关:Gateway

微服务注册和发现

 nacos和eureka的区别

 负载均衡

        微服务向Ribbon发送请求,Ribbon从注册中心中拉取相应的微服务,返回微服务列表,最后选择一个微服务进行调用。

Ribbon负载均衡策略

 自定义负载均衡策略

自己创建类实现IRule接口,再通过配置类(全局生效)或者配置文件(局部生效)即可

服务雪崩

服务雪崩:一个服务失败,导致整条链路的服务都失败的情形。

服务降级:服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃,一般在实际开发中与feign接口整合,编写降级逻辑。

服务熔断:默认关闭,需要手动打开,如果检测到十秒内请求失败率超过百分之五十 ,就触发熔断机制,之后每个五秒重新尝试请求微服务,如果不能响应继续走熔断机制,如果微服务可达,则关闭熔断机制,恢复正常请求。

服务监控

采用skywalking进行监控:

1. skywalking主要可以监控接口、服务、物理实例的一些状态,特别是压测的时候可以看到众多服务中哪些服务的接口比较慢,可以针对性的分析和优化。

2. 在skywalking设置告警规则,当项目上线以后,设置给负责人发短信和邮件,第一时间知道bug修复。

业务相关

限流

限流的实现方式:

Tomcat:可以设置最大连接数
Nginx:漏桶算法


网关:令牌桶算法
自定义拦截器

CAP 和 BASE

CAP定理

Consistency:一致性        Availability:可用性        Partition tolerance:分区容错性

这三个指标无法同时满足,就叫做cap定理

BASE理论

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

解决分布式事务的思想和模型:

1. 最终一致思想:各分支事务分别执行并提交,如果有不一致的情况,再想办法恢复数据(AP)
2. 强一致思想:各分支事务执行完业务不要提交,等待彼此结果,而后统一提交或回滚(CP)

分布式事务解决方案

Seata架构

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

 XA模式:

         TM开启全局事务,调用分支RM,注册分支事务到TC,之后RM执行sql业务但是不提交,向TC报告事务状态。TC检测各分支事务执行状态,如果都成功,则提交,如果有失败则回滚,最后提交事务。

AT模式:

 TM开启全局事务,调用分支RM,向TC注册事务分支,RM执行sql并提交,同时记录更新前后快照undo log,向TC报告实物状态,TM申请提交或者回滚全局事务,TC检查事务分支状态,如果都成功则提交,同时删除undo log,如果有失败,则回顾log数据回滚。

TCC模式:

Try:资源的检测和预留        Confirm:完成资源操作业务        Cancel:预留资源释放

在注册分支事务以后,进行一次资源预留try,报告事务状态,在TC决定提交还是回滚时,如果提价,则confirm,如果回滚则cancel

MQ分布式事务

 

分布式服务接口幂等性

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

如果是新增数据,可以使用数据库唯一索引
如果是新增或者修改数据
        分布式锁,性能较低
        使用token+redis实现,性能较好:第一次请求,生成一个唯一token存入redis返回给前端,第二次请求,携带之前的token,到redis进行验证,如果存在执行业务,删除token,如果不存在,直接返回不处理业务

分布式任务调度

xxl-job路由策略:

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

执行器集群部署时,任务路由策略选择分片广播,一次任务调度将会广播出发对应急群众所有执行器执行一次任务。

RabbitMQ

RabbitMQ如何保证数据不丢失

 三种情况数据丢失:消息未达到交换机或则消息未到达队列、队列中消息丢失、消费者未接收到消息。

生产者确认机制publisher confirm

消息发送到MQ后,会返回一个结果给发送者,表示消息是否成功。

如果传到给了消费者,就返回ack publish-confirm
如果没有传到MQ中,则返回ack publish-return
如果没传到交换机,则返回 nack publish-confirm

消息失败以后,可以回调方法即使重发,记录日志,或者保存到数据库然后定时重发,成功发送后删除表中数据。

消息持久化

 消费者确认

消息重复消费问题 

解决方案:每条消息设置一个唯一的标识Id

死信交换机

解决延迟队列=死信交换机+TTL(生存时间)

惰性队列

接收消息后存入磁盘而非内存,消费者要消费消息时才会从磁盘中读取并加载到内存,支持数百万条的消息存储。加入lazy()

RabbitMQ高可用

普通集群

会在集群的各个节点共享部分数据,但不包含队列中的消息,访问集群某节点时,如果队列不在该节点,会从数据所在节点传递到当前节点并返回,队列所在节点宕机,队列中的消息就会消失。

镜像集群

本质是主从模式,交换机,队列,队列消息会在各个mq的镜像节点之间同步备份,创建队列的节点被称为主节点,备份到其他节点的叫镜像节点。所有操作都是主节点完成,然后同步给镜像节点,主宕机后,镜像节点取而代之。

仲裁队列

主从模式,支持主从数据同步,基于Raft协议,强一致。

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

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

相关文章

[1678]旅游景点信息Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 旅游景点信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql…

Word页脚设置“第X页共X页”的方法【域实现】

Word页脚设置“第X页共X页”的方法【域实现】 在设置Word页码格式的要求中,有时需要设置为“第X页共X页”这种格式,使用Word中的域功能可实现,同时,在某些情况下,可能还需要减去封面的页码,接下来为具体步…

软件标准建设体系规范过程性文档(软件开发,管理,安全,运维等各阶段全文档)

软件标准建设体系规范是确保软件开发过程标准化、高质量和可维护性的关键。它通常包括一系列文档、规范、流程和最佳实践,以确保软件项目的成功实施和交付。以下是一个软件标准建设体系规范的基本框架: 软件全套资料获取方式1:进主页。 获取…

C#描述-计算机视觉OpenCV(3):重映射

C#描述-计算机视觉OpenCV(3):重映射 前言色彩波形图像重映射 前言 C#描述-计算机视觉OpenCV(1):基础操作 C#描述-计算机视觉OpenCV(2):图像处理 在前文中,描…

【跟马少平老师学AI】-【神经网络是怎么实现的】(四)卷积神经网络

一句话归纳: 1)用1个小粒度的模式,逐个与图像的局部区域进行运算,运算结果反映模式与区域的匹配程度。 2)卷积神经网络与全连接神经网络的区别: 卷积神经网络的输出只与局部输入有连接。参数较少&#xff0…

如何将手机投屏到mac电脑

1、将iphone手机和mac电脑连接到同一个网络 2、点击电脑上的QuickTime Player 3、点击之后,这个QuickTime Player的进程就开启了 4、鼠标点到这个上面,然后右击,选择新建影片录制 5、点击这个按钮后,来到这个界面,点击…

汉王科技亮相世界数字健康论坛:以AI定义第四代血压计

作为科技行业的年度盛会,2024年中关村论坛年会于近日在北京揭幕。 作为中关村知名的人工智能企业,汉王科技携大模型的最新垂直应用、柯氏音法电子血压计等创新成果,在4月29日中关村论坛平行论坛“2024世界数字健康论坛”上亮相。 在《AI赋能血…

jupyter notebook使用与本地位置设置

本地安装好Anaconda之后,自带的有Jupter notebook。 使用jupyter notebook 使用jupyter notebook时,可以直接打开或者搜索打开: 打开后,我们生成的或者编辑的一些文件,都可以看到,如下: j…

UDP_INTRODUCTION_03:介绍 - 挂起的监听调用

测试目的: 验证当数据报到达一个没有挂起监听(LISTEN)调用的UDP端口时,UDP是否应该发送ICMP端口不可达(Port Unreachable)消息。 描述: 本测试用例旨在确保当数据报发送到DUT上一个未被监听的…

如何基于nginx组建多个子目录网站

华子目录 实验要求实验步骤 实验要求 组建多个子目录网站www.openlab.com,该网站有2个子目录www.openlab.com/sxhkt和www.openlab.com/zywww.openlab.com/sxhkt使用http读取www.openlab.com/zy使用https读取 实验步骤 准备工作 [rootserver ~]# setenforce 0[ro…

PC通过串口发送指令控制LED+串口中断

如何让单片机接收数据? 首先要打开SCON中的串行接收控制位REN。当REN1时为允许接收状态,可以接收信息。 因此令SCON 0x50; 怎么知道收到数据? 利用RI接收中断请求标志位。当串行接收到第8位结束时由内部硬件自动置为RI1&#…

Python与OpenCV:图像处理与计算机视觉实战指南

前言 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它包含了数百种计算机视觉算法,包括图像处理、视频分析、物体检测、面部识别等。结合Python语言的强大功能,OpenCV可以用于…

【哈希】Leetcode 面试题 01.02. 判定是否互为字符重排

题目讲解 面试题 01.02. 判定是否互为字符重排 算法讲解 直观的想法:我们找到一个字符串的全排列,然后对比当前的排列是否等于另一个字符串。如果两个字符串如果互为排列,所以我们知道两个字符串对应的字符出现的个数相同,那么…

【Linux—进程间通信】共享内存的原理、创建及使用

什么是共享内存 共享内存是一种计算机编程中的技术,它允许多个进程访问同一块内存区域,以此作为进程间通信(IPC, Inter-Process Communication)的一种方式。这种方式相对于管道、套接字等通信手段,具有更高的效率&…

<2024年5月软考高项极限冲刺>《2 考试知识块》

🪸🪸把你所学串起来,欢迎订阅。🪸🪸 每章附独家脑图,原图。 冲刺 冲刺 冲刺 1 看下面的图,让你知道你要学习的全部知识是什么 2 章节解析 我们考试的重点是项目管理知识,但是因…

Python零基础-上【详细】

目录 一、Python简介 1、Python发展史 2、Python理解 3、Python的优缺点 (1)优点 (2)缺点 二、Python开发环境搭建 1、环境搭建 2、尝试写一个基础程序 (1)调整配置 (2)新…

sunshine+n2n+moonlight串流远程控制全教程

远程主机说明(两台电脑不在同一局域网下): 控制台电脑 被控制电脑 所有工具下载地址:https://www.lanzouw.com/b00eepod7e 密码:1234 一、首先NTN组网 使用NTN技术创建虚拟局域网,实现设备之间的P2P连接。 NTN组网…

【IO操作】标准IO和文件IO

一.标准IO和文件IO的区别 (1)一般标准IO指的是C语言的IO操作,文件IO一般指的是Linux系统调用的IO操作。标准O因为是C语言提供的标准库,所以可以在其他操作系统平台编译后可以执行,但是文件IO只能在Linux下使用&#x…

设计编程网站集:真空成型工艺+真空成型机DIY

真空成型工艺 真空成型工艺是一种广泛应用于制造领域的工艺,主要用于制造复杂形状的塑料制品。真空成型工艺具有成本低、生产效率高、制品质量稳定等优点,因此在汽车、电子、医疗器械等行业得到广泛应用(还可以用来制作面具,哈哈哈…

满上! —— 十年之约#22(ROI 48%)

原创 | 刘教链 空头在忍耐了很久之后,趁五一劳动节东方放假发动突袭,把BTC(比特币)打到6万刀以下。这使得我们终于终结了7个月七连涨的趋势,确定4月以收跌结束。 4月开盘70k,最高72.8k,最低59.6…