- 39
- 1 409 739
Martin Kleppmann
United Kingdom
Приєднався 1 вер 2013
Talks by Martin Kleppmann
Rêverie by Claude Debussy
Plenty of wrong notes, which just make it all the more authentic!
Переглядів: 4 517
Відео
Discussion session on Peritext, a CRDT for rich text
Переглядів 3,8 тис.Рік тому
A discussion session for my Patreon supporters, about the paper "Peritext: A CRDT for Collaborative Rich Text Editing" with Geoffrey Litt, Sarah Lim, and Peter van Hardenberg. Paper: www.inkandswitch.com/peritext/static/cscw-publication.pdf You can join future discussion sessions by supporting me on Patreon: www.patreon.com/martinkl
Automerge: a new foundation for collaboration software
Переглядів 17 тис.2 роки тому
Local-first software is an effort to make collaboration software less dependent on cloud services, and Automerge is an open-source library for realising local-first software. In this talk I explain our motivation for creating Automerge, and map out 7 years worth of research projects that are feeding into this project. Recording of a talk given at the University of Cambridge SRG Seminars on 25 N...
Distributed Systems 6.2: Raft
Переглядів 31 тис.2 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Thinking in Events: From Databases to Distributed Collaboration Software (ACM DEBS 2021)
Переглядів 30 тис.3 роки тому
Keynote by Martin Kleppmann at the 15th ACM International Conference on Distributed and Event-based Systems (ACM DEBS 2021) Paper: dl.acm.org/doi/10.1145/3465480.3467835 Alternative paper link: martin.kleppmann.com/papers/debs21-keynote.pdf Slides: speakerdeck.com/ept/thinking-in-events-from-databases-to-distributed-collaboration-software If you found this useful, please consider becoming a sup...
Maple Leaf Rag (played by beginner)
Переглядів 6 тис.3 роки тому
My lockdown project for the last year has been to learn the piano. Thanks to my partner for teaching me. Here is my attempt at Scott Joplin's Maple Leaf Rag, with plenty of wrong notes - that's how you know it's played by human, not by computer.
Distributed Systems 8.1: Collaboration software
Переглядів 21 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 8.2: Google's Spanner
Переглядів 32 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 7.3: Eventual consistency
Переглядів 26 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 7.2: Linearizability
Переглядів 35 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 7.1: Two-phase commit
Переглядів 61 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 6.2: Raft
Переглядів 14 тис.3 роки тому
NOTE: There are some mistakes in this video. Please watch this one instead, in which the bugs are fixed: ua-cam.com/video/uXEYuDwm7e4/v-deo.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2021/ConcDisSys/dist-sys-notes.pdf Full l...
Distributed Systems 6.1: Consensus
Переглядів 36 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 5.3: State machine replication
Переглядів 28 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 5.2: Quorums
Переглядів 36 тис.3 роки тому
Accompanying lecture notes: www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf Full lecture series: ua-cam.com/play/PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB.html This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge. It is preceded by an 8-lecture course on concurrent systems for which vide...
Distributed Systems 5.1: Replication
Переглядів 43 тис.3 роки тому
Distributed Systems 5.1: Replication
Distributed Systems 4.3: Broadcast algorithms
Переглядів 40 тис.3 роки тому
Distributed Systems 4.3: Broadcast algorithms
Distributed Systems 4.2: Broadcast ordering
Переглядів 48 тис.3 роки тому
Distributed Systems 4.2: Broadcast ordering
Distributed Systems 4.1: Logical time
Переглядів 76 тис.3 роки тому
Distributed Systems 4.1: Logical time
Distributed Systems 3.3: Causality and happens-before
Переглядів 39 тис.3 роки тому
Distributed Systems 3.3: Causality and happens-before
Distributed Systems 3.2: Clock synchronisation
Переглядів 42 тис.3 роки тому
Distributed Systems 3.2: Clock synchronisation
Distributed Systems 3.1: Physical time
Переглядів 38 тис.3 роки тому
Distributed Systems 3.1: Physical time
Distributed Systems 2.4: Fault tolerance
Переглядів 38 тис.3 роки тому
Distributed Systems 2.4: Fault tolerance
Distributed Systems 2.3: System models
Переглядів 47 тис.3 роки тому
Distributed Systems 2.3: System models
Distributed Systems 2.2: The Byzantine generals problem
Переглядів 60 тис.3 роки тому
Distributed Systems 2.2: The Byzantine generals problem
Distributed Systems 2.1: The two generals problem
Переглядів 51 тис.3 роки тому
Distributed Systems 2.1: The two generals problem
Distributed Systems 1.3: RPC (Remote Procedure Call)
Переглядів 97 тис.3 роки тому
Distributed Systems 1.3: RPC (Remote Procedure Call)
Distributed Systems 1.2: Computer networking
Переглядів 62 тис.3 роки тому
Distributed Systems 1.2: Computer networking
Distributed Systems 1.1: Introduction
Переглядів 235 тис.3 роки тому
Distributed Systems 1.1: Introduction
Oh no it isn't!
Hi Martin, thank you for the lecture. One question regarding quorum and linearizability. In your example of non-linearizable quorum, the write was asynchronously replicated, which can technically violate the quorum safety condition, as the write wasn't acknowledgement by a quorum of nodes. What if the quorum is used with synchronous replication, such that the write is not committed before receving such acknowledgement from the quorum. In that case, a read quorum will always find the most recent write. Any thougts?
Answering to myself: I figured out that the operations are happening concurrently, so client 1 is still pending an ack from the quorum.
Bizantine as the name come from bizantin (Greek and east europe).
this aged well
Wow, I didn't know Martin has a YT channel. Instance subscribe.
Great theme tune for distributed systems
Great theme tune for distributed systems
Big thanks
Excellent lectures but ads are really annoying
Thank you
You're not only a great author but also an amazing teacher. Thanks Martin.
u are the GOAT of DS!
Where Can I find first half of the course ?
Woow what a gem I found! Living in this day and age is amazing and gorgeous, thank you so much for uploading!
Thank you very much.
6:25 ua-cam.com/video/_2By2ane2I4/v-deo.html
Glock. Genuinely meant block
Did you glock😢
I am sl confused rn
Something
Haha lol i made a funny
Honestly this is a really bad analogy to describe this problem.
I don't understand why at 09:41 you mentioned idempotencenl only for best-effort algo? All other algorithms have reliable network system model which can only be achieved with retry pattern. And if retry isnin place, then idempotence also should be, no?
Thank you so much for the perfect explanation
so interesting! thank you so much for posting this series : )
Sir, where is part one?
brilliant! thanks a lot for the content Martin!
Awesome video!
I don't understand why I am paying 2000 for a uni course as an international student when I get to learn all this sh🎉 here with much better quality
Great series for distributed systems.
how do we handle obtaining commit timestamp in a raft database without physical clock? just two phase commit?
why on slide 9 the leader need qurom to deliver while on slide 7 the follower can just commit?
because the leader is the only node that could decide which log entry is ready to be committed by checking if more than half of the nodes have already acknowledged this log entry (quorum).
is it possible if a leader commits a change say [1,2] given qurom, then goes down, a follower who has yet to commit the change or even voted yes to the commit becomes the new leader, having the log as [2,1], it now advocate to commit [2,1] while [1,2] has already been committed by some nodes?
what if a node advocating itself as a candidate only has log older than half, or even a handful of nodes, since node only gets to vote once each term, a relatively old node could be elected as the leader as long as it has votes from some older nodes and other candidate unfortunately have fewer votes (prob due to that they initiated themselves as candidate later)
oh nvm when it sends its advocation to a node with newer data, it will be demoted to follower
Vielen Dank! Thanks Martin! Very clear explanation on Lamport and Vector logical clocks, inspired my lectures for CS from your explanation.
bro you rocked it
so, there is no solution for this problem? we can only put checks in place to prevent it in a real life scenario ?
Thank you so much for the series. They really are great and simple to follow. You are the best :))
Thanks for putting these lectures on youtube--education should be accessible to all
thank you, very informative and explantory
If we assume that clocks for user A and B have been synchronized via NTP, how can there be any skew/time difference b/w them?
11:40 you tube
What happens if one of the nodes has sent ok for prepare but while waiting for all the oks it crashes ? The transaction will go forward in all the other nodes.
One potential solution to this problem is to have a recovery mechanism for the node when it comes back up.
One potential solution is to have a recovery mechanism for the node when it comes back up.
super well made, thank you!
If you look at the Bank balance and assets of all those three general and how they earned it then you can learn a lot about those general before you appointed them.
hast du discord?
bestes video was ich gefunden habe. alles andere hat mega genervt.
aber wundert mich auch nicht wegen cambridge prof titel xD
Thank you, Professor Kleppmann, for this wonderful series and for making it publicly available. This is gold for understanding distributed systems concepts! I have one question, though, regarding this lecture. I don't understand how vector clocks solve the original problem presented at the start of this lecture, i.e., resolving the correct order for the messages m1 and m2 received at User C. Since, by definition, logical clocks at a particular process are monotonic in nature, the vector clock for the event representing "m2 received at C" should be greater than the vector clock for the event representing "m1 received at C"; as we take the maximum of each vector-element to merge both the recipient and local vectors, as explained at 15:30. Therefore, I am not exactly sure how computing the vector clock for these two events at C helps to resolve the correct order. One way I can think of resolving the order would be to compare the vector clocks sent as part of the message instead (before merging the recipient and local vectors). But this requires storing the vector clocks for all the events (for message received events, we would need to store the recipient vector clock instead) and then comparing the recipient vector clock (whenever a message arrives) with that of all the earlier events for a particular process or user, and then rearranging the events and possibly reassigning the vector clocks for the rearranged events. I'm not exactly sure about this approach as it may cause some other effects that needs to be handled; I couldn't really find much regarding this elsewhere.
Hope you can make a video to explain three phase commit and how it improves fault tolerance.
7:00: what happens if node B sends a message at the same time as Node A? Seems to me Node B will attach the timestamp 1 to the message because it was at 0 and did not yet receive message A. So now we have a message with a lower timestamp than the highest one so far. The only way this can work I think is when nodes take turn sending messages. Also, what if one of the nodes is malicious and chooses Number.MAX_SAFE_INTEGER as the timestamp? What mechanism is there to prevent unbounded growth?