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

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

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

Ссылку на предыдущие части можно найти ниже:



















91. Идемпотентность

Операция называется идемпотентной, если ее можно выполнять несколько раз без изменения результата после первого ее выполнения.

Например: если оператор устанавливает значение переменной с именем isCompleted на True, повторные операции не приведут к изменению значения этой переменной. Такая операция будет называться идемпотентной.

Идемпотентные операции обычно используются в службах обмена сообщениями, чтобы гарантировать, что сообщения будут доставлены потребителям хотя бы один раз.

92. Большие данные

Большие данные относятся к структурированным/неструктурированным данным, которые слишком велики по объему/слишком сложны для обработки и анализа современным компьютером.

Имейте в виду, что не существует установленного порога, выше которого данные считаются большими данными.

Большие данные представлены 3V:

  • Объем: большие данные достаточно велики, чтобы их нельзя было обработать с помощью доступных вычислительных мощностей (учитывайте данные о состоянии здоровья, созданные Apple Watch для всех клиентов вместе взятые).
  • Скорость: большие данные создаются быстро (учитывайте количество твитов, создаваемых каждый день).
  • Разнообразие. Большие данные включают структурированные (таблицы базы данных, JSON) и неструктурированные данные (аудио, видео, изображения).

93. Распределенные файловые системы

Распределенные файловые системы обеспечивают хранение и доступ к большим наборам данных на нескольких компьютерах/узлах (кластер компьютеров).

Каждый кластер может иметь:

  • узел управления кластером, управляющий ресурсами кластера.
  • рабочие узлы, которые хранят и обрабатывают данные

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

Примеры:

  • Распределенная файловая система Hadoop (HDFS)
  • Файловая система Google (GFS)
  • GlusterFS
  • Файловая система Quantcast (QFS)

94 . HDFS

Распределенная файловая система Hadoop (HDFS) от Apache — популярная распределенная файловая система с открытым исходным кодом.

Это новая реализация файловой системы Google (GFS) с открытым исходным кодом.

HDFS состоит из:

  • Центральный сервер (NameNode), на котором хранятся записи блоков файлов, хранящихся на каждом компьютере.
  • Рабочие компьютеры (DataNode), на которых запущен сетевой демон, который позволяет другим узлам получать доступ к файлам, хранящимся на нем.

HDFS можно рассматривать как большую файловую систему, использующую пространство на дисках нескольких компьютеров.

Файловые блоки системы реплицируются на несколько машин для обеспечения отказоустойчивости.

Данные из этой файловой системы можно обработать позже (например, с помощью MapReduce в Apache Hadoop).

Подробнее об архитектуре HDFS читайте здесь:



95. Пакетная обработка

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

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

Основная производительность системы пакетной обработки измеряется ее пропускной способностью.

Система пакетной обработки может использоваться для:

  • Создание поисковых индексов
  • Создание рекомендательных систем
  • Обработка финансовых данных (ежемесячные данные о заработной плате) и т. д.

Примеры:

  • MapReduce — популярный алгоритм пакетной обработки, реализованный в различных системах данных с открытым исходным кодом в Google, Hadoop, CouchDB и MongoDB.
  • Spring Batch — еще один фреймворк с открытым исходным кодом для пакетной обработки.

96. Потоковая обработка

Он включает в себя обработку данных из потока данных для получения желаемого результата.

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

Система потоковой обработки может использоваться для:

  • Построение систем обнаружения мошенничества
  • Мониторинг журнала
  • Создание инструментов анализа данных о ценах на акции и т. д.

Amazon Kinesis — популярный сервис потоковой обработки.

Apache Kafka Streams и Apache Spark — другие сервисы потоковой обработки с открытым исходным кодом.

97. Микро-интерфейсы

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

Эти патроны объединены вместе на:

  • На стороне клиента (используя прямые ссылки/фреймворки типа Single SPA)
  • На стороне сервера (с использованием таких фреймворков, как Podium)

98. Полиглот Настойчивость

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

Например:

  • Реляционные базы данных (MySQL, Postgres) могут использоваться для хранения данных и отношений пользователей.
  • Графические базы данных (NeoJ4) можно использовать для создания службы рекомендаций по продуктам.
  • Хранилища ключей и значений (Redis) можно использовать для кэширования данных.

Подробнее о различных типах моделей баз данных читайте здесь:



99. Мультимодельная база данных

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

Например:

  • ArangoDB: поддерживает документ (JSON), график, модели ключ-значение.
  • Redis: поддерживает ключ-значение, документ (JSON), график свойств, потоковую передачу, модели временных рядов.
  • EnterpriseDB: поддерживает документ (XML и JSON), модели ключ-значение.

100. Эластичный поиск

ElasticSearch — это бесплатная и открытая поисковая и аналитическая система для различных типов данных (текстовых, числовых, геопространственных, структурированных и неструктурированных данных).

Необработанные данные поступают в Elasticsearch из различных источников, использующих Beats.

Эти данные анализируются, нормализуются, обогащаются с помощью Logstash и, наконец, индексируются в Elasticsearch.

Затем пользователи могут:

  • выполнять сложные запросы к своим данным
  • извлекать сложные сводки своих данных
  • создавать визуализации своих данных с помощью Kibana

Этот стек технологий обычно называют стеком ELK (Elasticsearch, Logstash,и Kibana).

Большое спасибо за чтение этой статьи!

Пожалуйста, аплодируйте, делитесь и оставляйте комментарии, если вы нашли эти статьи полезными!

Если вы новичок в Python или программировании в целом, ознакомьтесь с моей новой книгой под названиемThe No Bulls**t Guide To Learning Pythonниже: