Об этом проекте

Этот репозиторий представляет собой подборку ссылок для изучения проектирования систем и подготовки к собеседованиям по проектированию систем. Он не содержит оригинального программного обеспечения; он организует бесплатные статьи, видео, курсы, книги, рассылки, инженерные блоги и статьи по распределенным системам. Основные разделы включают: - Основные концепции: масштабируемость, доступность, надежность, SPOF, задержка vs пропускная способность vs пропускная способность, согласованное хеширование, теорема CAP, переключение на резервный, отказоустойчивость. - Основы сетей: модель OSI, IP-адреса, DNS, прокси vs обратный прокси, HTTP/HTTPS, TCP vs UDP, балансировка нагрузки, контрольные суммы. - Основы API: API, шлюз API, REST vs GraphQL, WebSockets, вебхуки, идемпотентность, ограничение скорости, проектирование API. - Основы баз данных: транзакции ACID, SQL vs NoSQL, индексы, шардинг, репликация, масштабирование, типы баз данных, фильтры Блума, архитектуры. - Основы кэширования: основы кэширования, стратегии, политики удаления, распределенное кэширование, CDN. - Асинхронная коммуникация: публикация/подписка, очереди сообщений, захват изменений данных. - Распределенные системы и микросервисы:心跳, обнаружение сервисов, алгоритмы согласия, распределенное блокирование, гиперглосс, цепочка отказов, восстановление после катастроф, распределенное отслеживание. - Архитектурные паттерны: клиент-сервер, микросервисы, безсерверные, событийно-ориентированные, точка-точка. - Компромиссы в проектировании систем: вертикальное vs горизонтальное масштабирование, конкуренция vs параллелизм, долгопOLLING vs WebSockets, пакетная обработка vs потоковая обработка, состоятельные vs безсостоятельные, модели согласованности, стратегии кэширования, передача vs извлечение, REST vs RPC, синхронный vs асинхронный, задержка vs пропускная способность. - Подготовка к собеседованию: рамка для ответов на задачи проектирования систем на собеседовании, а также категоризированные задачи для практики (легкие, средние, сложные), такие как сокращатель URL, WhatsApp, Instagram, Uber, Google Docs, Dropbox и распределенное хранение. - Дополнительные ресурсы: курсы, рассылки, книги, каналы YouTube, обязательные инженерные статьи и классические статьи по распределенным системам (Paxos, MapReduce, GFS, Dynamo, Kafka, Spanner, Bigtable, ZooKeeper, LSM-Tree, Chubby). Репозиторий полезен как маршрут для изучения и индекс для справки для инженеров-программистов, готовящихся к собеседованиям по проектированию систем или желающих понять концепции масштабируемых распределенных систем.