System Design
Source: https://github.com/madd86/awesome-system-design at
52834671253b
License: CC0-1.0
Read the English original
This edition is an AI-assisted translation.
Если вам понравился материал 📖, поддержите проект и поставьте 👍| ⭐| 👏
Подборка статей, книг, видео и инструментов по распределённым системам и большим данным.
Этот список поможет вам как при подготовке к собеседованию, так и при проектировании распределённого приложения или приложения на микросервисах.
Обратите внимание: число звёзд на GitHub не отражает частоту использования или популярность каждого пункта списка.
Создан по мотивам Awesome-BigData
Создатель — Gabriel Leon de Mattos
Содержание
Заголовок раздела «Содержание»- Relational Database
- NoSQL
- Распределённые файловые системы
- Управление ресурсами
- Потоковая обработка
- Брокер сообщений
- Балансировщики нагрузки
- Экосистема Hadoop
- REST-фреймворк
Введение / собеседования
Заголовок раздела «Введение / собеседования»-
System Design Primer - [109k ⭐] - Потрясающая подборка ресурсов, включая колоды карточек Anki.
-
System Design Interview Questions - Concepts you should know - Тщательно подобранный список тем, которые познакомят вас с проектированием систем.
-
Grokking the System Design Interview - [Paid 💵] - Курс Grokking System Design — один из самых обсуждаемых. Самое лучшее в нем — это дизайн предлагаемых приложений, а не объяснения того, что должен делать каждый инструмент.
-
System Design in Software Development - Основная статья по темам системного проектирования и архитектуры.
-
System Design - Вводные ресурсы для подготовки к собеседованию.
-
Design Pattern for Distributed Systems - В статье рассказывается о некоторых шаблонах, а также о некоторых технологиях, которые следует учитывать.
-
Practice system design problems using AI on Codemia.io - Инструмент, который позволяет вам интерактивно практиковать проблемы проектирования систем, например, интервью с ИИ. Существует повторяющаяся обратная связь и окончательная оценка, которая оценивает вашу работу.
Продвинутый уровень
Заголовок раздела «Продвинутый уровень»-
Distributed Computing - Статья в Википедии, расширяющая представление о проектировании распределенных систем.
-
Fallacies of Distributed Computing - Статья в Википедии, знакомящая с темой заблуждений распределенных вычислений и их последствий.
-
Fallacies of Distributed Computing Explained - Подробное объяснение заблуждений, упомянутых выше.
-
CAP Theorem - Статья IBM о теореме CAP, микросервисах и базах данных NoSQL.
-
Pattern: Microservice Architecture - Хорошая статья, рассказывающая о микросервисной архитектуре, а также ее недостатках.
-
Taxonomy of Distributed Systems - 11-страничная лекция, классифицирующая распределенные системы и, в частности, зачем они нам нужны.
-
Top 10 Secure Coding Practices - Краткая статья о передовой практике кодирования ценных бумаг.
-
Scalable Web Architecture and Distributed Systems - Хорошая статья о распределенных системах, а также о некоторых потенциальных инструментах.
-
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services - [Paid 💵] - Книга, в которой рассказывается о распределенных системах, а также в легкой форме демонстрируется код того, как они выглядят.
-
Designing Data Intensive Applications - [Paid 💵] - Подробно объясняет различные ресурсы, которые мы используем при работе с распределенными системами, а также то, как они появились и какие проблемы призваны решить.
-
The System Design Manual - [Paid 💵] - Охватывает основные аспекты распределенных систем, такие как: основы сети, теория, лежащая в основе распределенных систем, архитектурные шаблоны масштабируемых систем, шаблоны стабильности, которые защищают системы от сбоев, а также передовые методы работы по обслуживанию крупномасштабных систем небольшой командой.
-
Building Microservices - [Free 👍] - Потрясающая книга, в которой подробно рассказывается о проектировании системной архитектуры с использованием микросервисов, и включает в себя наиболее актуальные темы в этом отношении.
-
Monolith to Microservices - [Free 👍] - В этой книге, написанной тем же автором, что и выше, будет рассмотрен переход от Monolith к микросервисам. Рекомендуется начать с предыдущей книги.
-
Distributed Systems (3rd Edition) - [Free 👍] - Отличный обзор и подробное введение в распределенные системы. Рекомендуется для читателей среднего уровня.
-
Safe by Design - [Free 👍] - Отличная книга о том, как обеспечить правильность кода с помощью дизайна.
Подборка видео о распределённых системах.
Введение / собеседования
Заголовок раздела «Введение / собеседования»-
Gaurav Sen - System Design Series - Хороший ресурс для людей, которые хотят узнать больше о проектировании систем, в очень простой для понимания форме излагает эту тему.
-
Tech Dummies - System Design Series - Еще одно введение в системный дизайн.
-
Mock System Design Interview at Google - Обзор того, как будет выглядеть собеседование по проектированию системы с точки зрения ущербного, но близкого выполнения требований. Ключевым моментом здесь является то, как проходит взаимодействие с интервьюером.
-
Google Preparation Guide - Небольшое видео, объясняющее, как они берут интервью.
-
System Design Interview - Канал YouTube посвящен интервью, посвященным проектированию систем, с подробным объяснением различных проблем.
-
Intro to Architecture and System Design Interviews - Видео на YouTube с Джексоном Габбардом, содержащее полезную информацию об интервью по проектированию систем.
-
System Design Introduction for Interview - Введение Тушара в системный дизайн.
-
Distributed Systems - Это вводный курс по распределенным системам, созданный Крисом Колоханом. Он получил докторскую степень в Карнеги-Меллоне, затем 10 лет работал в Google над созданием распределенных систем.
-
The Easy Way - Развивающийся канал с понятными видеороликами о распределенных системах.
-
System Design by SDE Skills - Хороший ресурс для людей, которые готовятся к собеседованиям по проектированию систем. Здесь есть несколько пробных собеседований по проектированию систем и глубокие погружения.
-
System Design by CodeKarle - Еще один замечательный бесплатный ресурс — список часто задаваемых вопросов на собеседовании.
Продвинутый уровень
Заголовок раздела «Продвинутый уровень»- The evolution of Reddit Architecture - Обзор того, как масштабируется дизайн системы Reddit.
- 6.824 Distributed Systems by MIT - Курс для аспирантов по распределенным системам от Массачусетского технологического института (2020).
- CSE138 Distributed Systems by UCSC - Бакалавриат по распределенным системам от UCSC (2020).
Инструменты
Заголовок раздела «Инструменты»- Подборка наиболее часто используемых инструментов для распределённых систем
Реляционная система управления базами данных
Заголовок раздела «Реляционная система управления базами данных»-
MariaDB - MariaDB — это форк сервера MySQL.
-
MySQL - Широко используемая реляционная база данных.
-
PostgresSQL - Реляционная база данных, которая набирает популярность.
-
SQLite - Еще одна широко используемая база данных, встроенная во все мобильные телефоны и большинство компьютеров.
-
Sql Server - Широко используемая реляционная база данных.
Кэш (ключ-значение)
Заголовок раздела «Кэш (ключ-значение)»-
Apache Ignite - [3.3k ⭐] - В кэше памяти со свойствами ACID.
-
Couchbase - Вдохновленный memcached, добавлены такие функции, как репликация и сохранение.
-
Oracle Coherence - [126 ⭐] - Высокое масштабирование и кэширование в памяти с низкой задержкой.
-
Memcached - [10.2k ⭐] - Одна из первых баз данных с кэшированием в памяти, высокопроизводительная и многопоточная.
-
Redis - [44k ⭐] - Широко используемая база данных кэширования в памяти со множеством дополнительных функций, таких как постоянное хранилище и поддержка строк, списков, наборов, хэшей, потоков, растровых изображений и т. д.
Хранилище (ключ-значение)
Заголовок раздела «Хранилище (ключ-значение)»-
Apple FoundationDB - [10k ⭐] - Мультимодель (множество типов данных в одной базе данных), хранилище ключей-значений ACID. Легко масштабируемый и отказоустойчивый.
-
Cosmos DB - Глобально распределенная многомодельная служба баз данных Microsoft. Восточное и независимое масштабирование пропускной способности и хранилища. API-интерфейсы SQL, MongoDB, Cassandra, Tables, Gremlin и Spark.
Документное хранилище
Заголовок раздела «Документное хранилище»-
CouchDB - [4.6k ⭐] - База данных хранилища документов NoSQL, совместимая с ACID, предоставляет RESTful HTTP API для чтения и обновления документов базы данных.
-
MongoDB - Одна из самых популярных баз данных NoSQL общего назначения.
-
RethinkDB - [23.8k ⭐] - БД хранилища документов.
-
ElasticSearch - [49.9k ⭐] - Широко популярная база данных NoSQL для быстрых и масштабируемых поисковых систем.
-
Cosmos DB - Глобально распределенная многомодельная служба баз данных Microsoft. Восточное и независимое масштабирование пропускной способности и хранилища. API-интерфейсы SQL, MongoDB, Cassandra, Tables, Gremlin и Spark.
Ширококолоночное хранилище
Заголовок раздела «Ширококолоночное хранилище»-
Amazon DynamoDB - База данных «ключ-значение» и документов, высокопроизводительная, масштабируемая и безопасная.
-
Google Bigtable - Масштабируемая и производительная база данных NoSQL для больших аналитических и операционных задач.
-
Cassandra - Проект, созданный на Facebook, очень быстрый, легко масштабируемый, с возможностью обеспечения согласованности каждой операции.
-
Scylla - [4.9k ⭐] - Хранилище данных NoSQL с использованием платформы seastar, совместимой с Cassandra.
-
HBase - [3.6k ⭐] - Создан по образцу Bigtable от Google и написан на Java. Разработан как часть проекта Apache Hadoop и работает поверх HDFS или Alluxio. (См. Hadoop Related)
-
Cosmos DB - Глобально распределенная многомодельная служба баз данных Microsoft. Восточное и независимое масштабирование пропускной способности и хранилища. API-интерфейсы SQL, MongoDB, Cassandra, Tables, Gremlin и Spark.
-
Amazon Neptune - Быстрый, надежный и полностью управляемый сервис графовой базы данных.
-
ArangoDB - [10k ⭐] - Гибкая база данных для документов, ключей-значений, графиков. Использует собственный язык запросов AQL.
-
Neo4j - [7.9k ⭐] - Хорошая поддержка графической базы данных, совместимая с ACID и гибкая.
-
Cosmos DB - Глобально распределенная многомодельная служба баз данных Microsoft. Восточное и независимое масштабирование пропускной способности и хранилища. API-интерфейсы SQL, MongoDB, Cassandra, Tables, Gremlin и Spark.
Распределённые файловые системы
Заголовок раздела «Распределённые файловые системы»-
HDFS - Файловая система Hadoop — широко популярный выбор среди конкурентов в области больших данных, поскольку она обеспечивает доступ с высокой пропускной способностью.
-
Lustre - Файловая система для компьютерных кластеров.
-
CephFS - Единая, распределенная система хранения.
-
GlusterFS - Масштабируемая файловая система NAS.
-
MooseFS - Распределенная файловая система, совместимая с POSIX.
-
XtreemFS - Отказоустойчивая файловая система.
Управление ресурсами
Заголовок раздела «Управление ресурсами»- Kubernetes - Очень популярный способ развертывания, управления и автоматического масштабирования кластера контейнеров на физических или виртуальных серверах.
Потоковая обработка
Заголовок раздела «Потоковая обработка»-
Apache Samza - Создавайте приложения с отслеживанием состояния, которые обрабатывают данные в режиме реального времени из нескольких источников, включая Kafka. Простая и недорогая модель с несколькими абонентами, позволяющая устранить противодавление и обеспечивающая надежную устойчивость с низкой задержкой.
-
Apache Flink - На основе концепции потоков и трансформаций. Использует maven, обрабатывает пакетные задачи как потоки данных с конечными границами. Низкая задержка, высокая пропускная способность.
-
Amazon Kinesis Streams - Надежное, масштабируемое обслуживание в режиме реального времени. Собирает гигабайты данных в секунду из сотен тысяч источников, включая потоки событий базы данных, потоки посещений веб-сайтов, финансовые транзакции и т. д.
-
Azure Stream Analytics - Служба аналитики в реальном времени, предназначенная для критически важных рабочих нагрузок.
Брокер сообщений
Заголовок раздела «Брокер сообщений»-
Amazon MQ - Брокер сообщений с открытым исходным кодом от Amazon.
-
Apache ActiveMQ - Это многопротокольный сервер обмена сообщениями на основе Java.
-
Apache Kafka - Широко популярный брокер сообщений с низкой задержкой при потоковой передаче данных.
-
RabbitMQ - Широко популярный легкий брокер сообщений, написанный на erlang, который также поддерживает несколько протоколов обмена сообщениями.
-
IronMQ - Очень быстрый и масштабируемый брокер обмена сообщениями. (не с открытым исходным кодом)
-
Apache Pulsar - Создано Yahoo, также обладает высокой масштабируемостью, низкой задержкой, георепликацией и многоуровневостью.
-
Kestrel - Написан на Scala и использует протокол memcached. Это работает так же, как Кафка.
-
Azure Service Bus - Полностью управляемый брокер сообщений корпоративной интеграции.
Балансировщики нагрузки
Заголовок раздела «Балансировщики нагрузки»Программное обеспечение с открытым исходным кодом
Заголовок раздела «Программное обеспечение с открытым исходным кодом»-
SeeSaw - [5.1k ⭐] - Используется Google, разработанный на Go, виртуальный сервер балансировки нагрузки на базе Linux.
-
HAProxy - Широко популярный вариант, обеспечивающий высокую доступность прокси-сервера и балансировку нагрузки TCP/HTTP. Используется Reddit, Imgur, MaxCDN, GitHub, AirBNB.
-
Zevenet - Поддерживает L3, L4 и L7. Простая установка с помощью репозитория докера. Поддерживает расширенный мониторинг работоспособности.
-
Neutrino - Используется eBay, создан с помощью Scala и Netty. Поддерживает алгоритмы циклического перебора и наименьшего количества соединений.
-
Nginx - Подождите, разве Nginx не является веб-сервером? Да, открытый исходный код поддерживает базовый уровень переключения контента и маршрутизации запросов. Версия Plus поддерживает балансировку нагрузки, WAF, мониторинг и т. д.
-
Openresty - Nginx + Lua, идеальное сочетание.
Оборудование
Заголовок раздела «Оборудование»-
F5 - Надежный аппаратный балансировщик нагрузки, поддерживающий несколько протоколов (IP, TCP, FTP, UDP, HTTP).
-
TP-Link - Более дешевая альтернатива, работающая как балансировщик нагрузки.
-
Barracuda - Один из лучших вариантов балансировки нагрузки, когда речь идет о внутренних серверах. Встроенные высочайшие меры безопасности, подробные отчеты и мониторинг исходящего трафика для предотвращения потери данных.
-
Amazon Elastic Load Balancing - Популярный выбор среди клиентов Amazon, поддерживает лямбда-функции, хорошо масштабируется.
-
Google Load Balancing - Популярный выбор среди клиентов Google, имеет функцию автоматического масштабирования, очень быстрый, имеет встроенный CDN.
-
Cloudflare Load Balancing - Масштабируемая балансировка нагрузки с помощью Cloudflare, функция быстрого переключения при сбое и панель мониторинга.
-
DigitalOcean Load Balancing - Если вы являетесь клиентом Digitalocean, это хороший вариант, очень дешевый, доступный в регионе, масштабируемый, простой в развертывании среди других ваших капель.
-
Azure Load Balancing - Популярный выбор среди клиентов Microsoft Azure. Поддерживает внутренний и внешний трафик, ipv6, мониторинг и стандартный набор функций балансировки нагрузки.
Экосистема Hadoop
Заголовок раздела «Экосистема Hadoop»
Панель управления
Заголовок раздела «Панель управления»- Ambari - Панель мониторинга, которая объединяет большинство технологий, связанных с Hadoop, для простоты управления и выполнения.
Загрузка данных
Заголовок раздела «Загрузка данных»-
Sqoop - Эффективно передавайте данные между Hadoop и структурированными хранилищами данных, такими как реляционные базы данных.
-
Flume - Распределенная, высокодоступная и эффективная система сбора, агрегирования и перемещения больших объемов данных журналов.
-
Apache Kafka - Широко популярный брокер сообщений с низкой задержкой при потоковой передаче данных.
Планировщик рабочих процессов
Заголовок раздела «Планировщик рабочих процессов»- Oozie - Создавайте рабочие процессы в XML для поэтапного выполнения заданий (из других приложений экосистемы Hadoop), а также допускайте параллельное выполнение.
Запросы
Заголовок раздела «Запросы»- Hive - Запросите данные Hadoop, хранящиеся в SQL.
- Pig - Язык сценариев, похожий на SQL, для запроса данных Hadoop.
Обработка
Заголовок раздела «Обработка»- Tez - Решает проблему, аналогичную Spark и MapReduce, она более эффективна, чем MapReduce, поскольку вычисляет наиболее эффективный способ ее решения.
- Map Reduce - MapReduce, как следует из названия, отображает данные и сокращает результаты.
- Spark - Мощная обработка данных, позволяющая не только обрабатывать данные, такие как Tez (и MapReduce), но и обрабатывать потоки данных в реальном времени, применять алгоритмы регрессионного анализа в машинном обучении и многое другое.
- Apex - *Устаревший проект. Это собственная платформа YARN, которая объединяет потоковую и пакетную обработку.
База данных
Заголовок раздела «База данных»- HBase - [3.6k ⭐] - Создан по образцу Bigtable от Google и написан на Java. Разработан в рамках проекта Apache Hadoop.
Управление ресурсами
Заголовок раздела «Управление ресурсами»- YARN - «Еще один переговорщик ресурсов» работает как ядро для управления компьютерными ресурсами в кластерах.
- MESOS - Работает как ядро Linux, управляя процессором, памятью, хранилищем и другими ресурсами в кластере.
REST-фреймворк
Заголовок раздела «REST-фреймворк»-
Gin - [40.6k ⭐] - Невероятно быстрая микросервисная среда с использованием Golang и высокой пропускной способностью.
-
Phoenix - [15.5k ⭐] - Распределенная обработка, легко масштабируемая, поддержка каналов и чата. Эта среда, написанная на Elixir, использует BEAM и Erlang, очень эффективна для крупномасштабных систем и поддерживает высокую пропускную способность.
-
Express.js - [49.6k ⭐] - Быстрый API для отдыха node.js, который может хорошо работать во многих сценариях.
-
Rails - [46.2k ⭐] - Написанный на Ruby, Rails эффективно обеспечивает быстрый API от прототипа до производства.
-
Play Framework - [11.6k ⭐] - Очень быстрая платформа с высокой пропускной способностью, написанная на Scala/Java и по умолчанию использующая RESTful.
-
Flask - [51.6k ⭐] - Легкая микроплатформа Python для быстрого прототипирования и производства.
-
FastAPI - [22.7k ⭐] - Облегченная микроплатформа Python, вдохновленная Flask, но более современная, использующая асинхронный код Python.
-
Django REST - [18.4k ⭐] - Написанный на Python, Django Rest представляет собой мощный и гибкий REST API. Эффективность и время выхода на рынок напоминают Rails.
-
ASP.NET Core MVC - Богатая платформа для создания веб-приложений и API с использованием шаблона проектирования Модель-Представление-Контроллер на C# или F#. Номер 6 на TechEmpower Composite Benchmarks для веб-платформ.
-
Fastify - [15.4k ⭐] - Веб-фреймворк Node.js, ориентированный на обеспечение наилучших условий для разработчиков с наименьшими затратами и мощной архитектурой плагинов.
HagiCode
HagiCode — агентная среда разработки. Насыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными, превращая разработку в увлекательный процесс.
Насыщенные и удобные взаимодействия с интерфейсом помогают легче планировать, запускать агентов и вести проектную работу.
- УмныйРабочие процессы OpenSpec превращают намерение в исполнимый путь от предложения через дизайн и задачи до готового изменения.
- ЭффективныйМультиагентное выполнение параллельно продвигает исследование, реализацию и проверку в нескольких репозиториях и с привычными Agent CLI.
- ИнтересныйНасыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными.
Скачать для Windows
Поделиться HagiCode
Превращайте идеи в готовое ПО.
HagiCode — агентная среда разработки: рабочие процессы OpenSpec планируют изменение, мультиагентное выполнение его реализует, а Hero Scenario делает долгий путь наглядным, так что идеи становятся готовым ПО.
- Умный
- Рабочие процессы OpenSpec превращают намерение в путь от предложения до готового изменения.
- Эффективный
- Мультиагентное выполнение ведёт исследование, реализацию и проверку параллельно.
- Увлекательный
- Удобный интерфейс упрощает планирование, работу агентов и проектные задачи.
© 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: 745b50b | Built:

