При архитектуре файлового сервера сервер не участвует в обработке данных
Обновлено: 21.11.2024
Приложения для крупномасштабной обработки данных часто координируют работу нескольких компьютеров. Распределенное вычислительное приложение — это приложение, в котором несколько взаимосвязанных, но независимых компьютеров координируют свои действия для выполнения совместных вычислений.
Разные компьютеры независимы в том смысле, что они не совместно используют память напрямую. Вместо этого они общаются друг с другом с помощью сообщений — информации, передаваемой с одного компьютера на другой по сети.
4.5.1 Сообщения
Сообщения, отправляемые между компьютерами, представляют собой последовательности байтов. Цель сообщения варьируется; сообщения могут запрашивать данные, отправлять данные или указывать другому компьютеру оценить вызов процедуры. Во всех случаях компьютер-отправитель должен кодировать информацию таким образом, чтобы компьютер-получатель мог ее декодировать и правильно интерпретировать. Для этого компьютеры используют протокол сообщений, который наделяет смыслом последовательности байтов.
Протокол сообщений – это набор правил кодирования и интерпретации сообщений. И отправляющий, и принимающий компьютеры должны согласовать семантику сообщения, чтобы обеспечить успешную связь. Многие протоколы сообщений определяют, что сообщение соответствует определенному формату, в котором определенные биты в фиксированных позициях указывают фиксированные условия. Другие используют специальные байты или последовательности байтов для разграничения частей сообщения, подобно пунктуации, разделяющей подвыражения в синтаксисе языка программирования.
Протоколы сообщений не являются отдельными программами или программными библиотеками. Напротив, это правила, которые могут применяться различными программами, даже написанными на разных языках программирования. В результате компьютеры с совершенно разными программными системами могут участвовать в одной и той же распределенной системе просто за счет соответствия протоколам сообщений, которые управляют системой.
Протоколы TCP/IP. В Интернете сообщения передаются с одного компьютера на другой с использованием Интернет-протокола (IP), который указывает, как передавать пакеты данных между различными сетями, чтобы обеспечить глобальную связь через Интернет. IP был разработан исходя из предположения, что сети по своей природе ненадежны в любой точке и динамичны по своей структуре. Более того, он не предполагает, что существует какое-либо централизованное отслеживание или мониторинг связи. Каждый пакет содержит заголовок, содержащий IP-адрес назначения, а также другую информацию. Все пакеты пересылаются по сети к месту назначения с использованием простых правил маршрутизации с максимальной эффективностью.
Этот дизайн накладывает ограничения на общение. Пакеты, передаваемые с использованием современных реализаций IP (IPv4 и IPv6), имеют максимальный размер 65 535 байт. Большие значения данных должны быть разделены между несколькими пакетами. IP не гарантирует, что пакеты будут получены в том же порядке, в котором они были отправлены. Некоторые пакеты могут быть потеряны, а некоторые пакеты могут передаваться несколько раз.
Протокол управления передачей – это абстракция, определяемая в терминах IP, которая обеспечивает надежную упорядоченную передачу произвольно больших потоков байтов. Протокол обеспечивает эту гарантию, правильно упорядочивая пакеты, передаваемые IP, удаляя дубликаты и запрашивая повторную передачу потерянных пакетов. Эта повышенная надежность достигается за счет задержки, времени, необходимого для отправки сообщения из одной точки в другую.
TCP разбивает поток данных на сегменты TCP, каждый из которых включает часть данных, которым предшествует заголовок, содержащий информацию о последовательности и состоянии для обеспечения надежной упорядоченной передачи данных. Некоторые сегменты TCP вообще не содержат данных, а вместо этого устанавливают или разрывают соединение между двумя компьютерами.
Установление соединения между двумя компьютерами A и B выполняется в три этапа:
- A отправляет запрос на порт B для установления TCP-соединения, предоставляя номер порта куда отправить ответ.
- B отправляет ответ на порт, указанный A, и ожидает подтверждения своего ответа.
- A отправляет ответ с подтверждением, подтверждая возможность передачи данных в обоих направлениях.
После этого трехэтапного «рукопожатия» устанавливается TCP-соединение, и A и B могут отправлять данные друг другу. Завершение TCP-соединения происходит в виде последовательности шагов, в которых и клиент, и сервер запрашивают и подтверждают завершение соединения.
4.5.2 Архитектура клиент/сервер
Архитектура клиент/сервер — это способ предоставления услуги из центрального источника. сервер предоставляет службу, а несколько клиентов взаимодействуют с сервером для использования этой службы. В этой архитектуре клиенты и серверы играют разные роли.Роль сервера состоит в том, чтобы отвечать на служебные запросы от клиентов, а роль клиента — выдавать запросы и использовать ответ сервера для выполнения какой-либо задачи. На схеме ниже показана архитектура.
Самое влиятельное использование модели — современная Всемирная паутина. Когда веб-браузер отображает содержимое веб-страницы, несколько программ, работающих на независимых компьютерах, взаимодействуют с использованием архитектуры клиент/сервер. В этом разделе описывается процесс запроса веб-страницы, чтобы проиллюстрировать основные идеи в распределенных системах клиент-сервер.
Клиент сначала запрашивает адрес интернет-протокола (IP) компьютера, расположенного под этим именем, у сервера доменных имен (DNS). DNS предоставляет услугу сопоставления доменных имен с IP-адресами, которые являются числовыми идентификаторами машин в Интернете. Python может сделать такой запрос напрямую, используя модуль socket.
Затем клиент запрашивает содержимое веб-страницы с веб-сервера, расположенного по этому IP-адресу. В этом случае ответ представляет собой HTML-документ, содержащий заголовки и выдержки из новостей дня, а также выражения, указывающие, как клиент веб-браузера должен размещать это содержимое на экране пользователя. Python может сделать два запроса, необходимых для получения этого контента, с помощью модуля urllib.request.
Получив этот ответ, браузер выдает дополнительные запросы на изображения, видео и другие вспомогательные компоненты страницы. Эти запросы инициируются, поскольку исходный HTML-документ содержит адреса дополнительного контента и описание того, как они встраиваются в страницу.
В первой строке текст 200 OK указывает на отсутствие ошибок при ответе на запрос. Последующие строки заголовка содержат информацию о сервере, дате и типе отправляемого содержимого.
Если вы ввели неправильный веб-адрес или нажали неработающую ссылку, вы могли увидеть сообщение об ошибке, подобное этому:
Модульность. Понятия клиент и сервер — мощные абстракции. Сервер предоставляет услугу, возможно, нескольким клиентам одновременно, и клиент потребляет эту услугу. Клиентам не нужно знать подробности того, как предоставляется услуга или как данные, которые они получают, хранятся или вычисляются, а серверу не нужно знать, как будут использоваться его ответы.
В Интернете мы думаем, что клиенты и серверы находятся на разных компьютерах, но даже системы на одном компьютере могут иметь архитектуру клиент/сервер. Например, сигналы от устройств ввода на компьютере должны быть общедоступными для программ, работающих на компьютере. Программы являются клиентами, использующими данные для ввода с помощью мыши и клавиатуры. Драйверы устройств операционной системы — это серверы, принимающие физические сигналы и использующие их в качестве входных данных. Кроме того, центральный процессор (ЦП) и специализированный графический процессор (ГП) часто участвуют в архитектуре клиент-сервер, где ЦП выступает в роли клиента, а ГП — в качестве сервера изображений.
Недостаток клиент-серверных систем заключается в том, что сервер является единственной точкой отказа. Это единственный компонент с возможностью предоставления услуги. Клиентов может быть любое количество, они взаимозаменяемы и могут приходить и уходить по мере необходимости.
Еще один недостаток клиент-серверных систем заключается в том, что вычислительных ресурсов становится недостаточно, если клиентов слишком много. Клиенты увеличивают нагрузку на систему, не выделяя при этом никаких вычислительных ресурсов.
4.5.3 Одноранговые системы
Модель клиент/сервер подходит для ситуаций, связанных с предоставлением услуг. Однако есть и другие вычислительные цели, для которых лучше выбрать более равное разделение труда. Термин одноранговый используется для описания распределенных систем, в которых труд разделен между всеми компонентами системы. Все компьютеры отправляют и получают данные, и все они вносят свой вклад в вычислительную мощность и память. По мере того, как распределенная система увеличивается в размерах, увеличивается ее емкость вычислительных ресурсов. В одноранговой системе все компоненты системы вносят определенную вычислительную мощность и память в распределенные вычисления.
Разделение труда между всеми участниками является отличительной чертой одноранговой системы. Это означает, что одноранговые узлы должны иметь возможность надежно общаться друг с другом. Чтобы гарантировать, что сообщения дойдут до места назначения, одноранговые системы должны иметь организованную сетевую структуру. Компоненты этих систем взаимодействуют друг с другом, чтобы поддерживать достаточную информацию о местонахождении других компонентов для отправки сообщений по назначению.
В некоторых одноранговых системах работа по поддержанию работоспособности сети выполняется набором специализированных компонентов. Такие системы не являются чистыми одноранговыми системами, потому что они имеют разные типы компонентов, выполняющих разные функции. Компоненты, поддерживающие одноранговую сеть, действуют как строительные леса: они помогают сети оставаться на связи, хранят информацию о местонахождении разных компьютеров и помогают новичкам занять свое место в своем районе.
Наиболее распространенными приложениями одноранговых систем являются передача и хранение данных. Для передачи данных каждый компьютер в системе способствует отправке данных по сети. Если конечный компьютер находится по соседству с определенным компьютером, этот компьютер помогает отправлять данные. Для хранения данных набор данных может быть слишком большим, чтобы поместиться на одном компьютере, или слишком ценным, чтобы хранить его только на одном компьютере. Каждый компьютер хранит небольшую часть данных, и может быть несколько копий одних и тех же данных, распределенных по разным компьютерам. Когда компьютер выходит из строя, данные, которые были на нем, могут быть восстановлены из других копий и возвращены, когда придет замена.
Skype, служба голосового и видеочата, является примером приложения для передачи данных с одноранговой архитектурой. Когда два человека на разных компьютерах разговаривают по Skype, их сообщения передаются через одноранговую сеть. Эта сеть состоит из других компьютеров, на которых запущено приложение Skype. Каждый компьютер знает местоположение нескольких других компьютеров по соседству. Компьютер помогает отправить пакет к месту назначения, передавая его соседу, который передает его какому-то другому соседу, и так далее, пока пакет не достигнет места назначения. Skype — это не просто пиринговая система. Лестничная сеть из суперузлов отвечает за вход и выход пользователей из системы, хранение информации о расположении их компьютеров и изменение структуры сети при входе и выходе пользователей.
Составление программ Джона ДеНеро, основанное на учебнике Гарольда Абельсона и Джеральда Джея Сассмана «Структура и интерпретация компьютерных программ», распространяется под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License.
Приложения для крупномасштабной обработки данных часто координируют работу нескольких компьютеров. Распределенное вычислительное приложение — это приложение, в котором несколько взаимосвязанных, но независимых компьютеров координируют свои действия для выполнения совместных вычислений.
Разные компьютеры независимы в том смысле, что они не совместно используют память напрямую. Вместо этого они общаются друг с другом с помощью сообщений — информации, передаваемой с одного компьютера на другой по сети.
4.5.1 Сообщения
Сообщения, отправляемые между компьютерами, представляют собой последовательности байтов. Цель сообщения варьируется; сообщения могут запрашивать данные, отправлять данные или указывать другому компьютеру оценить вызов процедуры. Во всех случаях компьютер-отправитель должен кодировать информацию таким образом, чтобы компьютер-получатель мог ее декодировать и правильно интерпретировать. Для этого компьютеры используют протокол сообщений, который наделяет смыслом последовательности байтов.
Протокол сообщений – это набор правил кодирования и интерпретации сообщений. И отправляющий, и принимающий компьютеры должны согласовать семантику сообщения, чтобы обеспечить успешную связь. Многие протоколы сообщений определяют, что сообщение соответствует определенному формату, в котором определенные биты в фиксированных позициях указывают фиксированные условия. Другие используют специальные байты или последовательности байтов для разграничения частей сообщения, подобно пунктуации, разделяющей подвыражения в синтаксисе языка программирования.
Протоколы сообщений не являются отдельными программами или программными библиотеками. Напротив, это правила, которые могут применяться различными программами, даже написанными на разных языках программирования. В результате компьютеры с совершенно разными программными системами могут участвовать в одной и той же распределенной системе просто за счет соответствия протоколам сообщений, которые управляют системой.
Протоколы TCP/IP. В Интернете сообщения передаются с одного компьютера на другой с использованием Интернет-протокола (IP), который указывает, как передавать пакеты данных между различными сетями, чтобы обеспечить глобальную связь через Интернет. IP был разработан исходя из предположения, что сети по своей природе ненадежны в любой точке и динамичны по своей структуре. Более того, он не предполагает, что существует какое-либо централизованное отслеживание или мониторинг связи. Каждый пакет содержит заголовок, содержащий IP-адрес назначения, а также другую информацию. Все пакеты пересылаются по сети к месту назначения с использованием простых правил маршрутизации с максимальной эффективностью.
Этот дизайн накладывает ограничения на общение. Пакеты, передаваемые с использованием современных реализаций IP (IPv4 и IPv6), имеют максимальный размер 65 535 байт.Большие значения данных должны быть разделены между несколькими пакетами. IP не гарантирует, что пакеты будут получены в том же порядке, в котором они были отправлены. Некоторые пакеты могут быть потеряны, а некоторые пакеты могут передаваться несколько раз.
Протокол управления передачей – это абстракция, определяемая в терминах IP, которая обеспечивает надежную упорядоченную передачу произвольно больших потоков байтов. Протокол обеспечивает эту гарантию, правильно упорядочивая пакеты, передаваемые IP, удаляя дубликаты и запрашивая повторную передачу потерянных пакетов. Эта повышенная надежность достигается за счет задержки, времени, необходимого для отправки сообщения из одной точки в другую.
TCP разбивает поток данных на сегменты TCP, каждый из которых включает часть данных, которым предшествует заголовок, содержащий информацию о последовательности и состоянии для обеспечения надежной упорядоченной передачи данных. Некоторые сегменты TCP вообще не содержат данных, а вместо этого устанавливают или разрывают соединение между двумя компьютерами.
Установление соединения между двумя компьютерами A и B выполняется в три этапа:
- A отправляет запрос на порт B для установления TCP-соединения, предоставляя номер порта куда отправить ответ.
- B отправляет ответ на порт, указанный A, и ожидает подтверждения своего ответа.
- A отправляет ответ с подтверждением, подтверждая возможность передачи данных в обоих направлениях.
После этого трехэтапного «рукопожатия» устанавливается TCP-соединение, и A и B могут отправлять данные друг другу. Завершение TCP-соединения происходит в виде последовательности шагов, в которых и клиент, и сервер запрашивают и подтверждают завершение соединения.
4.5.2 Архитектура клиент/сервер
Архитектура клиент/сервер — это способ предоставления услуги из центрального источника. сервер предоставляет службу, а несколько клиентов взаимодействуют с сервером для использования этой службы. В этой архитектуре клиенты и серверы играют разные роли. Роль сервера состоит в том, чтобы отвечать на служебные запросы от клиентов, а роль клиента — выдавать запросы и использовать ответ сервера для выполнения какой-либо задачи. На схеме ниже показана архитектура.
Самое влиятельное использование модели — современная Всемирная паутина. Когда веб-браузер отображает содержимое веб-страницы, несколько программ, работающих на независимых компьютерах, взаимодействуют с использованием архитектуры клиент/сервер. В этом разделе описывается процесс запроса веб-страницы, чтобы проиллюстрировать основные идеи в распределенных системах клиент-сервер.
Клиент сначала запрашивает адрес интернет-протокола (IP) компьютера, расположенного под этим именем, у сервера доменных имен (DNS). DNS предоставляет услугу сопоставления доменных имен с IP-адресами, которые являются числовыми идентификаторами машин в Интернете. Python может сделать такой запрос напрямую, используя модуль socket.
Затем клиент запрашивает содержимое веб-страницы с веб-сервера, расположенного по этому IP-адресу. В этом случае ответ представляет собой HTML-документ, содержащий заголовки и выдержки из новостей дня, а также выражения, указывающие, как клиент веб-браузера должен размещать это содержимое на экране пользователя. Python может сделать два запроса, необходимых для получения этого контента, с помощью модуля urllib.request.
Получив этот ответ, браузер выдает дополнительные запросы на изображения, видео и другие вспомогательные компоненты страницы. Эти запросы инициируются, поскольку исходный HTML-документ содержит адреса дополнительного контента и описание того, как они встраиваются в страницу.
В первой строке текст 200 OK указывает на отсутствие ошибок при ответе на запрос. Последующие строки заголовка содержат информацию о сервере, дате и типе отправляемого содержимого.
Если вы ввели неправильный веб-адрес или нажали неработающую ссылку, вы могли увидеть сообщение об ошибке, подобное этому:
Модульность. Понятия клиент и сервер — мощные абстракции. Сервер предоставляет услугу, возможно, нескольким клиентам одновременно, и клиент потребляет эту услугу. Клиентам не нужно знать подробности того, как предоставляется услуга или как данные, которые они получают, хранятся или вычисляются, а серверу не нужно знать, как будут использоваться его ответы.
В Интернете мы думаем, что клиенты и серверы находятся на разных компьютерах, но даже системы на одном компьютере могут иметь архитектуру клиент/сервер.Например, сигналы от устройств ввода на компьютере должны быть общедоступными для программ, работающих на компьютере. Программы являются клиентами, использующими данные для ввода с помощью мыши и клавиатуры. Драйверы устройств операционной системы — это серверы, принимающие физические сигналы и использующие их в качестве входных данных. Кроме того, центральный процессор (ЦП) и специализированный графический процессор (ГП) часто участвуют в архитектуре клиент-сервер, где ЦП выступает в роли клиента, а ГП — в качестве сервера изображений.
Недостаток клиент-серверных систем заключается в том, что сервер является единственной точкой отказа. Это единственный компонент с возможностью предоставления услуги. Клиентов может быть любое количество, они взаимозаменяемы и могут приходить и уходить по мере необходимости.
Еще один недостаток клиент-серверных систем заключается в том, что вычислительных ресурсов становится недостаточно, если клиентов слишком много. Клиенты увеличивают нагрузку на систему, не выделяя при этом никаких вычислительных ресурсов.
4.5.3 Одноранговые системы
Модель клиент/сервер подходит для ситуаций, связанных с предоставлением услуг. Однако есть и другие вычислительные цели, для которых лучше выбрать более равное разделение труда. Термин одноранговый используется для описания распределенных систем, в которых труд разделен между всеми компонентами системы. Все компьютеры отправляют и получают данные, и все они вносят свой вклад в вычислительную мощность и память. По мере того, как распределенная система увеличивается в размерах, увеличивается ее емкость вычислительных ресурсов. В одноранговой системе все компоненты системы вносят определенную вычислительную мощность и память в распределенные вычисления.
Разделение труда между всеми участниками является отличительной чертой одноранговой системы. Это означает, что одноранговые узлы должны иметь возможность надежно общаться друг с другом. Чтобы гарантировать, что сообщения дойдут до места назначения, одноранговые системы должны иметь организованную сетевую структуру. Компоненты этих систем взаимодействуют друг с другом, чтобы поддерживать достаточную информацию о местонахождении других компонентов для отправки сообщений по назначению.
В некоторых одноранговых системах работа по поддержанию работоспособности сети выполняется набором специализированных компонентов. Такие системы не являются чистыми одноранговыми системами, потому что они имеют разные типы компонентов, выполняющих разные функции. Компоненты, поддерживающие одноранговую сеть, действуют как строительные леса: они помогают сети оставаться на связи, хранят информацию о местонахождении разных компьютеров и помогают новичкам занять свое место в своем районе.
Наиболее распространенными приложениями одноранговых систем являются передача и хранение данных. Для передачи данных каждый компьютер в системе способствует отправке данных по сети. Если конечный компьютер находится по соседству с определенным компьютером, этот компьютер помогает отправлять данные. Для хранения данных набор данных может быть слишком большим, чтобы поместиться на одном компьютере, или слишком ценным, чтобы хранить его только на одном компьютере. Каждый компьютер хранит небольшую часть данных, и может быть несколько копий одних и тех же данных, распределенных по разным компьютерам. Когда компьютер выходит из строя, данные, которые были на нем, могут быть восстановлены из других копий и возвращены, когда придет замена.
Skype, служба голосового и видеочата, является примером приложения для передачи данных с одноранговой архитектурой. Когда два человека на разных компьютерах разговаривают по Skype, их сообщения передаются через одноранговую сеть. Эта сеть состоит из других компьютеров, на которых запущено приложение Skype. Каждый компьютер знает местоположение нескольких других компьютеров по соседству. Компьютер помогает отправить пакет к месту назначения, передавая его соседу, который передает его какому-то другому соседу, и так далее, пока пакет не достигнет места назначения. Skype — это не просто пиринговая система. Лестничная сеть из суперузлов отвечает за вход и выход пользователей из системы, хранение информации о расположении их компьютеров и изменение структуры сети при входе и выходе пользователей.
Составление программ Джона ДеНеро, основанное на учебнике Гарольда Абельсона и Джеральда Джея Сассмана «Структура и интерпретация компьютерных программ», распространяется под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License.
Способ, которым сочетаются три основных компонента подхода к базе данных, а также роль сети и местоположение пользователя, приводят к принципиально разным архитектурам баз данных. Каждая из этих архитектур имеет свои преимущества и недостатки, которые могут быть более или менее важными для данной информационной системы.
Архитектура мейнфреймов
Самые ранние реализации подхода к разработке систем на базе баз данных использовали то, что мы сейчас называем архитектурой мэйнфреймов. Показано на рисунке 1.3, он характеризуется тем, что СУБД, данные и приложение размещены на одном вычислительном устройстве с доступом, предоставляемым пользователям через терминалы. Эти терминалы иногда называют «тупыми терминалами», потому что они не обладают вычислительной мощностью. Они обеспечивают только отображение приложения и ввод данных с клавиатуры в приложение; приложение хранится в памяти и полностью обрабатывается на центральном компьютере. Более мощный персональный компьютер может выполнять роль терминала в этой архитектуре, если на нем запущена программа эмуляции терминала. В этом случае мейнфрейм взаимодействует с персональным компьютером, как если бы это был обычный терминал. На том же мейнфрейме работает СУБД, а данные хранятся таким образом, что мейнфрейм имеет к ним быстрый прямой доступ.
Сеть используется только для подключения терминалов к мейнфрейму. Ввод с клавиатуры отправляется с терминала в прикладное программное обеспечение, работающее на мейнфрейме. Затем отображаемые результаты отправляются из прикладного программного обеспечения по сети на терминалы. Природа этой архитектуры допускает одновременное использование сотен или даже тысяч пользователей. Поскольку по сети передается минимум данных, он подходит для сред, в которых недоступны быстрые и недорогие сетевые подключения.
Если пользователь запрашивает информацию, которая требует от СУБД проверки сотен тысяч или даже миллионов записей данных, но в результате получает небольшой набор ответов, по сети отправляется очень мало данных. Даже если результат содержит большой объем данных, прикладное программное обеспечение не будет отправлять по сети больше, чем может быть отображено на экране, пока пользователь не запросит больше. Таким образом, передача данных ограничена относительно скудной способностью людей потреблять данные. В результате ограничения производительности системы обычно связаны либо с вычислительной мощностью мейнфрейма, либо со скоростью доступа к диску. Хотя это не обязательно является характеристикой этой архитектуры, прикладное программное обеспечение обычно использует символьный пользовательский интерфейс, а не графический.
"[Мейнфреймы] в основном используются крупными организациями для быстрой, непрерывной и безопасной обработки и хранения огромных объемов данных. Например, некоторые банки используют мэйнфреймы для управления всеми своими транзакциями. Другие типы организаций, которые, вероятно, мэйнфреймы должны включать страховые компании, магазины розничной торговли, компании, выпускающие кредитные карты, университеты и государственные учреждения.
"На самом деле, мейнфреймы используют 96 из 100 крупнейших банков мира, 9 из 10 крупнейших в мире страховых компаний, 23 из 25 крупнейших розничных продавцов в США и 71 % из списка Fortune 500. По оценкам по всему миру активно используются 10 000 мейнфреймов». 1
Большое количество одновременных пользователей
Способность обрабатывать очень большие объемы транзакций
Подходит для медленных сетевых сред
Центральное расположение приложения и СУБД делает обслуживание относительно простым
Не использует вычислительную мощность локального компьютера
Оборудование относительно дорогое
Архитектура рабочего стола
"Архитектура рабочего стола" похожа на архитектуру мейнфрейма в том смысле, что приложение, СУБД и данные находятся на одном компьютере. Основное отличие заключается в том, что архитектура рабочего стола ограничена одним пользователем и, следовательно, не требует сети. Рисунок 1.4 показывает эту архитектуру. Популярными продуктами баз данных, которые работают в этой архитектуре, являются Microsoft Access, FileMaker Pro, OpenOffice Base и Paradox. Давайте рассмотрим три компонента подхода к базе данных в контексте самой популярной из настольных баз данных — Microsoft Access. В настоящее время Access хранит данные в одном файле с расширением «.accdb». Таким образом, создание базы данных и присвоение ей имени «продажи» приведет к тому, что файл будет называться «продажи.accdb» в файловой системе. Все, что вы видите при работе с Access, — это его прикладное программное обеспечение. Это прикладное программное обеспечение расширяется по мере того, как разработчик создает формы, а затем создает отчеты и дополняет их настраиваемым кодом в виде макросов или модулей кода. СУБД в случае с Access — это программа под названием Microsoft JET Engine. Он устанавливается как часть Access и не является визуальным. Инструменты приложения Access можно использовать с другими ядрами баз данных. Как правило, когда это делается, получается другая архитектура.
Архитектуры рабочего стола хорошо работают в ситуациях, когда люди выполняют свою работу без необходимости подключения к другим пользователям компьютеров. Часто на отдельных домашних компьютерах у людей может быть приложение адресной книги или бюджет в электронной таблице. Офисные приложения, такие как электронные таблицы и текстовые процессоры, являются популярными настольными приложениями, хотя они и не используют технологию баз данных. Простые информационные системы, использующие технологию баз данных, включают в себя такие вещи, как списки клиентов или учетные записи.
Недорогое приобретение
Простота настройки
Для работы требуется мало ресурсов
Доступно только одному пользователю одновременно
Доступно только на одном компьютере
Может налагаться ограничение на объем хранимых данных
Архитектура файлового сервера
"Архитектура файлового сервера" – это обычное развитие системы баз данных, которая начинается с архитектуры рабочего стола, а затем ее необходимо расширить, чтобы она могла одновременно работать с несколькими пользователями. Графически показанный на Рис. 1.5, он характеризуется отделением СУБД от данных сетью. Переход от архитектуры рабочего стола к архитектуре файлового сервера, как правило, очень прост и не требует специальных знаний о базах данных. Однако это существенно ограничивает производительность.
Напоминаем, что СУБД отвечает за управление всеми аспектами данных. В этой архитектуре СУБД теперь должна манипулировать данными по сети. Поскольку скорость передачи данных по сети значительно ниже, чем скорость передачи данных на локальном диске, отделение СУБД от данных создает существенное узкое место. Рассмотрим, что происходит, когда СУБД требуется ответить на информационный запрос, требующий проверки каждой записи в списке клиентов. Предположим, что необходимо изучить один миллион записей о клиентах, и только 100 из них соответствуют критериям, указанным в информационном запросе. В архитектуре мэйнфрейма, где СУБД имеет прямой доступ к данным, она может быстро прочитать все записи и отправить по сети только 100 соответствующих записей. Однако в архитектуре файлового сервера все миллион записей должны быть отправлены по сети для оценки СУБД. СУБД проверяет данные по мере их получения, а затем сохраняет только релевантные данные для отображения пользователю.
Сниженная производительность не ограничивается только пользователем приложения базы данных. Поскольку сеть становится узким местом в этом процессе, все пользователи, которые совместно используют сегменты сети с пользователем приложения базы данных, также будут испытывать сетевые задержки. Кроме того, если другие пользователи, которые совместно используют сегменты сети с пользователем приложения базы данных, активно используют сеть, производительность приложения базы данных будет еще ниже.
Архитектура файлового сервера создает еще одну проблему по сравнению с архитектурой настольного компьютера или мейнфрейма. В обеих этих архитектурах существует одна СУБД, которая управляет хранилищем данных. Однако в архитектуре файлового сервера каждый дополнительный пользователь добавляет еще один экземпляр СУБД для управления данными. Чтобы это работало, СУБД на каждом компьютере должны координировать свои действия друг с другом, чтобы поддерживать целостность и безопасность данных. Например, если один пользователь в настоящее время редактирует информацию о конкретном продукте, экземпляр СУБД, который использует пользователь, должен предупредить другие экземпляры, чтобы они не позволяли другому пользователю редактировать ту же информацию, пока первый пользователь не закончит работу. Этот процесс обычно работает достаточно хорошо; однако проблемы возникают, когда экземпляр СУБД не может предупредить другие экземпляры о том, что его пользователь завершил работу с определенным ресурсом данных, либо из-за проблем с сетевым подключением, либо из-за других проблем операционной системы.
Преимущество этой архитектуры заключается в том, что, обладая очень небольшими знаниями о базах данных, пользователь может настроить приложение базы данных для одновременного использования несколькими пользователями. Основная функция файлового сервера — предоставить нескольким пользователям доступ к хранимым файлам и освободить место для хранения файлового репозитория. Эти серверы особенно популярны в качестве центрального хранилища для внутренних файлов компании, которые важны для отдельных пользователей или могут совместно использоваться несколькими пользователями. Например, инженерная фирма, где приложения работают на настольных компьютерах, но инженерные чертежи используются несколькими инженерами. Инженеры могут делиться чертежами, описаниями, изображениями и даже видео.
Второе основное применение файловых серверов — резервное копирование данных. Хранение резервных копий на файловом сервере — это простой и недорогой способ удовлетворить необходимые требования к хранилищу резервных копий для всех отдельных пользователей в организации.
Несмотря на то, что были приложены все усилия для соблюдения правил стиля цитирования, могут быть некоторые расхождения. Если у вас есть какие-либо вопросы, обратитесь к соответствующему руководству по стилю или другим источникам.
Наши редакторы рассмотрят то, что вы отправили, и решат, нужно ли пересматривать статью.
клиент-серверная архитектура, архитектура компьютерной сети, в которой множество клиентов (удаленных процессоров) запрашивают и получают услуги от централизованного сервера (хост-компьютера). Клиентские компьютеры предоставляют интерфейс, позволяющий пользователю компьютера запрашивать услуги сервера и отображать результаты, возвращаемые сервером. Серверы ждут поступления запросов от клиентов и затем отвечают на них.В идеале сервер предоставляет клиентам стандартизированный прозрачный интерфейс, чтобы клиенты не знали о специфике системы (т. е. аппаратного и программного обеспечения), предоставляющей услугу. Клиенты часто располагаются на рабочих станциях или на персональных компьютерах, а серверы — в других местах сети, обычно на более мощных машинах. Эта вычислительная модель особенно эффективна, когда у клиентов и сервера есть отдельные задачи, которые они регулярно выполняют. Например, при обработке больничных данных на клиентском компьютере может быть запущена прикладная программа для ввода информации о пациенте, в то время как на серверном компьютере запущена другая программа, управляющая базой данных, в которой постоянно хранится информация. Многие клиенты могут одновременно получать доступ к информации сервера, и в то же время клиентский компьютер может выполнять другие задачи, такие как отправка электронной почты. Поскольку и клиентский, и серверный компьютеры считаются независимыми устройствами, модель клиент-сервер полностью отличается от старой модели мэйнфрейма, в которой централизованный мэйнфрейм-компьютер выполнял все задачи для связанных с ним «тупых» терминалов, которые просто обменивались данными с центральным мейнфреймом. .
Редакторы Британской энциклопедии Эта статья была недавно отредактирована и обновлена Эриком Грегерсеном.
В этом посте мы сравниваем архитектуру клиент-сервер с одноранговыми (P2P) сетями и определяем, когда архитектура клиент-сервер лучше, чем P2P. Для тех из вас, кто не хочет тратить несколько минут на чтение статьи, я позволю себе спойлер — одноранговая сеть всегда лучше, чем клиент-сервер.
Чтобы понять почему, давайте сначала рассмотрим некоторые определения и историю между двумя моделями.
Введение в клиент-сервер
Введение в одноранговую сеть (P2P)
Модель одноранговой сети отличается тем, что все хосты имеют одинаковые привилегии и действуют как поставщики и потребители ресурсов, таких как пропускная способность сети и компьютерная обработка. Каждый компьютер считается узлом в системе, и вместе эти узлы образуют сеть P2P. Ранний Интернет был разработан как одноранговая сеть, в которой все компьютерные системы имели одинаковые привилегии, а большинство взаимодействий были двунаправленными. Когда Интернет стал контентной сетью с появлением веб-браузера, переход к клиент-серверной системе произошел немедленно, поскольку основным вариантом использования Интернета стало потребление контента.
Но с появлением первых сетей обмена файлами, основанных на одноранговых архитектурах, таких как Napster (1999 г.), gnutella, kazaa, а позже и BitTorrent, интерес к обмену файлами P2P и одноранговым архитектурам резко возрос. считались уникальными в преодолении очевидных ограничений в системах клиент-сервер. Сегодня эти одноранговые концепции продолжают развиваться внутри предприятия с помощью программного обеспечения P2P, такого как Resilio Sync (ранее BitTorrent Sync), и в новых технологических секторах, таких как блокчейн, биткойн и другие криптовалюты.
Отбросив наши определения, давайте рассмотрим некоторые проблемы, связанные с сетями клиент-сервер.
Доступность
Самая очевидная проблема, с которой сталкиваются все клиент-серверные приложения, — это доступность. В модели с выделенным сервером сервер ДОЛЖЕН быть онлайн и доступен для клиентов в любое время, иначе приложение просто не будет работать. Многие факторы могут повлиять на доступность сервера из-за проблем с программным обеспечением, ошибок операционной системы и аппаратных сбоев. Ошибки маршрутизации и сбои в работе сети также могут повлиять на доступность. На самом деле, с таким количеством вещей, которые могут пойти не так (любая из них может вывести из строя ваш сервер, что приведет к остановке вашего приложения), неудивительно, что значительное количество времени и ресурсов тратится на обеспечение высокой доступности серверов и попытки предвидеть проблемы заранее. . Конкретные отделы, такие как операционный отдел, часто полностью посвящены проблеме доступности, а целые отрасли, такие как сети доставки контента (CDN) и облачные вычисления, были созданы для преодоления ограничений доступности модели клиент-сервер, обычно путем выделения еще большего количества ресурсов для серверная часть модели для обеспечения доступности. Все это увеличивает сложность и стоимость, поскольку высокая доступность требует, чтобы система переключалась на резервное оборудование или поставщика интернет-услуг, если он по какой-либо причине нарушен, чтобы приложение продолжало работать бесперебойно. Эта проблема довольно сложна, так как вам необходимо синхронизировать данные между рабочим сервером и сервером резервного копирования, поддерживать альтернативных поставщиков услуг и заранее правильно планировать обновления программного и аппаратного обеспечения для обеспечения бесперебойной работы службы.
В одноранговой сети каждый клиент также является сервером.Если центральная машина недоступна, услуга может предоставляться любым доступным клиентом или группой клиентов, каждый из которых работает как узел в сети. Одноранговая система найдет лучших клиентов и запросит у них обслуживание. Это обеспечивает доступность службы, которая не зависит от одного компьютера и не требует разработки какого-либо сложного решения высокой доступности.
Если доступность приложений не дает вам спать по ночам, возможно, вам будет интересно узнать больше о высокодоступном одноранговом решении для синхронизации и передачи корпоративных данных в режиме реального времени, посетив Resilio Connect. страница продукта.
Подводя итог, можно сказать, что одноранговые системы по своей природе отказоустойчивы и более доступны, чем системы клиент-сервер. Системы клиент-сервер можно сделать высокодоступными только с большими затратами и дополнительной сложностью.
Высокая нагрузка
Еще одна повторяющаяся проблема с клиент-серверными приложениями – высокая нагрузка или непредвиденная нагрузка на сервер. На самом деле это подмножество проблемы доступности, описанной выше, но ее трудно предвидеть и решить дорого. Чтобы приложение правильно функционировало в модели клиент-сервер, необходимо иметь достаточную мощность на сервере, чтобы удовлетворить требования клиента в любое время. Чем популярнее становится приложение, тем больше появляется клиентов, запрашивающих доступ к серверу. Планирование наихудшего (неожиданный спрос) является серьезной проблемой архитектуры клиент-сервер. Один мощный клиент, который потребляет данные быстрее, чем другие, может потреблять всю сеть, операции с дисками и ЦП сервера. Вы хотите, чтобы все клиенты имели доступ к серверу. Поэтому вам необходимо ограничить клиентов определенными уровнями потребления, чтобы каждый из них мог получить минимальные ресурсы сервера. Такой подход гарантирует, что мощный клиент не нарушит работу других клиентов. Но на самом деле это обычно означает, что файловый сервер всегда обслуживает клиента ограниченно, даже если он не перегружен и может работать быстрее, что является неэффективным распределением ресурсов.
В корпоративных условиях решение проблемы высокой нагрузки обычно означает выделение дополнительных ресурсов серверам, хранилищам и инфраструктуре, например сети. Но когда приложение не пользуется пиковой нагрузкой (95%+ времени), эти дополнительные ресурсы не нужны и, по сути, тратятся впустую. Планирование увеличения нагрузки часто означает крупные капиталовложения в проекты по покупке большего объема хранилища, сети и серверов, что может привести лишь к созданию узкого места в каком-либо другом компоненте системы.
Для сравнения, одноранговые архитектуры преобразуют каждый узел в сервер, который может предоставлять дополнительные услуги. Он обладает тем свойством, что каждый новый пользователь получает дополнительную мощность, помогая органично решать проблемы с высокой нагрузкой. Проблема мощного клиента, потребляющего все ресурсы в модели клиент-сервер, на самом деле является активом в одноранговой модели, где этот одноранговый узел действует как суперузел и может обслуживать другие одноранговые узлы на более высоких уровнях, чем предыдущий. средний узел.
Чтобы понять разницу между этими двумя моделями, в 2008 году по сети BitTorrent ежемесячно перемещалось более 1 ЭБ (экзабайта) данных. В то же время самый популярный потоковый сайт в Интернете (не нужно упоминать название) работал на скорости передачи 1 ЭБ данных каждые 2,4 года. Одна система использует архитектуру клиент-сервер, другая — одноранговую архитектуру.
А Netflix по-прежнему рассылал DVD.
Подводя итог, можно сказать, что одноранговые системы никогда не страдают от проблем с высокой нагрузкой и на самом деле становятся сильнее и эффективнее с ростом спроса.
Масштабируемость
Масштабируемость означает рост вместе с вашим приложением, а модель клиент-сервер представляет собой серьезную проблему. Всем известно, что корпоративные данные не становятся меньше, а количество файлов постоянно увеличивается. Если ваша компания растет, вы добавляете больше пользователей и сотрудников, и все это увеличивает нагрузку на ваши серверы. Масштабирование серверной инфраструктуры в ответ также требует больших капиталовложений, как и планирование пиковой нагрузки.
Каждый сервер необходимо планировать для определенного количества клиентов, которые он будет поддерживать. Когда количество клиентов растет, производительность ЦП, памяти, сети и диска сервера также должна расти, и в конечном итоге может достичь точки, когда сервер перестанет работать. Если у вас больше клиентов, чем может обслуживать один сервер, вам, вероятно, потребуется развернуть несколько серверов. Это означает разработку системы для балансировки и распределения нагрузки между серверами в дополнение к системе высокой доступности, которую мы обсуждали ранее.
Масштабирование вашей инфраструктуры для обработки больших объемов данных или большего количества пользователей означает огромные капитальные затраты на расширение серверной, сетевой инфраструктуры и хранилища. И снова вы можете обнаружить, что все, что вы сделали, это перенесли узкое место на какой-то другой компонент в системе.
В одноранговой модели чем больше устройств у вас есть в сети, тем больше устройств смогут участвовать в доставке данных и тем больше инфраструктуры каждое из них предоставляет стороне. Все они будут участвовать с точки зрения сети, ЦП и хранилища, распределяя эту нагрузку с центрального сервера. Таким образом, одноранговые системы можно считать органически масштабируемыми. Это означает, что увеличение масштаба происходит бесплатно при увеличении спроса, а не в проектах с огромными капитальными затратами, присущих модели клиент-сервер.
Подводя итог, можно сказать, что системы P2P органично масштабируются. Больший спрос означает большее предложение, что делает их идеальными для приложений, которые используют большие объемы данных и/или большое количество пользователей/сотрудников.
Ниже мы приводим несколько примеров приложений, которые распространены на предприятии, и описываем, как одноранговые архитектуры идеально подходят для решения каждого из них.
Пример использования: сборка дистрибутива
Видеоигры становятся все популярнее. Современные игровые приставки поддерживают 4K, а вскоре будут поддерживать 8K, а это означает, что не существует сценария, при котором объем данных, которые необходимо перемещать при создании новых игр, не уменьшается. Проблема распространяется на всю индустрию программного обеспечения по мере распространения платформ и увеличения размеров сборок. Компании-разработчики изо всех сил стараются быстрее доставлять сборки в удаленные офисы по всему миру, чтобы учесть растущую тенденцию удаленных сотрудников, работающих из дома, или распространять сборки в одном офисе на сотни быстрых машин для контроля качества в локальной сети. В модели клиент-сервер все удаленные офисы будут загружать сборки со сборочной машины. Ограничение скорости будет определяться сетевым каналом, который обслуживает сборку во все удаленные офисы. Модель одноранговой сети разделила бы сборку на независимые блоки, которые могли бы перемещаться между офисами независимо друг от друга. Этот подход устраняет сетевые ограничения для главного офиса и объединяет скорость всех удаленных офисов для более быстрой доставки сборок. Обычно на одноранговой архитектуре вы можете работать в 3-5 раз быстрее, чем на клиент-серверной.
Еще одна проблема связана с распространением сборок внутри одного офиса с центрального сервера. Быстрые QA-машины полностью перегружают сеть центрального сервера и центральный процессор, приводя центральный сервер в непригодное для использования состояние. Использованием локального сервера или массива хранения в каждом офисе сложно управлять, и машины контроля качества могут по-прежнему перегружать этот сервер или массив хранения, ограничивая скорость распространения сборок и тратя время на разработку. В совокупности это практически неразрешимая проблема масштабируемости. Как мы обсуждали выше, одноранговый подход лучше, когда доступ к данным запрашивают многие клиенты. Каждая машина контроля качества может передавать данные на другие машины, поддерживая сервер в исправном состоянии и обеспечивая невероятно быструю сборку.
Щелкните изображение, чтобы узнать больше о нашем решении Build Distribution
Пример использования: доставка данных в удаленные офисы
Доставка данных в удаленный офис обычно связана с перегрузкой центрального сервера. Даже если скорость каждого офиса высока, когда у вас их много, она складывается и требует каналов с огромной пропускной способностью для центрального офиса. Проблема может возникнуть, когда вам нужно доставить большие объемы данных, таких как документы, видео или изображения. Одноранговый подход решает эту проблему, позволяя каждому удаленному офису участвовать в доставке данных. Это снижает нагрузку на централизованный сервер и значительно снижает требования к центральному серверу и сети.
Кроме того, удаленные офисы часто имеют ограниченную пропускную способность для каждого офиса. Перемещать одни и те же данные снова и снова, используя это слабое звено, расточительно и неэффективно. Именно это происходит в модели клиент-сервер.
Программное обеспечение P2P естественным образом решает эту проблему, находя наилучший источник данных и наилучшую маршрутизацию между источниками данных, независимо от того, является ли это локальным выделенным сервером или удаленным сервером. Как только блок данных появится в удаленном офисе, его не обязательно будет снова загружать из центрального центра обработки данных, что сэкономит драгоценную полосу пропускания по каналу филиала.
Пример использования: системы управления конечными точками
Исправление и обновление большого количества операционных систем конечных точек — это задача, которая особенно подходит для программного обеспечения P2P. Размеры файлов велики, например, обновление от Microsoft может иметь размер в несколько ГБ, количество компьютеров или хостов, которые необходимо обновить, часто исчисляется тысячами, а инфраструктура многих филиалов или удаленных сотрудников часто ограничена и ненадежна. Централизованное обслуживание обновлений в модели клиент-сервер не имеет смысла, учитывая ограничения Интернета в филиалах, упомянутые в разделе выше. Кроме того, приложение обновления носит спорадический характер, но пиковый спрос на критическое обновление (например, для устранения уязвимости в системе безопасности) может быть интенсивным.Воздействие уязвимости даже на один день может иметь катастрофические последствия. Такие решения, как кеш филиалов от Microsoft, являются примерами решения проблемы доступности с помощью большего количества серверов и большей инфраструктуры.
Распространение этих обновлений в одноранговой сети намного эффективнее и быстрее, чем традиционные модели клиент-сервер. Обновления могут доставляться с максимальной скоростью без значительных инвестиций в серверную инфраструктуру, которой необходимо управлять в каждом филиале. Это решение идеально подходит для крупных предприятий, таких как финансовые учреждения, некоммерческие организации и предприятия розничной торговли, где необходимо управлять и защищать множество офисов.
Развенчание распространенных мифов о P2P
В то время как скорость сети P2P растет по мере того, как все больше клиентов присоединяются к передаче. Точка-точка и распределение данных от одного узла к нескольким узлам также быстрее.
Это заблуждение возникло из-за популярного частного случая использования P2P для незаконного обмена файлами. Незаконный обмен файлами и кража интеллектуальной собственности подвергают вашу инфраструктуру и компьютеры всем проблемам. Риска для корпоративного P2P-приложения не существует, поскольку все лица, участвующие в распространении, являются безопасными корпоративными машинами.
Как мы видели выше, одноранговая сеть — это просто способ установить соединение и назначить роли между машинами. Ему нужны дополнительные механизмы безопасности, которые могут выполнять взаимную аутентификацию и авторизацию, а также контроль доступа и шифрование трафика. Однако эти дополнительные функции безопасности встроены в корпоративные решения P2P, такие как Resilio Connect.
Насколько быстрее сети P2P по сравнению с сетями клиент-сервер?
Мы рассмотрели этот вопрос в подробном техническом документе: Почему P2P быстрее. Короче говоря, P2P всегда быстрее. Насколько быстрее, зависит от размера и масштаба данных. Чем они больше, тем больше различий. В примере из статьи клиент-серверу потребовалось в 3 раза больше времени для отправки файла размером 100 ГБ.
Читайте также: