Давайте ненадолго возьмем паузу на предыдущем направлении мысли, и обратимся к децентрализации. Децентрализация – относительно недавняя концепция в компьютерном знании, которая находит все больше применений за последнее десятилетие. Одним из первых примеров децентрализации стал пиринговый (P2P) файлообмен. За прошедшие годы существовало много его реализаций, наиболее распространенной из которых сейчас является сеть торрентов. Если вы незнакомы с торрентами, позвольте дать краткое введение. Традиционный метод загрузки файлов из интернета довольно прост. Один компьютер (сервер) хранит файл, который вам нужен, а другой компьютер (клиент) запрашивает этот файл с сервера, и сервер передает файл клиенту. Эта модель до сих пор преобладает сегодня, и большую часть времени, которое вы проводите в интернете, работает так, как описано. Кстати, эта модель называется клиент-серверной. Однако, у нее есть некоторые ограничения. Одно из этих ограничений состоит в том, что файл нельзя загрузить быстрее, чем позволит сервер. Обычно это не проблема, но что если есть миллион человек, которые хотят загрузить с сервера один и тот же файл? Пропускная способность сервера ограничена, вследствие чего этот ограниченный канал должен быть поделен между всеми людьми, загружающими файл. Кстати, отдельный сервер не может поддерживать миллион соединений, так что понадобится ферма из серверов, содержащих файл, что приведет к большим затратам для владельца серверов, или маленькой скорости для клиентов, загружающих файл.
Здесь может помочь распределенная пиринговая сеть. Она работает следующим образом: скажем, у меня есть файл, который я хочу сделать доступным для других людей. Используя P2P-программу этот файл делится на сотни частей (точный размер и количество частей зависит от многих факторов). Теперь люди могут загружать файл с моего компьютера по одной части за раз, в любом порядке. Пропускная способность с моей стороны невелика, так что изначально это будет довольно медленно для тех нескольких человек, которые попытаются загрузить этот файл с моего компьютера. Если кто-либо другой получил от меня одну из частей файла, остальные люди могут теперь загрузить эту часть либо с меня, либо с другого участника сети. Со временем все больше и больше народу загружает одни части файла с моего компьютера, а другие – с компьютеров других людей, до тех пор, пока первоначальный файл не окажется распределен между компьютерами множества людей. Если приходит кто-то новый и хочет загрузить этот файл, программа будет одновременно загружать файл со множества разных компьютеров, возможно, никогда больше не соединяясь с моим компьютером, на котором файл находился изначально – в сущности, в этот момент я могу вообще выключить свой компьютер, и при условии, что в интернете находится полная копия файла, люди будут продолжать его загрузку беспрепятственно. Эта система показала себя очень успешной для файлов, пользующихся большим спросом. В последнее время мы можем видеть, что децентрализованный подход применяется в программных продуктах, для которых он изначально не задумывался, и наиболее свежим примером является блокчейн.