Size: a a a

2021 November 16

БГ

Бензофуран Гетероцик... in Distributed
Публикуется в DHT
источник

PZ

Pavel Zlatovratskii in Distributed
Я опубликовал в DHT хэш facd0035
Как ты узнаешь что он появился?
источник

БГ

Бензофуран Гетероцик... in Distributed
Так, в смысле? DHT же хранилище ключ-значение, использующее хеш ключа
источник

БГ

Бензофуран Гетероцик... in Distributed
Я публикую в DHT блоков первый блок стрима
При получении следующего блока я публикую в DHT блоков новый блок и в DHT блок-последователь связку (хеш 1 блока, хеш 2 блока)
источник

БГ

Бензофуран Гетероцик... in Distributed
А, кажется понял в чём загвоздка
источник

БГ

Бензофуран Гетероцик... in Distributed
Такс, для упрощения будет лучше если выразим это к псевдокоде
источник

БГ

Бензофуран Гетероцик... in Distributed
Получается что-то такое:


blocks = DHT()
successors = DHT()
predecessors = DHT()

def stream(file):
 first_chunk = file.chunks[0]
 chunks_hashes = list(map(chunks.push, file.chunks))
 file_id = chunks_hashes[0]
 prev_hash = file_id
 for chunk_hash in chunks_hashes[1:-1]:
    successors.push_pair(prev_hash, chunk_hash)
   predecessors.push_pair(chunk_hash, prev_hash)
   prev_hash = chunk_hash
 return file_id
источник

БГ

Бензофуран Гетероцик... in Distributed
Т.е. имеем DHT блоков и некоторые распределённые хранилища пар хешей блоков
источник

БГ

Бензофуран Гетероцик... in Distributed
Спутал изначально эти самые "распределённые хранилища" с DHT, моя ошибка
источник

PZ

Pavel Zlatovratskii in Distributed
Это у тебя что-то типа стрима из файла получается, а не онлайн-стрима.
Потому что ты таки листишь весь файл в начале.
источник

PZ

Pavel Zlatovratskii in Distributed
А стрим из файла - это по факту просто публикация файла.
Вопрос только в оптимальности получения потом.
источник

БГ

Бензофуран Гетероцик... in Distributed
Ну в целом процедура описанная может быть растянута во времени
источник

БГ

Бензофуран Гетероцик... in Distributed
Смари, после того как есть file_id уже можно выходить, а цикл крутить в фоне
источник

БГ

Бензофуран Гетероцик... in Distributed
Суть в том что для получения файла не нужно знать его целиком
источник

БГ

Бензофуран Гетероцик... in Distributed
А вот механизм уведомления подписчиков о новом куске - вопрос
источник

PZ

Pavel Zlatovratskii in Distributed
Да, понял идею....
Назад, кстати, можно DHT не держать, а держать в файле. Так должно быть быстрее и надёжнее.
источник

БГ

Бензофуран Гетероцик... in Distributed
Но в целом эту обязанность можно возложить на публикующего
источник

PZ

Pavel Zlatovratskii in Distributed
Ну у тебя получается что уведомление о новом куске получается когда у подписчика удачно выполняется запрос на DHT successors
источник

БГ

Бензофуран Гетероцик... in Distributed
И на тех кто у себя держит файл
источник

БГ

Бензофуран Гетероцик... in Distributed
Да, но долбить сеть вопросами "есть чо нового у X?" это как-то неок)
источник