分布式八股文

什么是分布式系统?

  • 集中式系统,可以理解为将一整个系统的所有功能,包括数据库各种都部署在一起,统一向外提供服务。
  • 分布式就是将集中式系统拆分成多个系统,每一个系统单独对外提供服务,整一个提供一整套服务。
  • 意味着能够采用更多的服务器,CPU、内存、存储资源增加,能够应对更大的并发量。
  • 这里举例商城系统。各个模块部署在不同机器上,通过RPC(远程调用)等方式进行通信。
  • 与集群的区别:集群是相同应用或者相同模块。

CAP原则?

  • 一致性
    • 最终一致性:为了可用性,更加放大了一致性要求
    • 弱一致性:为了可用性,允许不同节点之间数据存在一定程度的不一致
    • 强一致性:任何时间点的读操作都返回上一次写操作的结果
    • 每次读取都能收到最新的写入数据或者错误信息
  • 可用性
    • 每个请求都能收到非错误的响应
  • 分区容错性
    • 尽管节点之间会丢弃或者延迟任意数量的消息,但系统仍然能够正常运行,AB集群中A宕机了也不影响B的运行
  • CAP之父的CAP理论就说了P是基本要求,CA权衡,因为比如写入一个数据的时候,为了保证一致性,写入过程是不可用的。

对应的有哪些模型?

  • 无P:基本没有
  • 无A:容许系统停机或者长时间无响应,Zookeeper,分布式数据库
  • 无C:要高可用,就需要放弃一致性。缓存,退而求其次保证最终一致性。12306买票的时候提示有票,下单就没有了。

BASE理论?

  • 对CAP理论的延申,核心思想即使无法做到强一致性,就采用合适的方式实现最终一致性。
  • Basically Available(基本可用):在分布式系统出现故障的时候,允许损失部分可用性(降级:默认返回、异步执行、延迟处理等方式),保证核心可用。
  • Soft State(软状态):允许不同节点间副本同步的延时,应状态就是要求很多数据副本都是一致的。
  • Eventually Consistent(最终一致性):所有数据副本经过一定事件后,最终能够达到一致的状态。

分布式锁?

  • 预想一下这把锁应该是怎样的?要是一把互斥锁、可重入的锁,最好是阻塞锁(看业务需求),能够获取和释放锁,同时效率要高。
  • MySQL:比如创建一张锁表,作唯一性约束,加锁添加数据,释放锁删除。
    • 缺点:
      • 锁没有失效时间,没有释放,就没办法访问了--启定时任务
      • 只能是非阻塞的--while死循环
      • 不可重入--判断线程信息
      • 数据库挂了,就进不去了--两个库,数据双向同步
      • 开销大
  • Zookeeper:用的少
  • Redis:
    • set resourceName value ex 5 nx 新命令
    • 怎么避免被其他客户端释放了:有finally,没拿到锁,但是finally执行这种,加上一些业务单号,线程ID这种判断。
    • 实现可重入锁:和Reentrantlock差不多,实现Lock,加上个守护线程(主要就是为MAP里的续期,不依赖于具体的线程,负责这台机器上的所有锁),然后定时任务TimeTask过期时间/3去续期,主要是从一个MAP里面获取KV对,有才续期,不够了就Lua续期。<0的时间不续期。unlock就remove了MAP里的KV对。
    • 会不会宕机死锁:Redisson是基于Netty的时间轮,都是在JVM上的,所以重启后续期任务也没有了。
    • 单点故障:RedLock--引入多个节点解决问题,半数选举,但是也有问题网络延迟时钟漂移࿰

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

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

相关文章

[方法] Unity 解决类《原神》角色移动方向问题

第三人称视角类的游戏有很多&#xff0c;比如《原神》、《崩坏:星穹铁道》、《剑星》、《绝地求生》等。这些游戏中&#xff0c;角色的移动方向取决于玩家的输入和相机的方向&#xff0c;例如玩家在键盘上按下D键&#xff0c;则角色会相对于相机方向向右移动&#xff0c;本篇文…

dnf游戏攻略:保姆级游戏攻略!

欢迎来到DNF&#xff0c;一个扣人心弦的2D横版格斗游戏世界&#xff01;无论你是新手还是老玩家&#xff0c;这篇攻略都将为你提供宝贵的游戏技巧和策略&#xff0c;助你在游戏中大展身手&#xff0c;成为一名强大的冒险者。 一、角色选择 在DNF中&#xff0c;角色的选择至关重…

K8S join 证书过期 节点报错:certificate has expired or is not yet valid

问题场景&#xff1a; 我是因为虚拟机&#xff0c;挂起了几天&#xff0c;再打开join节点的时候报错&#xff1a; 证书过期报错 ...其他输出 I0427 15:33:56.626776 93338 token.go:215] [discovery] Failed to request cluster-info, will try again: Get "https://…

量子城域网建设案例分析(一):广西量子通信技术试验平台

对量子城域网的讨论已经有一段时间了&#xff0c;经过近期系列文章的讨论&#xff0c;我们对城域网的整体情况、关键技术以及核心设备等都有了一些基本的认识&#xff0c;今天我计划对广西量子通信技术试验平台构建与应用研究服务采购项目进行讨论&#xff0c;通过对实际案例的…

IoTDB 入门教程⑤——数据模型和基础概念

文章目录 一、前文二、数据模型2.1 关系型数据库MySQL。2.2 时序数据库TDengine2.3 时序数据库InfluxDB2.4 时序数据库IoTDB&#xff08;本专栏的正主&#xff09; 三、基础概念3.1 数据库&#xff08;Database&#xff09;3.2 设备模板&#xff08;元数据模板&#xff09;3.3 …

asp爬虫代码简单示例

要创建一个ASP爬虫&#xff0c;你可以使用ASP内置的对象XMLHTTP或ServerXMLHTTP来发送HTTP请求&#xff0c;获取网页内容&#xff0c;然后使用ASP的内置对象HTMLFILE来解析HTML内容。以下是一个简单的ASP爬虫示例代码&#xff1a; <%初始化变量 Dim http Dim url Dim html …

C语言——小知识和小细节17

一、未能给指针成功赋值 #include <stdio.h> #include <stdlib.h> #include <string.h>void GetMemory(char* p) {p (char*)malloc(20 * sizeof(char)); }void Test() {char* str NULL;GetMemory(str);strcpy(str, "Hello World!");printf(&quo…

IDA pro动态调试so层初级教程

一、开启服务 adb push D:\MyApp\IDA_Pro_7.7\dbgsrv\android_server64 /data/local/tmpadb shell cd /data/local/tmp chmod 777 android_server64 ./android_server64二、IDA附加进程 十万个注意&#xff1a;IDA打开的so文件路径不能有中文 手机打开要调试的app 附加成功

合泰杯(HT32F52352)RTC的应用(计时)--->掉电不丢失VBAT(代码已经实现附带源码)

摘要 在HT32F52352合泰单片机开发中&#xff0c;rtc在网上还是挺少人应用的&#xff0c;找了很久没什么资料&#xff0c;现在我根据手册和官方的代码进行配置理解。 RTC在嵌入式单片机中是一个很重要的应用资源。 记录事件时间戳&#xff1a;RTC可以记录事件发生的精确时间&…

Rust move

一、move有什么用 当你在闭包前加上 move 关键字时&#xff0c;闭包会强制获取其所需变量的所有权。这意味着即使在闭包外部变量的所有权被转移给闭包&#xff0c;闭包之外的代码也不能再使用这些变量 看两段代码 fn main() {let x String::from("value");let cl…

DRF解析器源码分析

DRF解析器源码分析 1 解析器 解析请求者发来的数据&#xff08;JSON&#xff09; 使用 request.data 获取请求体中的数据。 这个 reqeust.data 的数据怎么来的呢&#xff1f;其实在drf内部是由解析器&#xff0c;根据请求者传入的数据格式 请求头来进行处理。 drf默认的解…

计算机408备考-数据结构重要知识点-数据结构的定义

请关注一下B站账号&#xff1a;谭同学很nice&#xff01;后期更新发布在这个账号上。。【计算机408备考-数据结构重要知识点-数据结构的定义-哔哩哔哩】https://b23.tv/x7shjNf 数据是信息的载体。数据元素是数据的基本单位。一个数据元素可由若干数据项组成&#xff0c;数据项…

在离线环境中将 CentOS 7.5 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文将说明如何在离线环境中将 CentOS 7.5 升级并迁移至 RHEL 7.9。为了简化准备过程&#xff0c;本文前面将在在线环境中安装用到的各种所需验证软件&#xff0c;而在后面升级迁移的时候再切换到由 ISO 构成的离线 Yum Repo…

实现优先队列——C++

目录 1.优先队列的类模板 2.仿函数的讲解 3.成员变量 4.构造函数 5。判空&#xff0c;返回size&#xff0c;返回队头 6.插入 7.删除 1.优先队列的类模板 我们先通过模板来进行初步了解 由上图可知&#xff0c;我们的模板里有三个参数&#xff0c;第一个参数自然就是你要存储的数…

使用Android Studio 搭建AOSP FrameWork 源码阅读开发环境

文章目录 概述安装Android Studio编译源码使用Android Studio打开源码制作ipr文件直接编译成功后自动打开Android Studio 修改SystemUI验证开发环境 概述 我们都知道Android的系统源码量非常之大&#xff0c;大致有frameworka层源码&#xff0c;硬件层(HAL)源码&#xff0c;内…

【华为OD机试】数组连续和(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。 输入描述 第一行两个整数N x(0 < N <= 100000, 0 <= x <…

Java高阶私房菜:JVM分代收集算法介绍和各垃圾收集器原理分解

目录 什么是分代收集算法 GC的分类和专业术语 什么是垃圾收集器 垃圾收集器的分类及组合 ​编辑 应关注的核心指标 Serial和ParNew收集器原理 Serial收集器 ParNew收集器 Parallel和CMS收集器原理 Parallel 收集器 CMS收集器 新一代垃圾收集器G1和ZGC G1垃圾收集器…

iframe隐藏scrollbar并且还能够继续滚动

查了好久的文档&#xff0c;太累了&#xff0c;目前暂时使用了直接把scrollbar隐藏的策略。太难了。 直接隐藏的策略&#xff1a; frame 有个属性 scrolling&#xff0c;直接设置 scrolling‘no’ 即可隐藏scrollbar。 <iframe src"xxx" scrolling"no"…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月3日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年5月3日 星期五 农历三月廿五 1、 气象台&#xff1a;我国南方地区3至5日将出现新一轮较强降水&#xff0c;局地有大暴雨。 2、 广东11地市打破4月雨量历史记录&#xff1a;梅州平均雨量为常年3.5倍。 3、 梅大高速路面塌…

Redis学习笔记(基础)

Redis学习笔记&#xff08;基础&#xff09; 一、Nosql概述1.1、为什么使用Nosql1.2、什么是Nosql1.3、阿里巴巴演进分析1.4、NoSQL的四大分类 二、 Redis入门2.1、概述2.2、Windows使用Redis2.3、linux安装2.4、redis-benchmark性能测试2.5、Redis基础知识 三、五大数据类型3.…