3 ms·
I think the either the term distributed systems has been watered down or perhaps my definition was too strict vs what most people think it means. To me somethi
by jpgvm 6y ago
I think the either the term distributed systems has been watered down or perhaps my definition was too strict vs what most people think it means.
To me something is only a distributed system if it infact has stateful (even ephemerally) components that interact with each other through some sort of distributed consensus or eventual consistency algorithm.
This on the other hand seems more like an application framework for traditional top-down scale out web applications where requests flow in from the top, through stateless application tier and into a stateful, centralised database.
Arguably it's "distributed" because it's made of multiple processes on multiple machines but it does really feel like a watering down of the term.
Things I would consider distributed systems: Zookeeper, etcd, Kafka, Druid, Hadoop, Bookkeeper, Pulsar, RabbitMQ, crypto stuff, bittorrent, Hazelcast, etc. Things that distribute work and storage across components and are aware of their peers.
Not to diminish the work here, just that I think the wording is a bit rich.
- asimpletune 6y agoA distributed system doesn’t require consensus at all. Consensus is just a famous category of problems within the field of distributed systems, and there are many different types of consensus requirements. I like Leslie lamport’s definition of a distributed system. I’m paraphrasing but it’s something to the effect, “a distributed system is when your program crashes because of a computer you never even heard of”. So yeah, I mean a multi-tier web app can definitely be a distributed system. Typically people don’t think of it like that because those systems are very centralized around a database for example, but in the most technical sense a multi tier application is still a distributed system. So is an app consisting of composition of docker containers. Message passing in general can kind of blur the lines but yeah this too.
- jpgvm 6y agoI didn't say it requires consensus but rather that it's often present. Absence of it doesn't disqualify it because eventually consistent systems are definitely "distributed systems". I guess my quandary is between what I would consider embarrassing parallel scale out problems vs distributed systems that often do some sort of coordination even if that is loose coordination in the case of things like p2p protocols ala BTC, bittorrent, etc.
- plank_time 6y agoYou actually did say it requires consensus or eventually consistency algorithm. Your definition is too strict. Distributed systems are systems where the components of a system are distributed across a network. There are more issues than just consistency of data. You could have a system that doesn’t store data at all but still is considered distributed due to the nature of it being spread across a network.
- valzam 6y agoI think one typical "distributed systems problem" that comes in even with a SOA of stateless services is transactions and eventual consistency. That being said I sorta agree that a distributed system without state is at least a much simplified version of "true" distributed systems.
- m00x 6y agoThere is no "true" distributed system. Any system that is distributed across multiple machines over network qualifies to be labeled as a distributed system. I'm unsure where this protection of a term for more "complex" systems come from. It's a rather simple term that doesn't require to be needlessly reserved.
- m00x 6y ago> To me something is only a distributed system if it infact has stateful (even ephemerally) components that interact with each other through some sort of distributed consensus or eventual consistency algorithm. Well you're going to learn something new! Here's the short definition from Wikipedia: Distributed computing is a field of computer science that studies distributed systems. A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. https://en.wikipedia.org/wiki/Distributed_computing https://en.wikipedia.org/wiki/Distributed_computing Any system that is distributed between multiple machines over a network and communicate with each other is a distributed system. The term is purposefully generic and not required to be constrained.