Привет всем, я Сяо ❤, 985-ненаучный программист, который много лет скитается по миру. Я работал в сфере backend-разработки государственных предприятий, интернет-гигантов и стартап-компаний.
Сяо❤ недавно обнаружил, что многие певцы, которые мне нравились в средней и старшей школе, начали взимать плату за свои песни на крупных музыкальных библиотеках.
Например, мне раньше нравился музыкальный талант VAE, будь то карниз небольшого мостика под ночной Цзяннань, или ресторанчик в глуши с ярким фейерверком, мешающим посетителям спать, или потрясающая сторона, где фиолетовый дым ароматно витает и выглядит как тень.
Эти трогательные мелодии вдруг задержатся в моей памяти в сумерках после сна или утром после сильного дождя и долго не смогут уйти.
Не знаю, скучаю ли я по людям, с которыми раньше слушал песни, или по воспоминаниям юности.
Независимо от того, пропустите вы это или нет, песню вам придется послушать, а пополнить членство невозможно 🐶
Итак, будучи умным (pinqiong), я начал искать бесплатные ресурсы на основных платформах. Я должен сказать, что Интернет — действительно великое изобретение. Пока есть электричество и доступ к Интернету, не существует ресурсов, которые нельзя было бы найти.
Особенно хороша система сетевых дисков при совместном использовании ресурсов!
PS: Если вам нравятся песни VAE, вы можете бесплатно получить ресурсы песен с сетевого диска в конце статьи. Не стесняйтесь забрать их себе.
Я считаю, что каждый использовал сетевые диски — от хранения фотографий до обмена рабочими документами — они стали неотъемлемой частью нашей жизни.
Но вам когда-нибудь было интересно, какая конструкция системы поддерживает эти функции? Сегодня мы обсудим архитектурный проект сетевой дисковой системы.
Baidu Netdisk — это популярное облачное хранилище и платформа для обмена файлами с более чем 800 миллионами пользователей и емкостью хранилища до 10 Вт+ПБ.
В этой статье мы углубимся в основные функции системы Baidu Netdisk и способы решения проблем, которые могут возникнуть из-за высокого уровня параллелизма и большого объема хранилища.
Системная конструкция Baidu Netdisk использует распределенную архитектуру, позволяющую справиться с огромным количеством пользователей и огромными потребностями в хранении данных. Основные компоненты включают в себя:
В системах хранения, таких как сетевые диски, каждый день генерируется и передается большой объем данных.
На примере Baidu Netdisk к концу 2022 года количество пользователей превысило 800 миллионов, а емкость хранилища уже превысила 100 000+ПБ (т.е. 1000+100 миллионов ГБ).
Таким образом, проектирование сетевой дисковой системы сталкивается со следующими проблемами.
В настоящее время у Baidu Netdisk более 800 миллионов пользователей. Максимальная емкость хранилища для обычных пользователей составляет 1 ТБ. Емкость хранилища рассчитывается как 100 миллиардов ГБ. Средний объем хранилища составляет почти 100+ ГБ [1000 ГБ/8]. Использование Ставка составляет 10%.
Если принять ежедневный активный объем Baidu Netdisk равным 200 миллионам, то ежедневные активные пользователи составляют около 25%, и каждый пользователь обращается к Netdisk в среднем 4 раза.
Таким образом, количество запросов в секунду сетевой дисковой системы составляет около 10 000 [200 миллионов пользователей*4 раза/(24*3600 секунд)], а пиковый период в два раза превышает среднее количество запросов в секунду, которое составляет 20 000.
Предположим, что средний размер файла, последний раз загруженного пользователем,равен 2MB,пропускная способность сетинагрузкаок. 18 ГБ/с (200 миллионов*4*2М/(24*3600*1024Г)), то есть 144 Гбит/с. Пиковая пропускная способность трафика примерно средняя. 2 раз, примерно 288Gb/s。
Общие функции включают в себя следующее:
Разработанная в настоящее время сетевая дисковая система должна отвечать следующим требованиям:
Пользователь может загрузить файлы с клиента сетевого диска или через веб-интерфейс.,После того, как запрос на загрузку проходит через уровень клиентского приложения,Для обеспечения надежности Загрузка больших файлов,В зависимости от размера файла мы можем,Загружайте файлы частями.
Затем клиент вызывает микросервис приложения для обработки основных данных файла (метаданных) и содержимого файла и асинхронно загружает метаданные и данные содержимого файла соответственно.
Когда пользователь запрашивает загрузку файла, клиентский уровень отправляет запрос микросервису приложения.
Чтобы увеличить скорость загрузки, фрагменты файлов можно одновременно загружать с сервера, затем собирать на клиенте и возвращать на пользовательское устройство.
Пользователи могут делиться файлами или папками с друзьями. При совместном использовании они могут указать разрешения только для чтения или хранения для друзей, а также указать ограничение по времени для обмена файлами.
Пользователи могут перемещать файлы и папки в ссылкамивыходить,проходитьОбмен ссылкамииз Разрешения По умолчанию — передача Разрешения,Область общего доступа может быть общедоступной, частной или ограничена определенными пользователями.
Потому что реляционные базы данных, такие как MySQL, не подходят для хранения больших файлов данных, а файловые системы, такие как HDFS и Ceph, очень медленны при запросе данных.
Поэтому мы разделяем данные файла на метаданные и содержимое файла и храним их отдельно, где:
Отвечающая за ответ на запросы метаданных и содержимого файлов, она также разделена на две системы: управление метаданными файлов (FMM) и управление содержимым файлов (FCM).
Схема архитектуры выглядит следующим образом:
Поскольку пользовательские файлы могут включать в себя большие файлы, такие как видео и аудио, Ceph не подходит для хранения больших файлов, поэтому мы разделяем содержимое загруженного файла и разделяем большой файл на множество маленьких блоков (блоков), чтобы лучше загружать и скачивать большие файлы документа. .
Это также имеет то преимущество, что когда большие файлы загружаются и скачиваются частями, эти фрагменты файлов могут обрабатываться одновременно, а затем файлы собираются на стороне SDK для ускорения передачи файлов. Более того, когда сеть пользователя отключена, нам нужно только повторно передать оставшиеся блоки файлов для достижения функции возобновления точки останова.
Временная диаграмма Загрузки файла выглядит следующим образом:
После того, как пользователь загружает файл, клиентское приложение делит файл на блоки в соответствии с размером файла, загружаемого пользователем. Предполагается, что блок генерируется каждые 8M, а затем загружается информация о значении MD5, соответствующая блоку. в систему управления метаданными (FMM).
FMM определяет, дублируются ли значения MD5 через загруженный черный список. Если это новые блоки файлов MD5, им присваивается идентификатор и они сохраняются в таблице метаданных для каждого файла.
Затем FMM генерирует токен доступа и возвращает его клиенту вместе со списком BlockId и списком доступных серверов FMM.
Когда клиент получает ответ от FMM, он сравнивает значение MD5, чтобы определить, какую информацию о блоке файла необходимо загрузить. Затем вместе с токеном, идентификатором блока файлов и содержимым блока файлов, которые необходимо загрузить, они одновременно передаются в каждый доступный узел FMM, а реальные блоки файлов сохраняются в системе хранения объектов Ceph.
Когда клиент запрашивает FCM со списком идентификаторов блоков, чтобы гарантировать, что идентификатор блока поступает из FMM и не подделывается пользователем, обычно FCM необходимо снова вызвать FMM для аутентификации пользователя.
Однако ради общей простоты архитектуры мы используем кэш-токен вместо внутренних вызовов API. С одной стороны, это уменьшает взаимодействие с системой, а с другой — повышает общую скорость ответа.
Временная диаграмма Загрузки файла выглядит следующим образом:
Когда пользователь загружает файл, клиент передает имя файла, пользователя и другую информацию для получения метаданных файла, полученных FMM.
Затем сервер FMM запрашивает список файлов BlockId соответствующего пользователя из MySQL, получает доступный список серверов FMM из ZK, генерирует токен доступа из Redis, а затем возвращает его клиенту.
Клиент одновременно вызывает сервер FCM для загрузки блока файла на основе списка серверов FCM и информации списка блоков ответов. Когда все блоки файлов загружены, клиент собирает блок файлов в полный файл и возвращает его на пользовательское устройство.
При проектировании сетевого диска, учитывая большое количество пользователей и емкость системы хранения, мы добавили в кластер систему приложений и сервер хранения, а также интегрировали балансировку нагрузки, сервисный шлюз и другую инфраструктуру для обеспечения аварийного переключения, высокой доступности и эластичного масштабирования. . и другие способности.
И по памяти, пропускная способность сетиизсоображения стоимости,Мы не можем просто добавлять машины, чтобы обеспечить скорость загрузки и скачивания пользователей.,и исходя из коммерческих соображений,Мы можем ограничить скорость обычных пользователей, не являющихся участниками.
Конкретная реализация такова: когда клиент запрашивает систему FMM для выполнения задачи загрузки или выгрузки, мы сначала получаем тип пользователя. Если это гражданский пользователь, мы можем соответствующим образом уменьшить количество серверов при возврате списка. Узлы FCM, доступные клиенту.
Например, VIP-пользователи могут использовать 50 серверов для загрузки и скачивания одновременно, в то время как обычным пользователям выделяется только 5 серверов для загрузки и скачивания файлов.
Поскольку статус совместного использования файлов на сетевых дисках можно изменять в режиме реального времени, мы используем идею RBAC (Role-Based Access Control) для управления разрешениями пользователей на доступ к файлам.
Разрешения Связанныйиздизайн столаследующее:
С помощью механизма RBAC мы можем легко управлять разрешениями пользователей на ресурсы, назначать разрешения на основе ролей и отзывать разрешения при необходимости.
Понятно RBAC Приходите за контролем разрешений, регистрируем аккаунт и загружаем файлы в Поделитесь с Бизнес-процесс друзей выглядит следующим образом:
Общий процесс аналогичен обмену файлами с друзьями, с той лишь разницей, что при вставке записей в таблицу разрешений вы можете установить права доступа к файлам для общего доступа и для соответствующих пользователей равными NULL. По умолчанию все пользователи могут получать доступ к файлам и передавать их.
insert into permission (file_id, role_id, user_id) values («Идентификатор общего файла», «Идентификатор публичной роли», NULL)
Таким образом, когда пользователь обращается к файлу, определяется, что разрешение файла является общедоступным, и к общему файлу можно получить доступ или передать его.
Когда владелец или администратор ресурса решает отозвать разрешения пользователя или роли на ресурсе, система удалит соответствующие записи разрешений.
Конкретная реализация находится в Permission В таблицу добавляется индивидуальное поле срока действия, когда пользователь делится файлом с другом или создает Обмен. ссылками, вам необходимо установить конкретный срок действия.
Файловая система может включать запланированные задачи для регулярной очистки просроченных разрешений, чтобы гарантировать, что пользователи смогут получить доступ к файлам только в течение срока действия.
Если вы установили бессрочный доступ к ссылке, вы можете установить срок действия на определенный момент времени в прошлом.
Когда пользователь удаляет файл, нам сначала нужно получить список заблокированных файлов через интерфейс FMM, затем удалить информацию метаданных, чтобы освободить место для хранения пользователя, и в то же время передать список заблокированных удаленных файлов в FCM через очередь сообщений. чтобы удалить содержимое файла.
Чтобы обеспечить согласованность транзакций элементов файла и содержимого файла,Мы используем распределенные транзакцииизуведомление о лучших усилияхМысль。
Конкретная реализация: Добавление системы мониторинга и сигнализации. Если содержимое файла не удается удалить, администратор может быть уведомлен по SMS или электронной почте, чтобы он вручную обработал рассинхронизированные данные.
Для пользователей метаданные файла больше не видны, поэтому содержимое файла и метаданные файла должны только обеспечить конечную согласованность.
Студенты, которые не понимают распределение и конечную согласованность, могут прочитать мою предыдущую статью.,Объясните простыми словами: теория распределения, CAP и BASE.
В настоящее время рынок Интернета является высококонкурентным, и сфера сетевых дисков не является исключением.
В Китае существует множество поставщиков сетевых дисков, таких как Baidu Cloud Disk, Tencent Weiyun, 360 Cloud Disk и т. д., но Baidu Cloud Disk по-прежнему остается единственным поставщиком с долей рынка более 80%.
Источник данных: Сеть отчетов Гуаньян.
в настоящий момент,индивидуальный Болевые точки использования Rennetdisk сосредоточены вСкорость, безопасность, совместное использованиеиценаЧетыреиндивидуальныйуровень。Качественный сервис для пользователейи Плата за опытиз Значительное увеличение готовности,Так сделай это хорошоУправление и монетизация VIP-платных участников,Это стало основным направлением коммерциализации личности.
Однако, как человек, который редко перезаряжает VIP сетевого диска, я считаю, что обычные пользователи составляют самую большую группу, поэтому я надеюсь, что приложения сетевых дисков также смогут учитывать опыт гражданских пользователей при коммерциализации.