3 ms·
The most common canonical definitions in regard to network connectivity graphs are: Centralized: most of the data and compute lives in one place and is control
by api 5y ago
The most common canonical definitions in regard to network connectivity graphs are:
Centralized: most of the data and compute lives in one place and is controlled by one entity. This is standard issue SaaS, etc.
Federated: anyone can run a server and the servers can talk to each other somehow and either propagate messages or replicate data, but still centralized from the client point of view since each client connects to one or more servers. While anyone could run a server it often requires a lot of administration overhead, storage, and often "peering" permission from at least one other server.
Decentralized: clients are servers and everything connects in some kind of mesh graph.
It's not a binary thing, more of a gradual shift. Bitcoin for instance is somewhere between federated and fully decentralized. Technically anyone can run a node and they connect in a full mesh, but most users don't use it like this and the cost of running a node is at least "annoying" for most people (a lot of bandwidth and storage).
Centralized systems are the easiest to engineer by far but come with the obvious downsides of single point of failure, moral hazard, censorship, lock-in, latency issues if you are not near the servers, etc.
Federated used to be very very common. Classical e-mail, Usenet, FidoNET, UUCP networks, etc. are all federated systems. The old school file server with mirrors paradigm is also a simple from of federated network. It declined in popularity when all the old systems fell victim to spam but is rising again in the form of things like Mastodon.
There are not very many fully decentralized systems in common use. The most well known is probably the BitTorrent magnet network. Fully decentralized systems that are secure, robust, fast, and light on resources are incredibly difficult to engineer.
Edit: if you look deeper it gets more complicated though. Google, Facebook, and most of the other "hyperscalers" are federated systems under the hood but this is all hidden from the user. They are still "logically centralized" though.
It's possible to further break things down by what is decentralized. You can have decentralized or centralized compute, storage, trust, control/administration, and so on.
- pcthrowaway 5y agoThe third point is peer-to-peer in my understanding. Decentralized to me means that there isn't an entity who has custody/control over information propagated by the network and ability to control access to it
- api 5y agoYou're referring to decentralization of trust, while peer to peer means decentralization of compute and storage. You can have a system that is decentralized in one way but not another. A peer to peer system where every object must be signed by a centralized authority has decentralized compute/storage and centralized trust. The Apple ecosystem is probably the best example of that. Apple has to sign or notarize most things but these things are then sprayed across a huge diaspora of machines. A physically and computationally centralized repository of objects that anyone can create is the opposite. GitHub is a good example of that. The BitTorrent magnet network and most cryptocurrencies are examples of systems that are decentralized in both respects. Eliminating all forms of centralization without making huge sacrifices in areas like security or efficiency is really hard. I would say it's an unsolved problem since even if you try really hard centralization tends to creep in... e.g. how proof of work economies of scale create centralized mining cartels in cryptocurrencies. PoW is also very expensive, making it inefficient but moving that inefficiency "out of band" and hiding it in an externality. Decentralization is a big rabbit hole.