Distributed systems theory for the distributed systems engineer
the-paper-trail.org
Distributed systems theory for the distributed systems engineer
1–10 of 19 posts
Re: Distributed systems theory for the distributed systems engineer
#2Edit : https://www.youtube.com/playlist?list=PL700757A5D4B3F368
Re: Distributed systems theory for the distributed systems engineer
#3Also, if you're interested in cryptocurrencies or distributed systems with "greedy" participants, that's another class of problem that goes a level beyond byzantine consensus. The difference is that you cannot assume that even the "good" participants are running the officially sanctioned software, but rather you must assume that there may be colluders who attempt to game the network.
Byzantine generals problem + game theory -> ?
Re: Distributed systems theory for the distributed systems engineer
#4You must go beyond FLP impossibility. The problem with just stopping at understanding FLP is that it assumes too little about what is available. No assumptions of synchrony, no assumptions of clocks, then sure, consensus is impossible in the presence of faults. The real interesting question is, what realistic assumptions can I make to overcome FLP? I believe the CAP theorem is similar. Also, if you're interested in c…
Re: Distributed systems theory for the distributed systems engineer
#5I've found these video lectures by professor Seif Haridi to be really useful. http://www.ict.kth.se/courses/ID2203/video_lectures.html Edit : https://www.youtube.com/playlist?list=PL700757A5D4B3F368
Re: Distributed systems theory for the distributed systems engineer
#6- Greedy routing theory i.e. protocol design that is robust in a Nash equilibria sense. It still amazes me how many distributed systems are built on protocol designs that are provably unstable and inefficient.
- Space decomposition data structures. The only class of data structure that is efficiently distributable at massive scales due to their mathematical relationship to space-filling curves. Hash tables are often inadvertently implemented as space decomposition structures but there is a much richer and more expressive universe of data structures that exist.
- Game theoretic schedule awareness. This is a concept sometimes used in massively parallel systems for HPC but distributed systems designers seem to be unaware of it. It allows extremely high throughput by eliminating much of the need for distributed coordination with respect to accessing shared resources because every process can dynamically schedule its operations based on its modeling of the decisions of other schedulers it interacts with such that it almost never conflicts. I've never seen a paper on it but people have designed systems based on it (hell, I've designed a number of massively parallel systems based on it).
- Practical topology. On the surface it is about understanding how to maximize the throughput of a fabric of switch fabrics and most messaging patterns used in distributed systems today are naive at an elementary level; HPC has a much better understanding of packet flow optimization. There is also the more theoretical algebraic topology that hints how you efficiently do computational operations over space decomposition structures (mentioned above) with minimal data motion. Algebraic topology is enormously relevant to massively distributed and parallel databases but I rarely meet people who understand it outside of Oracle and similar (not that most of them are using it well).
A lot of distributed systems were engineered without any awareness of these things. Most of their fundamental weaknesses follow from that. The kinds of distributed systems that you can design if you really know the above topics greatly exceed the capabilities of popular distributed systems used today.
To reduce it to a simple metric: if you can show me a competitive algorithm design for the Graph500 benchmark, you actually understand massively scalable distributed systems. The efficiency at scale demonstrated in that benchmark is so far beyond common distributed systems because the designers of the top entries actually understand the above points I raised.
Re: Distributed systems theory for the distributed systems engineer
#7This is a pretty limited view of distributed systems engineering, particularly at the high-end. Some topics that are essential for designing efficient, massively distributed systems: - Greedy routing theory i.e. protocol design that is robust in a Nash equilibria sense. It still amazes me how many distributed systems are built on protocol designs that are provably unstable and inefficient. - Space decomposition data…
Re: Distributed systems theory for the distributed systems engineer
#8A question to the HN folk - For a programmer who spends his day time writing web applications and no systems experience, are there any good project ideas you guys have to better understand Distributed systems? I was thinking of implementing Paxos in Go / Scala but something more practical would be better.
Re: Distributed systems theory for the distributed systems engineer
#9Re: Distributed systems theory for the distributed systems engineer
#10This is really awesome. I've been spending my nights on improving my understanding and was wishing for a resource exactly like this. I've been going through Prof Aspnes (of Yale) notes - http://www.cs.yale.edu/homes/aspnes/classes/469/notes-2011.p... A question to the HN folk - For a programmer who spends his day time writing web applications and no systems experience, are there any good project ideas you guys have t…
Original Link: http://css.csail.mit.edu/6.824/2014/labs/lab-1.html
HN comments: https://news.ycombinator.com/item?id=5192650