分布式八股文

什么是分布式系统?

  • 集中式系统,可以理解为将一整个系统的所有功能,包括数据库各种都部署在一起,统一向外提供服务。
  • 分布式就是将集中式系统拆分成多个系统,每一个系统单独对外提供服务,整一个提供一整套服务。
  • 意味着能够采用更多的服务器,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.mfbz.cn/a/589340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAMEL:大型语言模型社会的“心智”探索沟通代理

英文名称: CAMEL: Communicative Agents for “Mind” Exploration of Large Language Model Society 中文名称: CAMEL&#xff1a;大型语言模型社会的“心智”探索沟通代理 链接: https://arxiv.org/pdf/2303.17760.pdf 代码: https://github.com/camel-ai/camel 4.4K Star 作…

Scala应用 —— JDBC的创建

文章目录 Scala应用 —— JDBC的创建前言一、JDBC的创建过程1.初始化连接1.1 配置驱动1.2 创建连接对象 2. 初始化执行器2.1 创建执行器对象2.2 初始化执行器参数 3. 执行操作并返回结果 二、Scala JDBC的基本设计思路1. 操作步骤设计2. 解决结果差异化3.实现jdbc方法并输出结果…

53.HarmonyOS鸿蒙系统 App(ArkTS) socket套接字连接失败无效参数--invalid argument

ark ts socket套接字连接失败无效参数--invalid argument 绑定本机真实连接的WIFI的IP&#xff0c;不要绑定127.0.0.1

云原生Kubernetes: K8S 1.29版本 部署Harbor

目录 一、实验 1.环境 2.Linux 部署docker compose 3.证书秘钥配置 4.K8S 1.29版本 部署Harbor 5.K8S 1.29版本 使用Harbor 二、问题 1.docker 登录harbor失败 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.2…

Debian操作系统的常用指令介绍

Debian是一个流行的Linux操作系统&#xff0c;以其稳定性和安全性而闻名。对于Debian用户来说&#xff0c;掌握一些基本的命令行指令是非常重要的&#xff0c;因为它们可以帮助你更高效地管理系统。在这篇博客中&#xff0c;我们将介绍一些在Debian系统中常用的指令及其功能。 …

79、贪心-跳跃游戏II

思路&#xff1a; 首先理解题意&#xff1a;从首位置跳最少多少次到达末尾。 第一种&#xff1a;使用递归&#xff0c;将所有跳转路径都获取到进行求出最小值。 第二种&#xff1a;使用动态规划&#xff0c;下一次最优取决上一次的最优解 第三针&#xff1a;贪心&#xff…

区块链 | IPFS 工作原理入门

&#x1f98a;原文&#xff1a;What is the InterPlanetary File System (IPFS), and how does it work? &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。 1 去中心化互联网 尽管万维网是一个全球性的网络&#xff0c;但在数据存储方面&#…

智能消费记账|基于SSM+vue的大学生智能消费记账系统(源码+数据库+文档)

智能消费记账目录 基于SSMvue的大学生智能消费记账系统 一、前言 二、系统设计 三、系统功能设计 1 用户列表 2 预算信息管理 3 预算类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1…

R语言的学习—5—多元数据直观表示

1、数据读取 ## 数据整理 d3.1read.xlsx(adstats.xlsx,d3.1,rowNamesT);d3.1 #读取adstats.xlsx表格d3.1数据 barplot(apply(d3.1,1,mean)) #按行做均值条形图 barplot(apply(d3.1,1,mean),las3) barplot(apply(d3.1,2,mean)) #按列做均值图条形图 barplot(a…

Web,Sip,Rtsp,Rtmp,WebRtc,专业MCU融屏视频混流会议直播方案分析

随着万物互联&#xff0c;视频会议直播互动深入业务各方面&#xff0c;主流SFU并不适合管理&#xff0c;很多业务需要各种监控终端&#xff0c;互动SIP硬件设备&#xff0c;Web在线业务平台能相互融合&#xff0c;互联互通&#xff0c; 视频混流直播&#xff0c;录存直播推广&a…

手撕C语言题典——合并两个有序数组(顺序表)

搭配食用更佳哦~~ 数据结构之顺顺顺——顺序表-CSDN博客 数据结构之顺序表的基本操作-CSDN博客 继续来做一下关于顺序表的经典算法题叭~ 前言 88. 合并两个有序数组 - 力扣&#xff08;LeetCode&#xff09; 合并数组也是力扣上关于顺序表的一道简单题&#xff0c;继续来加深…

字节缓冲流

BufferedInputStream() 该类实现缓冲流输出对象&#xff08;可以向底层输出流写入字节而不必为写入的每一个字节导致底层系统的调用&#xff09; BufferedOutputStream() 创建BufferedOutputStream()将创建一个内部缓冲数组 当从流中读取或跳过字节时&#xff0c;内部缓冲区根…

Kubernetes学习笔记06

第十六章、Kubernetes容器交付介绍 如何在k8s集群中部署Java项目 容器交付流程 开发代码阶段 编写代码编写Dockerfile【打镜像做准备】持续交付/集成 代码编译打包制作镜像上传镜像仓库应用部署 环境准备PodServiceIngress运维 监控故障排查应用升级 k8s部署Java项目流程 …

云服务器+ASF实现全天挂卡挂时长

目录 前言正文1.安装下载2.编辑配置文件3.设置Steam社区证书4.启动ASF5.给游戏挂时长6.进阶-ASF自动启动且后台保活 前言 我遇到的最大的问题是&#xff0c;网络问题 其实不然&#xff0c;各大厂商的云服务器后台都有流量监控&#xff0c;意味着依靠一般方法是不能正常访问St…

高手的黑箱:AI时代学习、思考与创作

课程目录 01 不要错过这个时代的巨大红利&#xff0c;AI时代竞争力养成指南.mp4 02 解密高手的黑箱——那些创作高手不告诉你的事.mp4 03 创作&#xff1a;人生发展中最重要的事.mp4 04 创作中最重要的事&#xff08;1&#xff09;&#xff1a;对过程的掌控力.mp4 05 创作…

更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 再谈端口号 端口号的返回…

springBootAdmin监控

简介 用于对 Spring Boot 应用的管理和监控。可以用来监控服务是否健康、是否在线、以及一些jvm数据等等 Spring Boot Admin 分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client)&#xff0c;服务端和客户端之间采用 http 通讯方式实现数据交互&#xf…

【设计模式】创建者模式之 工厂方法 抽象工厂

工厂方法模式(Factory Method) 一个特定功能&#xff0c;往往有多种实现方式&#xff0c;但是很难有某一个实现可以适用于所有情况&#xff0c;因此往往需要根据特定的场景选择不同的实现。试想&#xff1a;把选择具体实现的代码放在业务中会发生什么&#xff1f;每当我们需要…

【C++】vector类的增删改查模拟实现(图例超详细解析!!!)

目录 一、前言 二、源码引入 三、vector的模拟实现 ✨实现框架 ✨前情提要 ✨Member functions —— 成员函数 ⚡构造函数 ⭐无参构造 ⭐迭代器区间构造 ⭐n个值构造 ⚡拷贝构造 ⚡运算符赋值重载 ⚡析构函数 ✨Element access —— 元素访问 ⚡operator[ ] …

一文全面了解 wxWidgets 布局器(Sizers)

目录 Sizers背后的理念 共同特征 最小大小 边框 对齐方式 伸缩因子 使用 Sizer 隐藏控件 wxBoxSizer wxStaticBoxSizer wxGridSizer wxFlexGridSizer 布局器&#xff08;Sizers&#xff09;&#xff0c;由wxWidgets类层次结构中的wxSizer类及其派生类表示&#xff0…
最新文章