Перейти к содержимому

Выберите язык

Текущий язык: Русский

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.

Awesome

Если вам понравился материал 📖, поддержите проект и поставьте 👍| ⭐| 👏

Подборка статей, книг, видео и инструментов по распределённым системам и большим данным.

Этот список поможет вам как при подготовке к собеседованию, так и при проектировании распределённого приложения или приложения на микросервисах.

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

Создан по мотивам Awesome-BigData

Создатель — Gabriel Leon de Mattos

Статьи

Книги

Видео

Инструменты

Дополнительно

  • 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 - Еще один замечательный бесплатный ресурс — список часто задаваемых вопросов на собеседовании.

  • Подборка наиболее часто используемых инструментов для распределённых систем

Реляционная система управления базами данных

Заголовок раздела «Реляционная система управления базами данных»
  • 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, мониторинг и стандартный набор функций балансировки нагрузки.

  • 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, управляя процессором, памятью, хранилищем и другими ресурсами в кластере.
  • 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 — агентная среда разработки. Насыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными, превращая разработку в увлекательный процесс.

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

Перейти на HagiCodeЧитать документацию
  • УмныйРабочие процессы OpenSpec превращают намерение в исполнимый путь от предложения через дизайн и задачи до готового изменения.
  • ЭффективныйМультиагентное выполнение параллельно продвигает исследование, реализацию и проверку в нескольких репозиториях и с привычными Agent CLI.
  • ИнтересныйНасыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными.

Скачать для Windows

Получить в Microsoft StoreВсе загрузки

Превращайте идеи в готовое ПО.

HagiCode — агентная среда разработки: рабочие процессы OpenSpec планируют изменение, мультиагентное выполнение его реализует, а Hero Scenario делает долгий путь наглядным, так что идеи становятся готовым ПО.

Умный
Рабочие процессы OpenSpec превращают намерение в путь от предложения до готового изменения.
Эффективный
Мультиагентное выполнение ведёт исследование, реализацию и проверку параллельно.
Увлекательный
Удобный интерфейс упрощает планирование, работу агентов и проектные задачи.

Покинуть Awesome Site?

Вы собираетесь перейти на внешний сайт. Мы не контролируем его содержимое и правила конфиденциальности.

Адрес назначения

Перейти на сайт