Все мы время от времени использовали DropBox, не зная, как работает система. В этом блоге будут представлены все идеи, связанные с различными функциональными требованиями, а также с дизайном системы DropBox. Итак, приступим к обучению...

Прежде чем начать, я хотел бы поблагодарить Швету Сингх и Киртану за их поддержку и постоянные исследования, которые они проводят по этой теме.

Авторы: Субхадип Гош, Киртана, Швета Сингх

Что такое Дропбокс?

Dropbox — это облачное хранилище файлов. Это позволяет пользователям обмениваться файлами на своих устройствах, а также с удаленными серверами хранения. Это достигается за счет того, что пользователи могут создавать специальные папки на каждом из своих компьютеров или мобильных устройств, которые затем синхронизируются службой, так что они выглядят одной и той же папкой независимо от того, какой компьютер используется для ее просмотра. Файлы, помещенные в эту папку, также обычно доступны через веб-сайт и мобильные приложения, и ими можно легко поделиться с другими пользователями для просмотра или совместной работы.

Это оглавление, которому мы будем следовать на протяжении всего блога:

Цели системы DropBox:

Ниже приведены несколько целей/задач, которые учитываются при разработке пользовательского интерфейса системы DropBox:

  • Пользователи должны иметь возможность загружать и скачивать файлы в любое время.
  • Гибкость обмена файлами/папками с кем угодно.
  • Синхронизация между устройствами.
  • Система должна позволять хранить большие файлы.
  • Операции с файлами должны следовать подходу ACID.
  • Поддержка автономного редактирования. Гибкость для создания/удаления/редактирования файлов, даже когда пользователи не в сети. И они должны синхронизироваться, как только пользователь подключится к сети.
  • Система также должна предоставлять услуги безопасности в виде шифрования хранимых файлов.

Функциональные требования:

Основное поведение системы может быть определено функциональными требованиями. Это то, что система делает или фокусируется на выполнении. Проще говоря, эти требования должны быть выполнены, если мы хотим, чтобы наша система функционировала должным образом.

  • Пользователей можно разделить на две части: Бесплатные пользователи и Премиум-пользователи. Бесплатным пользователям будут предоставлены ограниченные возможности, ограниченная пропускная способность сети и хранилище. Премиум-сервис является платным, размер хранилища больше, чем у бесплатных пользователей.
  • Пользователь также может создать корневую папку, если хочет. А преимущество облачного сервиса в том, что изменения, внесенные в файлы при синхронизации с облаком, также отразятся на всех устройствах пользователя.
  • Следующий вопрос, который возникает, это какой максимальный размер файла разрешен? Максимальный поддерживаемый размер файла составляет 2Gb.
  • Пользователь должен иметь возможность обмениваться файлами или папками с другими пользователями. Когда файл или папка предоставляется другим пользователям, любые обновления файла или папки автоматически синхронизируются со всеми устройствами других пользователей. Общий доступ к папке включает общий доступ ко всем файлам и подпапкам в этой папке.
  • Одним из основных преимуществ DropBox является то, что пользователь также может работать с ним в автономном режиме. Изменения синхронизируются с их файлами всякий раз, когда они переключаются в онлайн-режим.
  • Управление версиями файлов и простой откат: Dropbox поддерживает несколько версий файла или папки, с которыми работает пользователь, поэтому, если пользователь сталкивается с серьезными трудностями в своей текущей версии, он может легко вернуться к предыдущей версии, если он/ она хочет.
  • Одним из основных требований может быть его система поиска файлов. Если у пользователя есть тысячи файлов, хранящихся в DropBox, у него должна быть возможность искать файл, который он ищет, вместо того, чтобы искать его вручную, что отнимает много времени.
  • Предоставление механизма разрешения конфликтов системой, если один и тот же файл обновляется одним или несколькими пользователями.

Нефункциональные требования:

Как мы узнали из предыдущего раздела, функциональные требования — это те требования, которые необходимы для оптимизации производительности системы, тогда как нефункциональные требования определяют подход системы к выполнению функциональных требований. Они не влияют на функциональность системы, даже если они не выполняются, система все равно будет выполнять свои основные операции.

  • DropBox должен быть высокодоступным и отказоустойчивым.
  • Сервис должен иметь высокую масштабируемость при увеличении нагрузки.
  • Сведение к минимуму использования пропускной способности сети и задержек при передаче файлов за счет синхронизации файлов. (Это одно из наиболее важных нефункциональных требований, поскольку именно по этой причине файлы делятся на более мелкие сегменты, также известные как «фрагменты». Это позволит пользователю изменять/загружать/загружать измененные фрагменты файла. Даже если действие не удается, пользователю просто нужно повторить это конкретное действие с этим фрагментом, а не повторять попытку для всего файла.)
  • Гарантия на систему ACID.

Что такое система ACID в DropBox Design?

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

  • Атомарность. Одно из свойств платформы облачного хранилища, такой как Dropbox, заключается в том, что если файл изменяется с одной версии на другую, этот файл реплицируется/обновляется и на всех других устройствах. Предположим, пользователь пытается получить доступ к обновленному файлу с другого устройства. Файлы обновляются в виде «фрагментов», поэтому пользователь, пытающийся получить доступ к файлу с другого устройства, может увидеть, что файл обновляется временным образом (то есть в виде фрагментов). Пользователь не должен видеть все изменения, появляющиеся в виде фрагментов. Чтобы противостоять этому, все фрагменты в приложении Dropbox пользователя хранятся во временном файле во временном месте, где сначала применяются все изменения. После того, как все изменения будут применены к файлу, мы можем связать фактический файл с временным файлом.
  • Последовательность. Эта функция означает, что пользователи не должны иметь возможность читать файлы, которые не имеют смысла вместе. Если пользователь обновил файл на одном устройстве, второй пользователь, работающий на другом устройстве, не должен увидеть частичное изменение этого файла. Система может выйти из строя, если второй пользователь попытается оперировать/изменить этот частично обновленный файл.
  • Изоляция. С точки зрения службы DropBox это означает, что два разных файла, с которыми пользователь по-разному работает, должны быть полностью независимы друг от друга. Изменение или модификация одного файла не должны изменять другой файл. Во-вторых, если файл обновляется на нескольких устройствах одновременно, один файл должен будет дождаться завершения записи другого файла первым.
  • Долговечность. Изменения, внесенные в файл, не будут потеряны. Если файл был создан, а затем изменен на основе выбора пользователя, и этот файл был обновлен на удаленном сервере, эти изменения не должны быть потеряны. Это одно из лучших преимуществ облачных хранилищ, где сохраняются изменения.

В следующем разделе мы рассмотрим некоторые основные API-интерфейсы проектирования, которые использует DropBox:

API дизайна DropBox:

API расшифровывается как Интерфейс прикладного программирования. Он действует как среда, через которую два или более приложений соединяются друг с другом. Он действует как мессенджер, который доставляет запрос пользователя в приложение, где пользователь запрашивает информацию, и возвращает ответ пользователю. Различные API-интерфейсы дизайна для Dropbox выглядят следующим образом:

  • Загрузка файла (токен пользователя, метаданные файла, содержимое файла)
  • Обновление метаданных файла (токен пользователя, идентификатор файла, метаданные файла)
  • Удалить файл (токен пользователя, идентификатор файла)
  • Поделиться файлом (токен пользователя, идентификатор файла, второй идентификатор пользователя, разрешения)

Общая архитектура DropBox:

Ниже представлена ​​вся архитектура DropBox, где поле слева обозначает операции на стороне клиента, а справа — все службы, которые предоставляет DropBox.

Приведенная выше блок-схема описывает всю архитектуру Dropbox, начиная со стороны клиента, проходя через облачный сервер и несколько служб, предоставляемых службами DropBox.

Выводы:

  • Внедрение облачных сервисов для хранения больших объемов файлов значительно облегчило нашу жизнь.
  • Мы все когда-то использовали облачные сервисы на основе хранилища, но не знали всей архитектуры, стоящей за ними.
  • DropBox недавно продемонстрировал рост своего годового дохода в первом квартале 2020 года: количество платных пользователей достигло 15,48 млн по сравнению с 14,31 млн за тот же период прошлого года.

Причиной такого огромного увеличения доходов DropBox является применение алгоритмов машинного обучения. У них было четкое видение постановки задачи, в которой они хотели иметь более широкую базу пользователей и, в свою очередь, увеличить доход. Они использовали алгоритмы кластеризации для разделения различных групп пользователей вместе и предоставляли преимущества пользователям с меньшей вероятностью использования DropBox.

Использованная литература:





https://en.wikipedia.org/wiki/ACID#:~:text=In%20computer%20science%2C%20ACID%20