Martin Kleppmann
Martin Kleppmann
  • 39
  • 1 409 739

Відео

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
CRDTs: The Hard Parts
Переглядів 65 тис.4 роки тому
CRDTs: The Hard Parts

КОМЕНТАРІ

  • @humanvegetable
    @humanvegetable 5 годин тому

    Oh no it isn't!

  • @nadaralpenidze9549
    @nadaralpenidze9549 5 днів тому

    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?

    • @nadaralpenidze9549
      @nadaralpenidze9549 5 днів тому

      Answering to myself: I figured out that the operations are happening concurrently, so client 1 is still pending an ack from the quorum.

  • @RaduOleniuc
    @RaduOleniuc 6 днів тому

    Bizantine as the name come from bizantin (Greek and east europe).

  • @mg-nf1jz
    @mg-nf1jz 7 днів тому

    this aged well

  • @andreip9378
    @andreip9378 9 днів тому

    Wow, I didn't know Martin has a YT channel. Instance subscribe.

  • @RamilyaYusupova-y5l
    @RamilyaYusupova-y5l 10 днів тому

    Great theme tune for distributed systems

  • @moreirelsi
    @moreirelsi 10 днів тому

    Great theme tune for distributed systems

  • @zaixrx
    @zaixrx 11 днів тому

    Big thanks

  • @ashwint959
    @ashwint959 14 днів тому

    Excellent lectures but ads are really annoying

  • @PhuongNguyen-do9io
    @PhuongNguyen-do9io 22 дні тому

    Thank you

  • @33galactus
    @33galactus 27 днів тому

    You're not only a great author but also an amazing teacher. Thanks Martin.

  • @joaofurukawa
    @joaofurukawa Місяць тому

    u are the GOAT of DS!

  • @MitaliNeerPatel
    @MitaliNeerPatel Місяць тому

    Where Can I find first half of the course ?

  • @jmbrjmbr2397
    @jmbrjmbr2397 Місяць тому

    Woow what a gem I found! Living in this day and age is amazing and gorgeous, thank you so much for uploading!

  • @Samindika1997
    @Samindika1997 Місяць тому

    Thank you very much.

  • @utsavdahiya3729
    @utsavdahiya3729 Місяць тому

    6:25 ua-cam.com/video/_2By2ane2I4/v-deo.html

  • @donaldcarnegie3018
    @donaldcarnegie3018 Місяць тому

    Glock. Genuinely meant block

  • @donaldcarnegie3018
    @donaldcarnegie3018 Місяць тому

    Did you glock😢

  • @donaldcarnegie3018
    @donaldcarnegie3018 Місяць тому

    I am sl confused rn

  • @donaldcarnegie3018
    @donaldcarnegie3018 Місяць тому

    Something

  • @donaldcarnegie3018
    @donaldcarnegie3018 Місяць тому

    Haha lol i made a funny

  • @donaldcarnegie3018
    @donaldcarnegie3018 Місяць тому

    Honestly this is a really bad analogy to describe this problem.

  • @FarhadJabiyev
    @FarhadJabiyev Місяць тому

    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?

  • @hamdenichamseddine8217
    @hamdenichamseddine8217 Місяць тому

    Thank you so much for the perfect explanation

  • @alexeiionov9812
    @alexeiionov9812 Місяць тому

    so interesting! thank you so much for posting this series : )

  • @indrajeetv8878
    @indrajeetv8878 Місяць тому

    Sir, where is part one?

  • @bermick
    @bermick Місяць тому

    brilliant! thanks a lot for the content Martin!

  • @suparnaprasad8187
    @suparnaprasad8187 Місяць тому

    Awesome video!

  • @algoX-nj2ly
    @algoX-nj2ly 2 місяці тому

    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

  • @harman654321
    @harman654321 2 місяці тому

    Great series for distributed systems.

  • @tysonliu2833
    @tysonliu2833 2 місяці тому

    how do we handle obtaining commit timestamp in a raft database without physical clock? just two phase commit?

  • @tysonliu2833
    @tysonliu2833 2 місяці тому

    why on slide 9 the leader need qurom to deliver while on slide 7 the follower can just commit?

    • @jl1835
      @jl1835 2 місяці тому

      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).

  • @tysonliu2833
    @tysonliu2833 2 місяці тому

    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?

  • @tysonliu2833
    @tysonliu2833 2 місяці тому

    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)

    • @tysonliu2833
      @tysonliu2833 2 місяці тому

      oh nvm when it sends its advocation to a node with newer data, it will be demoted to follower

  • @ferschubert
    @ferschubert 2 місяці тому

    Vielen Dank! Thanks Martin! Very clear explanation on Lamport and Vector logical clocks, inspired my lectures for CS from your explanation.

  • @srikrishna6595
    @srikrishna6595 2 місяці тому

    bro you rocked it

  • @anishsingla-pg2pd
    @anishsingla-pg2pd 2 місяці тому

    so, there is no solution for this problem? we can only put checks in place to prevent it in a real life scenario ?

  • @khatiakilanava1557
    @khatiakilanava1557 2 місяці тому

    Thank you so much for the series. They really are great and simple to follow. You are the best :))

  • @krizh289
    @krizh289 2 місяці тому

    Thanks for putting these lectures on youtube--education should be accessible to all

  • @fadygamilmahrousmasoud5863
    @fadygamilmahrousmasoud5863 2 місяці тому

    thank you, very informative and explantory

  • @ShubhamGuptaAmol
    @ShubhamGuptaAmol 2 місяці тому

    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?

  • @johnshepard3197
    @johnshepard3197 3 місяці тому

    11:40 you tube

  • @jainamm5307
    @jainamm5307 3 місяці тому

    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.

    • @jainamm5307
      @jainamm5307 3 місяці тому

      One potential solution to this problem is to have a recovery mechanism for the node when it comes back up.

    • @jainamm5307
      @jainamm5307 3 місяці тому

      One potential solution is to have a recovery mechanism for the node when it comes back up.

  • @salad7389
    @salad7389 3 місяці тому

    super well made, thank you!

  • @pavelhassan7457
    @pavelhassan7457 3 місяці тому

    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.

  • @user-ud8hw4gp6t
    @user-ud8hw4gp6t 3 місяці тому

    hast du discord?

  • @user-ud8hw4gp6t
    @user-ud8hw4gp6t 3 місяці тому

    bestes video was ich gefunden habe. alles andere hat mega genervt.

    • @user-ud8hw4gp6t
      @user-ud8hw4gp6t 3 місяці тому

      aber wundert mich auch nicht wegen cambridge prof titel xD

  • @anshulgupta9754
    @anshulgupta9754 3 місяці тому

    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.

  • @kobew1351
    @kobew1351 4 місяці тому

    Hope you can make a video to explain three phase commit and how it improves fault tolerance.

  • @StijnDeWitt
    @StijnDeWitt 4 місяці тому

    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?