
分布式系统
文章平均质量分 65
MIT 6.824
Szcollar
这个作者很懒,什么都没留下…
展开
-
p6
p6Majority voting scheme为了不出现网络分裂,服务器的数量得是奇数个2f+1台服务器可以忍受f次故障在两次大多数选举中,必然有至少一台服务器两次都为Leader投出了选票,也就总会有重叠的服务器。因此,两次leader都可以知道上一个leader的term号raftclient发送的请求会被leader的raft接收而不是第一时间提交给机器执行,raft会将指令传给replication的raft,只有日志中的操作被大多数机器的raft写入日志时,leader(以及其他re原创 2021-05-17 21:11:53 · 182 阅读 · 0 评论 -
P5
P5go threads闭包:一个作用域内定义的匿名函数,可以使用作用域的变量,但外部变量修改后,可能会导致闭包捕获了不是期望中的变量值,例如循环的 i 就不能随意捕获在lock 和 unlock之间,只能由一个线程对上面的变量执行任务。一但main退出,其中的所有线程也会退出如果有一些变量想跨线程读写,最好就要有一把锁。defer可以将锁移到最后函数最后一行执行condition variable(条件变量)在一个线程中如果用一个无限循环,来检查某个flag型的变量,等待变量改变后做出相应原创 2021-05-15 17:36:16 · 233 阅读 · 0 评论 -
P4
P4Replication可以解决fail-stop faults,纯粹的硬件故障或者网络问题导致的偶尔发生的挂机错误不能解决软件bug和硬件缺陷导致的计算错误问题以及关联性故障(所有副本的机器由于同样的原因发生同样的故障比如地震)methodsstate transfer primary将自己状态发送给后备,以便在自己出问题时可以由后备机器接管replication state machine: primary 发送给backup来自外部的操作,而不发送自己的状态,操作的代价远小于原创 2021-05-13 23:07:16 · 165 阅读 · 0 评论 -
P3
P31.Big StorageWHY HARDfor performance -> sharding(分片给大量服务器并行读取) -> faults(服务器太多,总会有迭机,而且对于整个系统而言非常频繁) -> tolerance(容错) -> replication(为数据建立副本) -> consistency(一致性,副本与副本之间可能不一致,数据的值取决于读到哪一个副本 ) -> low performance(额外的网络通信)于是与最初为了高性能矛盾原创 2021-05-12 18:20:25 · 130 阅读 · 0 评论 -
p2
p21.Use threadIO concurrency 提高程序的并发度,每个线程可以有自己的活动,可以处理各种请求parallelism 多核并行,提高CPU利用率convenience 有些其他任务可以分给其他线程,比如周期性检查worker是否活动线程越多,服务器开销负载越大事件驱动可以获得一定的IO concurrency,但是没有parallelism,而且要代码工作量巨大一个线程创建了一个对象在内存中,其他线程也可以调用。时间片切换时,大部分语言中进程内部的线程都在进程内继续原创 2021-05-10 21:12:20 · 120 阅读 · 0 评论 -
p1
p11.为什么实现分布式系统高并行性(性能)高容错例如银行转账天然的分布式需求安全性(将计算分开,不被信任的部分在别的地方运行)隔离性2.challenges部分故障performance(随着机器数量的提升,性能并不能简单地线性拓展)3.application(infrastructure)storagecomputecommunication4.容错Availability 可用性,当系统出现某个程度故障时,仍然通过某些方式(例如副本)来提供正确的服务,对用户而原创 2021-05-09 17:08:02 · 96 阅读 · 0 评论