Как организовать децентрализованный сетевой сервис?
Есть желание реализовать некий сервис на основе приложения для AndroidТеоретически возможно, практически - нереально.
Поясню - децентрализованная БД предполагает хранение и обработку на стороне клиента. Т.е у клиента должны быть ресурсы для хранения, обработки и передачи данных.
Android это фактически синоним мобильных устройств, а на мобильных устройствах с ресурсами то, как раз и проблема.
Емкости хранения небольшие.
Производительность процессора довольно низкая,  любые процессорные операции быстро садят батарейку.
Трафик зачастую дорогой, канал в интернет не особо широкий и стабильный, пинг ужасный.
В итоге реализовать вы предположим реализуете.
Но это приложение в процессе работы будет потреблять кучу трафика, и быстро садить батарейку.
Поэтому использовать его будет проблематично.Как устройства могут находить друг друга в Интернете? Интересно именно в архитектурном плане.Абсолютной децентралиции до сих пор не придумали. Есть частичная. Например DHT в торрентах, и подобные.
Принцип обычно такой - есть список заранее определенных серверов, зашитый в клиент, там берется список других нод, а дальше уже запрашиваем по определенному алгоритму у известных нод, требуемую нам информацию. Поиск идет довольно медленно, но вполне эффективно. Начните читать отсюда - https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D...
Целесообразно создать иерархию, но должен быть сервер или ресурс хранящий а значение по вертикали, по горизонтали, ip клиента, а также номер каждого обновления(каждое обновление +1 к существующему числу - 0, 1, 2 и т.д.). Как должны располагаться клиенты - главный -0, есть ниже порядком - 1, ещё - 2. Каждый порядок образует слой. Тем самым образуется матрица.
Как то так. Сервер нужен лишь только для подключения, а передача будет между клиентами напрямую.