Pull to refresh
17
Karma
0
Rating

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

В нашем синхронизирующем клиенте нельзя. Клиент возлагает дополнительную работу на машину пользователя чтобы минимизировать работу по сети. Кроме того, как в посте отмечалось, это дополнительная гарантия, что файл пришёл правильный и ничего не побилось.

Если соединение надёжно, можно воспользоваться любым стандартным WebDAV-клиентом, который сможет файл отправить на сервер. К сожалению, не все WebDAV-клиенты умеют работать с большими файлами. Могу порекомендовать cadaver, Cyberduck или даже curl =)

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Зависит конечно же от скорости дисковой подсистемы, но конечно же для 700 МБ это займёт на порядок меньше. У меня md5sum от файла 750МБ считается 4 секунды. Даже в худшем случае трата 20 секунд перед отправкой файла оправдывает возможность возобновить заливку файла, если подключение к серверу разорвётся.

Конечно же это необязательно, можно отправлять файлы сразу без высчитывания md5, просто докачать будет невозможно, если случится что-нибудь неожиданное.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Потому что отдел, который начал разработку прототипа, занимался jabber-ом Яндекса, который когда-то форкнулся от ejabberd. И мы продолжаем им заниматься.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Добавил, хотя тут мало рассказывается о языке, больше о протоколе.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Скачать каким клиентом? Можно в личку.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Код отлаживаем по логам, никаких dbg и trace. Несколько раз приходилось смотреть в продакшен, чтобы разобраться с утечками памяти.

Ботлнеков на стороне WebDAV-сервера нет, код очень простой, значительная часть логики перекочевала в другие компоненты.

Неожиданные ошибки бывают, но они локальны — нисколько не затрагивают другие сессии на той же ноде. Так что да, очень устойчив.

Обновлять на лету здесь не требуется, так как протокол stateless (в отличие от xmpp), поэтому обновляем с перезапуском сервера.

Про остальное коротко не написать, так что ждите новых постов.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Да, действительно, этот метод лучше соответствует тому, что на самом деле происходит. Но на момент разработки мы не заметили этот rfc. Если мы будем публиковать механизм таких патчей для сторонних приложений, мы обязательно поддержим его в рамках метода PATCH, чтобы максимально близко следовать стандарту.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Об этом мы писали в прошлом посте. Когда мы начинали делать прототип, ковбоя ещё не было.

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Уважаемые читатели, расскажите, что ещё вам интересно узнать о нашем сервисе, и мы обязательно напишем об этом.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Да, синхронизация во многих случаях удобней работы с удалённым хранилищем. Как я уже писал выше, мы думаем над реализацией синхронизирующего клиента под линукс.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Как протокол он не подходил по причине необходимости специализированного ПО для работы с хранилищем.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Попробуйте решение, описаное здесь: chapters.marssociety.org/webdav/

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Рассматривали, но не как протокол.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Скачивать все умеют. А вот заливать — не уверен.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Я думаю, мы расскажем об этом детально в следующих сериях…

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Мы обязательно об этом расскажем… в следующих частях истории.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Если хочется прозрачности для работы приложений, то лучше пользоваться синхронизацией. Обновления файлов по сети могут приводить к ошибкам. У нас были обращения в саппорт по поводу проблем с приложениями, работавшими с содержимым Яндекс.Диска, который был подключён встроенным в MacOSX расширением Finder-а.

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Да, в виртуалках я не смог воспроизвести эту проблему. Вживую тоже сам не видел. Знаю о ней только через саппорт.
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity