Архитектура s3: 3 года эволюции mail.ru cloud storage
Содержание:
- Что бы я сохранил, а что сделал по-другому, если разрабатывать хранилище заново
- Как создать ссылку на передачу файла в облаке mail ru
- Безлимитный «общий» Google Drive
- Дополнительные характеристики Mail Cloud (Мэйл Клауд)
- Как удалить Диск-О с компьютера полностью?
- Загрузить директорию в облако
- Что мы добавили, чтобы сделать S3-хранилище
- Облако Mail. Ru
- Приложения Mail Cloud (Мэйл Клауд)
- Подробнее о том, как мы реализовали шардирование
- Работа с SSL-сертификатами
- Регистрация личного кабинета
- Возможности и преимущества работы с сервисом
- Настройки облака Мэйл ру на Windows
Что бы я сохранил, а что сделал по-другому, если разрабатывать хранилище заново
Что нужно было использовать с самого начала
Шардинг сразу. Довольно много проблем доставил решардинг. Его легко сделать, но, тем не менее, если начинать проекты, которые нужно масштабировать, лучше сразу брать шардированный кластер, пусть даже и на минимуме узлов. Реализация шардинга на старте почти бесплатная в сравнении с внедрением шардинга в рабочую систему.
Работа с Tarantool через балансировщики. Сейчас мы все новые базы сразу подключаем в работу через балансировщики. Это позволяет расширять функциональность, добиваться более высокой отказоустойчивости.
Автофейловер. Установил бы все инструменты, которые требуются для автофейловера, так как первые неудачи после запуска были связаны с его отсутствием. После опыта с S3 все последующие продукты запускались с учётом этого.
Фича S3 «Версионирование». Изначально показалось, что это не очень востребованная функциональность. Встраивать эту возможность в архитектуру работающей системы крайне сложно.
Отдельный биллинг. То, как мы встроили биллинг в нашу систему, хорошо показало себя в начале, но впоследствии он стал мешать, лучше было бы его поставить в виде абсолютно отдельного сервиса.
Что было удачным решением
Модель данных. История показала, что по мере развития сервиса мы довольно точно совпадаем с моделью данных Amazon, поэтому можем реализовывать те фичи, которые есть там.
Схема шардирования. Я бы поддержал такие же диапазонные шардинги по бакетам, поскольку это позволяет хорошо распределять запросы от разных бакетов по большому кластеру.
Использование Tarantool. Tarantool сильно помог при развитии сервиса и его модификации, мы легко работали с данными, трансформировали и шардировали хранилище, при этом не понадобилось подниматься на слой приложения.
Также вы можете, посмотреть мой старый доклад про S3 или почитать статью моего коллеги про блочное хранилище.
Как создать ссылку на передачу файла в облаке mail ru
Для того, чтобы дать человеку ссылку на скачивание вашего файла, вам нужно для начала загрузить данный файл в своё облако mail ru, пометить его галочкой, нажать правой кнопкой мыши и выбрать «Получить ссылку» или нажать сверху на кнопку «Получить ссылку»:
Теперь перед вами появится окно с вашей готовой ссылкой, где вам нужно нажать кнопку «Копировать» и уже можно её предоставлять третьим лицам:
Эту ссылку вы можете давать другим людям для скачивания нужных файлов. Человек, которому вы передали ссылку будет видеть файл именно так, где он должен нажать на кнопку «Скачать», чтобы скачать его себе на компьютер. Также он может посмотреть этот файл, не скачивая его себе прямо на этой странице:
Если вы хотите удалить ссылку и сделать так, чтобы она не работала больше, то просто снова помечаете этот файл галочкой, кликаете правой кнопкой мыши и нажимаете «Удалить ссылку». С этого момента, ваша ссылка станет нерабочей, и никто этот файл больше не сможет просматривать:
Безлимитный «общий» Google Drive
Самый интересный вариант из существующих — безлимитная учетная запись учебного заведения, подключаемая в качестве «расшаренного» диска к своей основной учетной записи Google.
Диск отображается в перечне доступных хранилищ Google Drive и полностью функционален без каких-либо ограничений с полной скоростью, допускаемой серверами Google с поправкой на региональные возможности.
Получить диск можно мгновенно, введя адрес Gmail и выбрав подходящий ресурс (университеты Юго-Восточной Азии работают похуже, чем иные предлагаемые варианты расположения).
Поскольку доступ к диску создаётся автоматически, к одному адресу можно привязать несколько «шар» от разных источников, включая корпоративную G-Suite с неизвестным происхождением.
Теоретически, к нему могут получить доступ администраторы ресурса, раздающие бесплатные расширения — поэтому хранить в таком облаке конфиденциальные данные не рекомендуется.
Кроме того, в отличие от хранилищ с ограниченным объемом, всегда есть шанс полного закрытия доступного облака — «письмо счастья» получат только официальные администраторы.
Стоимость: бесплатноПриложение: все платформыСредняя скорость: до 100 Мбит/cДля чего подойдёт: не конфиденциальных файлов любого размераПодключение «как диск»: есть
Дополнительные характеристики Mail Cloud (Мэйл Клауд)
Майл Облако отличается небольшим объёмом для бесплатного хранилища — всего 8 Гб. Примечательно, что объём почтового ящика интегрированного с ним Mail.ru составляет 10 Гб и имеет возможность увеличения. Расширять свой почтовый ящик можно практически неограниченное количество раз, притом, бесплатно. Такая разница в объёме этих двух сервисов могла бы привести к ошибкам, однако разработчики полностью отделили содержимое почты от файлов, загруженных только на облачное хранилище. Иными словами, почтовый ящик не занимает места в выделенных для облака 8 Гб.
Сервис доступен на 10 языках. К ним относятся не только русский и языки стран СНГ, но и пара европейских. Скорее всего, такой выбор связан с тем, что компания ориентируется на Рунет и ближнее зарубежье.
В плане дизайна Мэйл Клауд во многом напоминает Mail.ru. Симпатичный логотип и сочетание синего и жёлтого производят, скорее, приятное впечатление. Интерфейс же кажется простым и понятным. Можно выбрать один из двух вариантов отображения: список и плитка. В первом случае, помимо наименования файла и его расширения, будет виден и его размер, а также дата создания. В плиточном варианте отображаются только имя и расширение.
Как удалить Диск-О с компьютера полностью?
Если вы приняли решение об удалении — понимаю, ваше право. Моя задача — подсказать вам как это сделать.
Перед удалением — обязательно выйдите из программы.
Для удаления — зажмите Win + R, потом введите команду appwiz.cpl — нажмите ОК, откроется список установленного софта. Найдите здесь Диск-О, нажмите правой кнопкой и быстро удалите.
Удаление Диск-О в окне Программы и компоненты (Mail.Ru Cloud показан для примера — вы все равно ищите Диск-О)
Если вы продвинутый юзер, то рекомендую использовать удалятор Revo Uninstaller. Он и программу удалил и систему почистит от остатков. Ну и после всего еще можно почистить чистилкой CCleaner — вообще будет ураган, комп станет белоснежно-чистым.
Удаление при помощи Revo Uninstaller и чистка CCleaner (советую)
На этом все ребята, надеюсь информация пригодилась. Удачи вам и терпения.
Загрузить директорию в облако
Перед тем, как загрузить папку в облако Майл, необходимо выбрать место ее конечного размещения. На ПК, мобильном телефоне и в личном кабинете хранилища нужно открыть то место, где будет располагаться новая директория. Перед тем, как добавить директорию в общее место размещения, нужно выйти на главную страницу личного кабинета или в общий раздел файлов на ПК или мобильном телефоне.
Метод №1: через ПК
- Кликнуть левой кнопкой мыши по объекту, затем удерживая, перенести в конкретный (или общий раздел).
- Подождать, пока элемент полностью загрузится на диск.
В качестве альтернативного варианта можно кликнуть по элементу правой кнопкой мыши, затем «Скопировать или отправить в облако Mail.Ru». В этом случае объект отправится в общий раздел с файлами.
Метод №2: через личный кабинет
- На панели действий в левом верхнем углу кликнуть по «Загрузить».
- Далее кликнуть по «Выбрать файлы».
- Левой кнопкой мыши 1 раз кликнуть по нужной папке и удерживать, перенести в поле для загрузки.
- Справа откроется список загрузок. Подождать, пока окно со списком закроется.
Метод №3: через мобильный телефон.
- Открыть галерею, выбрать объект и удерживать несколько секунд.
- На верхней панели (или в меню) кликнуть по пункту «Отправить».
- В списке найти облачное хранилище.
- Кликнуть по месту размещения и «Добавить».
- Подождать, пока все загрузится целиком.
Работать с загрузкой из облака mail.ru на мобильном телефоне:
- В разделе «Файлы» выбрать «Добавить файлы».
- Нажать на элемент, удерживать, а затем «Добавить».
- Подождать полной выгрузки.
Создание директории, как и загрузку уже имеющейся, можно производить с любого устройства с доступом в интернет. Для загрузки лучше подключить безлимитную сеть, так как выгрузка большого объема данных требует использование значительного количества трафика.
Что мы добавили, чтобы сделать S3-хранилище
Итак, мы рассмотрели общее базовое устройство хранилища на момент, когда мы собрались запускать S3-хранилище. При помощи метода PUT мы могли поместить туда произвольный контент и получить в качестве идентификатора этих данных хэш. С этим идентификатором впоследствии можно было прийти и забрать исходный файл. Но этого недостаточно для реализации S3. В протоколе S3, помимо самого хранения объектов, есть:
- хранение метаданных — дополнительных свойств объектов;
- организация доступа к объектам посредством HTTP;
- группировка объектов в коллекции — бакеты;
- HTTP-S3 Endpoint. S3 организует данные в определенные структуры — бакеты, каждый из которых предоставляет точку входа для хранения файлов.
Для реализации этой логики был нужен отдельный сервис. Также хотелось сразу предусмотреть архитектуру для дальнейшего роста сервиса с линейной масштабируемостью.
Облако Mail. Ru
Облачный сервис Mail. Ru – функциональное и безопасное хранилище для Андроид. С его помощью вы можете хранить большой объем фото, видео, документов и т.д. Приложение обеспечивает доступ к данным с нескольких устройств и обладает функцией просмотра файлов в офлайн режиме. При регистрации пользователь получает бесплатные 25 Гб, которые при желании можно увеличить. Сервис предоставляет сразу несколько возможностей для отправки ссылок – почтовый ящик, социальные сети, смс и мессенджеры. Облако Mail. Ru идеально для командной работы, поскольку предоставляет совместное редактирование файлов несколькими пользователями.
Облачные сервисы является современным трендом в области информационных технологий. Облаком стали называть любые удаленные серверные ресурсы, которые позволяют решать различные текущие задачи пользователей, связанные с цифровой инормацией: хранение файлов и архивов, размещение сайтов, работу в различных платных программах без их непосредственного приобретения. Рассмотрим использования облачного сервиса для хранения файлов от компании Майл.ру.
Как пользоваться облаком Майл ру через браузер
- Чтобы приступить к использованию облака от Майл ру вам необходимо иметь зарегистрированный аккаунт на почте mail.ru. Если аккаунта у вас еще нет, то зарегистрируйте его.
- После регистрации перейдите на стартовую страницу облачного сервиса по адресу https://cloud.mail.ru .
- Ознакомьтесь с Лицензионным соглашением, примите его условия и перейдите к работе с сервисом, нажав кнопку Начать работу.
- Чтобы загрузить свои данные в облако нажмите кнопку Загрузить и выберите на дисках компьютера необходимые файлы. Максимальный размер файла, который можно загрузить через браузер равен 2Гб. После загрузки файлов с ними можно проводить необходимые действия: переименовывать, предоставлять для скачивания, перемещать по папкам и так далее.
- Чтобы получить ссылку на загруженные файлы, по которой любой человек может скачать данные выделите загруженный файл и нажмите кнопку Получить ссылку.
Скопируйте ссылку из появившегося окна. - Если через какое-то время вы захотите запретить скачивание файла из вашего облака, то выделите его и нажмите кнопку Удалить ссылку. Файл станет доступен только вам из панели управления облаком.
- Чтобы упорядочить загружаемые файлы рекомендуется раскладывать их по соответствующим папкам. Папки необходимо предварительно создать, нажав кнопку Создать и выбрать в появившемся меню пункт Папку.
- Чтобы удалить файлы, которые больше не нуждаются в хранении в облаке отметьте эти файлы и нажмите кнопку Удалить.
- Кроме хранения файлов с помощью облака Майл.ру можно создать документ, таблицы или презентацию, то есть аналоги документов, с которыми работаю офисные приложения Word, Excel и Power Point соответственно. Для создания указанных файлов в облаке нажмите кнопку Создать и выберите нужный пункт в появившемся меню. Необходимо отметить, что функциональные возможности в облаке значительно более ограничены по сравнению с теми, что можно получить, используя аналогичные приложения Microsoft Office.
- Если вам прислали ссылку на скачивание какого-либо файла, хранящегося на облаке Майл.ру, то вы можете не загружать его к себе на компьютер, а сохранить его в свое облако. Для этого нажмите на кнопку с изображением облака и выберите папку для сохранения данных.
Как пользоваться облаком Майл ру через приложениеЕще более удобно пользоваться облаком не через браузер, а с помощью приложений, которые можно установить для всех популярных компьютерных платформ, а также смартфонов. Одним из преимуществ использования приложений является то, что с их помощью можно загружать файлы размером до 32 Гб. Порядок использования приложения:Как заявляет сама компания Майл ру с использованием ее облачного сервиса пользователю больше нет необходимости беспокоиться о сохранности личных данных и они всегда и на любом устройстве будут «под рукой». Нам остается только поверить на слово и/или проверить справедливость данного заявления.
Приложения Mail Cloud (Мэйл Клауд)
Пользоваться Mail Cloud за пределами веб-версии удаётся не всегда. Так, при попытке скачать приложение для десктопа с официального сайта пользователя отправляют на сторонний сервис. Из этого можно сделать вывод о том, что у Майла своих клиентов нет.
В отличие от десктопной версии, версия для мобильных устройств имеется. Она бесплатна и предусмотрена как для iOS, так и для Android. В ней, как уже было сказано, появляется возможность входа по отпечатку пальца. Кроме того, существуют отличия в сортировке между веб-версией и приложением. Так, пользователь видит следующие категории: “Галерея” (все изображения и видео), “Альбомы” (фотографии), “Файлы” (все имеющиеся файлы в облаке), “Документы”.
Подробнее о том, как мы реализовали шардирование
Следующий вопрос, которым пришлось озаботиться — это шардирование. Система росла, росло количество объектов и нужно было обеспечить возможности для дальнейшего роста.
Вернемся к схеме данных: есть проекты, есть бакеты, креды и биллинг. Это объекты, которые с большой вероятностью в обозримом будущем не вырастут за пределы одного инстанса ни по объему, ни по запросам. Значит, их нет смысла шардировать, и мы вынесли их в отдельный инстанс, который останется нешардированным. Это позволяет более консистентно управлять проектами и бакетами, поскольку есть единая нешардированная точка.
Также в схеме есть объекты, которые линейно растут — сначала их было сотни тысяч, сейчас их количество измеряется несколькими миллиардами. Такие объекты вместе с их частями надо было унести в шардированный кластер.
Схему мы разделили, но объектам нужно работать с бакетами: объект всегда принадлежит конкретному бакету, плюс на бакете работает ACL. Поэтому для каждого шарда с объектами мы держим теневую копию каждого бакета. Кроме того, во время модификации объектов и выполнения запросов, нужно считать объем для выполнения биллинга, поэтому на каждом шарде есть счетчики от биллинга.
Также мы добавили еще несколько таблиц и компонент:
- корзину, для уничтожения старых проектов, которые удаляются или замораживаются;
- очередь для фоновых задач, то есть основное хранилище может выполнять фоновые задачи, которые необходимо делать на кластере;
- поддержку lifecycle — механизма, который позволяет работать с объектами, управлять их жизненным циклом.
Так как часть данных мы унесли на шарды, понадобилась шардирующая прокси. Можно было бы переиспользовать роутер под эту роль, но отдельная шардирующая прокси, отвечающая только за шардирование данных, позволяет из роутера ходить за данными целиком, не думая о шардинге.
Отдельно расскажу, почему мы не взяли готовое решение, а хотели сделать кастомную функцию шардирования.
Посмотрим, как она устроена. У нас есть 256 доступных шардов. Мы для каждого бакета выделяем диапазон при помощи некой консистентной функции. Это просто — так же, как вы при помощи консистентной функции определяете принадлежность к одному шарду, вы определяете стартовый шард и выделяете диапазон:
То есть если взять бакет, можно сказать, что он и его данные будут всегда лежать на конкретном подмножестве из всех шардов. Это позволяет снизить влияние одних бакетов на другие и упростить работу map-reduce запросов, когда нужно, например, сделать листинг объектов бакета. Для этого надо опросить все шарды, где эти объекты хранятся. Если бы объекты лежали на всех шардах, любой листинг задевал бы систему целиком, а здесь он задевает только конкретное подмножество.
Далее — каждый объект принадлежит конкретному бакету, поэтому когда мы обращаемся за объектом, то обращаемся за объектом по имени в конкретном бакете. То есть можем определить функцию для объекта не из всего доступного диапазона шардов, а только из подмножества его бакета:
Мы берем конкретный объект, в качестве аргументов функции передаем туда не все шарды, а подмножество его бакета — и получаем конкретный шард.
Итак, шардинг реализован, есть шардирующий прокси. Дальше осталось из роутера и базы с метаданными ходить в шардирующий прокси. Например, для создания объектов теневых копий — когда мы создаем бакет, основное хранилище должно создать представителя этого бакета на всех шардах, где он должен присутствовать.
Работа с SSL-сертификатами
Еще один кусочек системы — работа с SSL-сертификатами. В S3-хранилище вы можете установить собственный домен для доступа к конкретному бакету, просто при помощи . Но без HTTPS на сегодняшний день нельзя: собственный домен подразумевает собственный SSL-сертификат.
Как я уже говорил, за балансировку и терминацию SSL у нас отвечает Nginx. В нашем случае это не обычный Nginx, а OpenResty, Nginx с поддержкой LuaJIT.
Это позволило нам довольно просто научить наш Nginx отдавать произвольные сертификаты. Причём нам было необходимо отдавать сертификаты динамически (без необходимости прописывать их в файл конфигурации). Мы воспользовались расширением , которое позволяет прочесть сертификат из произвольного источника непосредственно во время TLS-хэндшейка. В качестве хранилища сертификатов мы также взяли Tarantool: это позволяет управлять сертификатами извне и обеспечивает крайне быструю отдачу.
Также был реализован отдельный демон, в задачу которого входит регулярное обновление сертификатов, которые были выписаны при помощи Let’s Encrypt.
Регистрация личного кабинета
Выделение пользователю отдельной ячейки на сервере «Облако Mail.ru» осуществляется после создания им почтового ящика. При создании персонального аккаунта на сайте Mail.ru необходимо заполнить следующую информацию:
- Ф.И.О.;
- пол;
- дата рождения;
- пользовательское имя.
Обязательно следует придумать пароль, с помощью которого станет возможно открытие почты. При создании кода-ключа к странице желательно использовать цифры и буквы в разных раскладках, что повысит надежность созданной комбинации.
После завершения регистрации в системе пользователю необходимо поочередно кликнуть по следующим вкладкам:
- «Настроить»;
- «Приступить к работе»;
- «Все проекты»;
- «Продолжить».
Следующим этапом регистрации кабинета на «Облаке Mail.ru» станет выбор операционной системы. Именно на нее будет скачена необходимая для полноценной работы программа «Диск-О». Далее кликают по закладке «Запустить» и можно приступать к работе!
Возможности и преимущества работы с сервисом
Эпоха флешек и дисков давно прошла — теперь не нужно носить с собой массу устройств для того, чтобы получить доступ к своим данным или поделиться ними с кем-то. Сервис дает возможность доступа к данным и управления ними с каждого девайса и любой мобильной платформы — Windows, Linux 64-bit, Linux 32-bit, MacOS, Android, iOS и WinPhone. Функционал оптимизирован и корректно работает на любых, даже самых старых девайсах.
Компания гарантирует стабильно высокую скорость загрузки и скачивания данных. Сервис не экономит на своих пользователях и никоим образом не ограничивает скорость передачи данных. Она меняется только в зависимости от типа подключения и качества работы провайдера.
Пользуясь услугой, вы можете быть уверены в том, что все ваши файлы защищены от несанкционированного доступа. Это гораздо более надежный способ хранения данных, чем физические носители. Если у вас внезапно выйдет из стоя устройство, на котором вы храните данные, их можно и не восстановить. Если же вложения хранятся в облаке, вы можете с легкостью перенести их на любое устройство, которое подключите к сервису. Для того, чтобы вернуть все файлы, вы можете просто войти в Облако Майл ру и создать на устройстве папку и синхронизировать ее с облачным хранилищем. Сервис ответственно относится к тем данным, которые вы доверяете сервису. Именно поэтому компания создает резервные копии всех файлов на случай, если один из дата-центров выйдет из строя. Именно поэтому компания может гордиться качеством предоставления услуг.
Настройки облака Мэйл ру на Windows
Есть два вида настроек, с которыми обязательно ознакомиться перед началом полноценной работы с облачным хранилищем:
- Настройки диска;
- Настройки программы;
В настройках диска можно указать:
- Букву, которая будет отображаться в моем компьютере и использоваться для офлайн отображения файлов в windows;
- Имя диска, отображаемое там же;
- А так же при необходимости, можно поставить галочку на пункте «Сохранять в папке «Удаленные». Это позволит восстановить файлы, если они будут удалены случайно;
- При нажатии на кнопку «Отключить», диск будет отключен на компьютере. Его можно в любой момент включить.
При открытии настроек офлайн доступа, откроется окно, в котором можно птичкой отметить файлы и папки, которые можно просматривать без доступа к интернету. Они после этого будут занимать память компьютера.
При нажатии на настройки программы, откроется меню, где можно открыть и ознакомиться с любой интересующей информацией или перейти в сами настройки.
Здесь можно указать следующие параметры:
- Включить или отключить автозагрузку облака при запуске Windows;
- Подключение ускорения загрузки файлов в облако или с него;
- Сохранять файлы, с которыми часто производится работа в облачном хранилище, на компьютере, для удобства их постоянного использования;
- Так же можно указать какое количество памяти на жестком диске можно отвести, для хранения частых файлов и путь, куда эти файлы будут сохраняться;
- Внизу окна настроек можно выбрать язык, на котором будут отображаться все окна программы.
Так же вверху основного окна есть кнопка «Добавить диск», при нажатии на которую можно добавить любое другое облачное хранилиoе и использовать его совместно с mail.ru cloud.
Важно: внимательно отнеситесь ко всем настройкам. В дальнейшем это может сильно упростить работу
Скачка и загрузка файлов на облако mail.ru через приложение Windows
Чтобы скачать файл с облака или загрузить что-то на него, достаточно открыть папку облака mail в windows одним из рассмотренных ранее способов. После этого дальнейшие действия ничем не отличаются от обычного копирования на флешку. Загруженные файлы или папки будут автоматически отображаться в аккаунте на сайте mail.ru.