深入理解分布式系统(七)案例研究
案例研究 7.1 分布式文件系统 GFS (459条消息) 什么是簇:什么是卷_tianwailaibin的博客-CSDN博客 【MIT 6.824】学习笔记 3: GFS - 知乎 (zhihu.com) 7.2 分布式协调服务 Zookeeper 什么是ZooKeeper? - 知乎 (zhihu.com) zookeeper原理详解 - 知乎 (zhihu.com) [Zookeeper纸上谈兵——Zookeeper与CAP原则-CSDN博客](https://blog.csdn.net/qq_38194699/article/details/109016025?ops_request_misc={"request_id"%3A"171939403416800178545807"%2C"scm"%3A"20140713.130102334.pc_all."}&request_id=171939403416800178545807&biz_id=0&utm_medium=...
深入理解分布式系统(三)分布式系统基础
分布式系统基础 3.1 分区 在分布式系统中,分区是指将数据分成若干个部分,分别存储在不同的节点上,以达到提高系统性能和可扩展性的目的。分区是分布式系统中数据管理的基础。 在分区中,通常采用哈希算法对数据进行划分。具体来说,首先根据数据的某个属性进行哈希计算,得到一个哈希值,然后将这个哈希值映射到某个节点上,将对应的数据存储到这个节点上。通过这种方式,相同属性的数据会被分配到同一个节点上,从而提高数据访问的效率。 分区可以带来以下好处: 提高系统的可扩展性:由于数据被分割成多个部分,每个部分可以分别存储在不同的节点上,因此可以更容易地进行横向扩展,增加节点数量来提高系统的处理能力。 提高系统的性能:由于相同属性的数据被分配到同一个节点上,因此可以更快地访问这些数据,从而提高系统的处理效率。 提高系统的容错性:当某个节点发生故障时,只有该节点上的数据会受到影响,而其他节点上的数据仍然可以正常访问,从而提高了系统的容错性。 但是,分区也会带来一些挑战和问题,如数据的一致性和分区策略的选择等。因此,在设计分布式系统时,需要仔细考虑分区策略和数据一致性等问题,以确保系统的正确性和稳定...
深入理解分布式系统(五)分布式事务
分布式事务 5.1 什么是分布式事务 ACID: 原子性(Atomicity):一个事务被视为一个不可分割的最小工作单位,事务中的所有操作要么全部完成,要么全部撤销回滚,不允许出现部分完成的情况。 一致性(Consistency):事务开始前和结束后,数据库必须处于一致的状态,即事务执行后所得的结果必须符合预期的规定的结构和约束条件。 隔离性(Isolation):多个事务相互隔离不受干扰,每个事务只能“看到”其所执行的数据和其他事务已提交的数据,而看不到其他事务未提交的数据。 持久性(Durability):一个事务提交后,它对数据库的改变必须被永久保存到数据库中,即使出现断电等故障,其对数据库的改变也不能丢失。 分布式事务两种变体: 同一份数据需要在多个副本上更新,一个分布式事务需要更新所有的副本,如果有的节点提交了事务,有的节点回滚了事务,那么这样的结果对于用户来说是无法接受的。(可利用单主复制解决) 数据进行了分区,事务跨越多个节点,还要同时保证整体数据一致和事务的ACID属性。(常见且重点) 分布式事务通常不讨论ACID中的一致性。 想要实现持久性,只需在向客户...
深入理解分布式系统(六)时间和事件顺序
时间和事件顺序 6.1 物理时钟 机械时钟 石英时钟 原子钟:原子共振频率标准来计算 GPS 6.2 时钟同步 NTP:(430条消息) NTP详解(网络时间协议)_127.127.1.0 ntp含义_思福迪小白的博客-CSDN博客 针对NTP同步导致时间回退甚至是负数的情况–单调时钟,保证返回的时间严格单调增长 Cloudflare没用单调时钟,而是在发现时间差为负数或者0时变为一个默认值(golang没暴露单调时钟) 单调时钟的局限性:以自身所在的计算机的某个时间为起点,也就是说,来自同一个节点的单调时钟才有意义。 如何发明分布式系统中的单调时钟? 6.3 逻辑时钟 Lamport Clock Happens-Before: if a->b if a and b are in the same process, and a is before b, then a->b if a is the event that sends a message , b is the event that receives the message, then a->...
深入理解分布式系统(四)分布式共识
分布式共识 4.1 分布式共识简介 分布式共识(Distributed Consensus)是指在分布式系统中,多个节点(或进程)协同完成某个任务或达成某个决策的过程。在这个过程中,每个节点需要就该任务或决策达成一致,并且能够互相通信、协调、协作。 分布式共识的一个重要应用是在区块链技术中,用于解决双花问题(Double-spending problem)和确定哪些交易会被写入区块链。比特币等加密货币就是通过共识算法来实现去中心化的交易记录。 常见的分布式共识算法包括拜占庭将军问题(Byzantine fault tolerance, BFT)、Raft、Paxos、Proof of Work(PoW)、Proof of Stake(PoS)等。这些算法都有各自的优缺点,适用于不同的场景。例如,PoW 算法被应用在比特币等加密货币中,而 PoS 算法则被用在以太坊等区块链平台中。 4.1.1 什么是分布式共识 分布式共识是指在一个分布式系统中,多个节点之间需要就某些决策达成一致意见的过程。在这个过程中,各个节点通过相互通信和协作来达成共识,以保证系统能够正常运作并避免出现错误或冲...
P4&SRV6
B-EP2 背景:互联网变得臃肿,网络管理员迫切需要一种快速高效的网络遥测方案,能够利用采集到的实时准确的网络状态信息来快速检测和定位常见网络故障,然后需要一个有效的网络控制和管理(NC&M)方案,以实现只能及时决策以在网络路径上梳理和路由流量,以同时实现高效的利用和高质量的服务(QoS)。 采集网络信息,定位故障 有效的网络控制和管理方案 (465条消息) P4学习笔记(一)初识P4_p4接口是干嘛的_程序员学编程的博客-CSDN博客 基于P4的主动遥测 探针代替数据分组进行遥测,降低了遥测开销(因为数组分组比如INT即带内网络遥测(460条消息) 带内网络遥测INT–In-band Network Telemetry_袁冬至的博客-CSDN博客 https://www.sdnlab.com/23822.html (465条消息) Telemetry 技术概述_LeocenaY的博客-CSDN博客 ,在转发数据分组时能够在数据在网络结构流动的过程中,通过在路径中间节点插入元数据,监控系统可以通过这些元数据进行收集网络状态,但这样载荷比就大),INT之类的带...
保研复习准备
保研 (453条消息) 2021年计算机保研面试题_一个主机将两个端口接到网络上是否会提升吞吐量_Challow的博客-CSDN博客 (453条消息) 吐血整理,20个计算机保研常见问题及回答模板_计算机专业20个面试常见问题_Baoyan_cs的博客-CSDN博客 [(453条消息) 2021计算机保研经历(清软, 北深, 浙大, 南大, 中科大, 北航, 哈深, 南开, 华科, 武大, 中大)_inicho的博客-CSDN博客](https://blog.csdn.net/qq_43280818/article/details/123450451?ops_request_misc=&request_id=&biz_id=102&utm_term=计算机网络 保研&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-9-123450451.142^v87^insert_down28,239^v2^insert_chatgpt&spm=...
Java刷题
Java 2024年 Java 面试八股文(20w字)_java八股文2023-CSDN博客 SQL SQL 50 题(MySQL 版,包括建库建表、插入数据等完整过程,适合复习 SQL 知识点)_sql50题-CSDN博客 SQL常见语句及用法_sql语句大全及用法-CSDN博客 SQL中的 聚合函数 ,where ,having_where后面可以跟聚合函数吗-CSDN博客 Spring 面试被问了几百遍的 IOC 和 AOP ,一篇文章带你搞清楚!!!_ioc和aop的原理面试-CSDN博客 Sentinel sentinel (史上最全)-CSDN博客 Gradle&Maven gradle中的build script详解_gradle buildscript-CSDN博客 [Gradle和Maven的区别-CSDN博客](https://blog.csdn.net/weixin_45626288/article/details/131973787?ops_request_misc={"request_id"%3A"172024305...
保研经验贴
保研经验贴 背景 今天被两三个25届的同学问到保研的事 尘封许久的记忆再次打开 再次汇总了之前收到的所有信息和仅存的记忆 给一点模板上的参考 注:是疫情解封后第一次线下 故之前很多经验贴没有参考性 bg: 985本SE rank: 3/181 3.99/4.00 论文: 无 竞赛: 双国三 双省一 一省三 n校奖 奖学金: 两年国奖 方向: 分布式系统/存储 偏架构和系统设计方向 实习: 某自驾公司地图存储系统/字节抖音电商开发岗 由于夏令营已经上岸 故没有参加后续预推免 入营: 夏令营: ①北大计算机 直博(放弃且意愿不强 真不想读博) ②北大软微 硕士(计算机学院组➕老师 最终去向) ③中国科学院计算所 硕士 ④上海交通大学电院 硕士 ⑤南京大学计算机学院 硕士 ⑥北京航空航天大学计算机学院 硕士(放弃) ⑦中国人民大学信院 硕士 ⑧西安交通大学计算机学院 硕士 被拒: ①复旦大学计算机学院(只要第一我也没办法) 参加: 由于在实习真抽不开时间去其他地方参营 ①北大软微 ②北航计算机 ③南大计算机(参加了部分 获得软件所的通过了但后面不是很想去参加了…跟北大有冲突也是个重要原...
关于动态规划/性价比/背包问题的思考
关于动态规划/性价比/背包问题的思考 01背包本质上就可以用空间换时间,动规本质上也是那空间换时间,本身也就是一个贪心算法,所以 01背包<–>贪心<–>动态规划 如果说是0-1背包问题,需要逆序更新,原因是东西只有一个,不能影响之前的部分 如果是东西有无数个,则直接顺序更新 如果东西是牛奶之类的,有性价比,并且可以买非整数数量的,可以退化为贪心来做,结构体:数量,价格,性价比,sort一下就完事儿了。 讲究序列(排列问题),先遍历背包,不要求序列(组合问题),先遍历物品 滚动数组 另外,0-1背包要求倒序,若要求组合而非排列,即为先物品,再背包,且倒顺序,滚动数组添加 而且,如果是算有多少种,直接加就行,dp[0]=1,其他为0 123dp[j]+=dp[j-nums[i]] //这里怎么去理解呢,会导致重复吗? //不会重复 如果是要算最多/最少,还要min和max比较 1dp[j]=max(dp[j],dp[j-nums[i]]+value[i]) [(425条消息) 背包问题(背包九讲)_你好世界wxx的博客-CSDN博客](https...