Как размещение данных в различных стойках помогает использовать тот факт, что совокупная пропускная способность внутри стойки > = полоса пропускания между стойками?
Снимок исследовательского документа GFS
там говорится, что (моя интерпретация после прочтения исследовательской работы и ее обзоров) «пропускная способность между стойками ниже, чем агрегированная полоса пропускания внутри стойки (не уверен, что имеется в виду под агрегированной, это не имеет особого смысла в сравнении). Таким образом, путем размещения Данные между различными стойками, клиенты могут использовать совокупную пропускную способность при чтении с различных дорожек. Например, как? Мой вопрос. Если вы размещаете данные в разных стойках, как вы можете использовать совокупную пропускную способность внутри стойки?
в случае мутаций, когда клиент должен отправлять данные, использование нескольких стоек невыгодно, поскольку данные должны перемещаться на большие расстояния.»..
Я не понимаю, что он пытается сказать о пропускной способности. может кто-нибудь объяснить? Почему чтение и запись будут разными? Я понимаю, напиши. Поскольку вы пишете на расстоянии =0, то, если вам нужно писать на расстоянии =1000, вашим данным придется перемещаться на большее расстояние. Но почему это полезно читать?
Некоторая справочная информация:
Стойка означает набор серверов фрагментов (30-40).
Серверы фрагментов представляют собой набор фрагментов размером 64 МБ.
Чанки — это набор блоков размером 64 КБ.
Вот архитектура GFS:Архитектура GFS.
Ссылка-:
- https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf
- https://www.cnblogs.com/fxjwind/archive/2012/07/17/2595494.html
- https://csjourney.com/google-file-system-paper-explained-summary-part-3/
Другие источники-:
Что написано в некоторых руководствах по решениям, которые я видел в Интернете:
Проще говоря, у вас есть несколько копий каждого фрагмента, поэтому вы можете прочитать один из них откуда угодно, но вам нужно писать во все из них повсюду.
Но могут быть сценарии, когда вам нужно путешествовать и тратить много трафика на чтение, а его может не быть на месте. Плюс в этих системах есть некоторая настраиваемая согласованность. Вы не можете просто читать с 1 места и отправлять результаты клиенту. Вам нужно читать из нескольких мест.
В другом блоге был приведен этот пример, но я не совсем понял его, хотя я хорошо разбираюсь в курсах по сетевым технологиям для студентов:
Допустим, у вас в стойке 10 серверов фрагментов, все с дисками NVMe, обеспечивающими скорость до 3200 МБ/с. Суммарная скорость (чтение со всех серверов фрагментов в стойке одновременно) составит 32000 МБ/с. Теперь, если межстоечная сеть SFP+, то она может обеспечить только 10 Гбит/с, что меньше совокупной пропускной способности.
Это для идеальных условий на одной стойке. Допустим, в кластере 10 стоек и вся сеть SFP+. Тогда клиент по-прежнему сможет потреблять только 10 Гбит/с, но при распределении операций чтения по всем стойкам средняя скорость составит 1 Гбит/с на стойку. Кроме того, учитывая, что топология может быть неравномерной и некоторые стойки могут иметь большую задержку, чем другие, для этого клиента клиент может выбрать стойку с наименьшей задержкой («ближайшую» в статье), чтобы выполнять большую часть чтения.
Другой блог пишет следующее:
Больше копий данных увеличивает максимально возможную пропускную способность чтения. Но большее количество копий данных не увеличивает пропускную способность записи.
Какая пропускная способность здесь, в GFS? Как это определяется? Я думаю, что пропускная способность — это объем данных, которые могут быть переданы с сетевого оборудования за раз. Похоже, что блог пытается сказать одно и то же: «читай откуда угодно, пиши везде», но используемый термин пропускной способности меня сбивает с толку.
В другом сообщении в блоге написано следующее:
Обычно серверы в одной стойке подключаются с помощью коммутатора в верхней части стойки, который подключается к каждому серверу в этой стойке. Серверы в стойке смогут взаимодействовать друг с другом на скорости своего интерфейса, и все они смогут делать это одновременно. Верхняя часть коммутатора стойки будет далее подключаться к основному коммутатору с использованием соединений с высокой пропускной способностью. Основной коммутатор подсоединяется ко всем остальным коммутаторам в верхней части стойки. Но обычно скорость соединения с коммутатором ядра будет меньше суммы скоростей соединения с каждым сервером в стойке.
В результате пропускная способность, доступная серверам в одной стойке, выше, чем пропускная способность для связи с серверами за пределами этой стойки. (Это не всегда так. Facebook строит сеть таким образом, чтобы пропускная способность между стойками была такой же, как и полоса пропускания внутри стойки. Это обеспечивает гибкость за счет энергоэффективности.)
Он действительно реализует трехуровневую концепцию принципов проектирования: ядро, уровень доступа и уровень распределения. Где основной коммутатор имеет максимально возможную скорость. Но агрегированные коммутаторы распределения/доступа также могут иметь большую скорость, чем скорость основного коммутатора. И что, я не понимаю.
Как чтение использует совокупную пропускную способность нескольких операций чтения (согласно исследовательской работе), когда мы помещаем данные в несколько блоков? Для меня это не имеет особого смысла и сбивает с толку.