Путь Архитектора -- Архитектура Инфраструктуры

Java

системная иерархия

Любая система может быть разделена на уровень приложений и уровень инфраструктуры в соответствии с измерением логического развертывания.Разработанное прикладное программное обеспечение и сторонние приложения могут быть абстрагированы на набор компонентов.Для запуска этих компонентов уровень инфраструктуры должен обеспечивать Уровень объекта включает такие элементы, как физические машины, хранилище, виртуальные машины и контейнеры.

image.png

Самым базовым уровнем инфраструктуры является физическая машина.С развитием технологий постепенно появляются виртуальные машины и контейнеры.

Давайте сначала посмотрим на эволюцию архитектуры инфраструктуры.

Эволюция архитектуры инфраструктуры

Архитектура инфраструктуры — это не одноэтапная вещь, ее необходимо постоянно улучшать круговым и постепенным образом, с постоянной эволюцией сложности системы и развитием бизнеса. Далее давайте посмотрим на эволюцию инфраструктуры системы от простой к сложной с самой базовой архитектурой, такой как Ngnix+web+db:

Один хост с несколькими компонентами

На начальном этапе запуска системы количество пользователей относительно невелико, а требования к доступности системы относительно низкие. Таким образом, мы можем развернуть все компоненты на одном хосте.

image.png

Один хост запускает один компонент

С развитием системного бизнеса к системе предъявляются требования к производительности.В это время ее необходимо развертывать самостоятельно.Компонент развертывается на машине,и конфигурация каждой машины разная.Например,конфигурация базы данных и веб-сервер будет выше.

image.png

Компонент работает на нескольких хостах

Поскольку бизнес продолжает развиваться, система предъявляет требования к доступности.В настоящее время необходимо развертывать компоненты в нескольких экземплярах, каждый экземпляр развертывается на отдельной машине, а для поддержки переключения «активный-резервный» используется кластерное программное обеспечение. что гарантирует производительность и доступность.

image.png

Существует несколько хостов, на каждом из которых работает несколько компонентов, с балансировкой нагрузки и механизмами переключения «активный-резервный».

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

image.png

Один компонент работает с виртуальной машиной, физическая машина запускает несколько виртуальных машин

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

image.png

Физическая машина сначала делится на несколько виртуальных машин, и эти компоненты развертываются в этих виртуальных машинах. Таким образом достигается полное использование ресурсов, повышается доступность системы и удобство эксплуатации и обслуживания.

Один компонент запускается в одном контейнере, а несколько контейнеров запускаются на одной физической машине.

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

image.png

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

Основные вопросы инфраструктуры

В принципе, инфраструктура состоит в том, чтобы решить проблему сопоставления компонентов к операционной среде. Архитектура инфраструктуры должна учитывать следующие десять основных вопросов:

  • Аппаратная конфигурация хоста Какую конфигурацию необходимо выбрать для поддержки развертывания компонентов?
  • Соответствие между хостами и компонентами Какова связь между хостом и компонентом? Какие компоненты развернуты на каких хостах?
  • Управление хостом Как управлять этими хостами?
  • Управление компонентами Как управлять многочисленными компонентами?
  • Экологическая изоляция Как изолировать разные среды разработки?
  • Изоляция ресурсов Если один компонент занимает слишком много ресурсов, это неизбежно приведет к уменьшению ресурсов других компонентов? Как назначить соответствующие ресурсы компонентам?
  • общее использование ресурсов Находится ли использование системы в разумном состоянии?
  • представление Можно ли гарантировать производительность каждого компонента в рамках архитектуры развертывания? Будут ли пробки?
  • Доступность Можно ли гарантировать доступность системы, когда хост повесил трубку?
  • Стоимость Как обеспечить работу всех компонентов при ограниченном бюджете, или можно сэкономить бюджет за счет удачного дизайна?

Архитектура инфраструктуры, созданная с учетом вышеуказанных основных проблем, является хорошей архитектурой. Решение этих основных проблем требует от архитектора определенного понимания серверов, сетей, хранилищ и других знаний. Обратите внимание на эту серию статей, которые помогут вам решить эти проблемы вопрос.


Вот небольшой подарок для всех, обратите внимание на официальный аккаунт, введите следующий код, вы можете получить адрес сетевого диска Baidu, без рутины для получения!

001: «Программисты должны читать книги»
002: «Создание архитектуры внутренних сервисов, а также архитектуры эксплуатации и обслуживания для малых и средних интернет-компаний с нуля»
003: «Решения с высокой степенью параллелизма для интернет-предприятий»
004: «Обучающее видео по архитектуре Интернета»
006: «SpringBoot реализует систему заказов»
007: "Фактическое видео Spring Security"
008: «Практическое обучающее видео по Hadoop»
009: «Конференция разработчиков технологий Tencent 2019 PPT»
010: Группа обмена WeChat