Как стать автором
Обновить
52.36

Распределённые системы *

Нюансы проектирования распределенных систем

Сначала показывать
Порог рейтинга
Уровень сложности

Как выжить под нагрузкой, имея 100 ТБ в нешардированной MongoDB

Время на прочтение8 мин
Количество просмотров4.9K

Сегодня у нас — экшен, основанный на реальных событиях. Будем переобуваться в воздухе и на лету менять архитектуру высоконагруженной системы.

Действие разворачивается на базе очень большой track & trace системы класса big data. В ней давно откладывали переход на шардированную архитектуру хранилища. Поэтому главному герою предстоит справиться справиться со злом, пробудившимся в системе под нагрузкой: деградацией производительности, полкой по блокировкам и алертами о перегрузке.

В конце — как обычно, хэппи-энд. Наш герой бесстрашно меняет архитектуру решения на лету без downtime (DT) и обеспечивает штатную работу системы. Зло повержено, а отважный инженер купается в овациях!

Статья написана по мотивам доклада на конференции Saint Highload++ 2022. Если не хотите читать — можно посмотреть видео-версию выступления.

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии11

Децентрализованный поиск для свободного веба

Время на прочтение12 мин
Количество просмотров10K

Возможно ли создать поисковую систему, которую тяжело подвергнуть цензуре, влиянию и блокировке?

Говоря техническим языком, возможно ли выполнять полнотекстовый поиск не имея удаленного сервера, удобным для пользователя способом, одновременно храня поисковый индекс в peer-to-peer системе и имея возможность быстро обновлять поисковый индекс?

Да, это возможно!

Под катом описание архитектуры поискового движка Summa на Rust и набора приемов, позволивших ответить утвердительно на все вопрос

Читать далее
Всего голосов 65: ↑63 и ↓2+61
Комментарии21

Как Discord прокачивает сетевые диски, сводя задержки к минимуму

Время на прочтение9 мин
Количество просмотров5.4K

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

Для предоставления такого колоссального объёма данных эксплуатируется набор кластеров NoSQL-баз данных (на основе ScyllaDB), и каждый из этих кластеров является источником истины для соответствующего множества данных. Поскольку Discord — это платформа для чатов в реальном времени, требуется, чтобы базы данных справлялись с плотным потоком запросов настолько быстро, насколько возможно.

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии8

Самая большая BERT-подобная модель на русском, которая поместится на ваш компьютер

Время на прочтение7 мин
Количество просмотров19K
Привет, это снова Максим Рябинин, исследователь в Yandex Research. В прошлом году я рассказывал на Хабре о том, как вместе с Hugging Face, Университетом Торонто и волонтёрами мы обучили state-of-the-art модель для бенгальского языка и написали об этом статью на конференцию NeurIPS. Теперь хотим поделиться новым результатом: оказывается, технологии для обучения на нестабильном железе находят приложение и внутри привычных всем кластеров.

Используя вычислительную платформу Яндекса, мы обучили RuLeanALBERT — нейросеть, показывающую сравнимые с другими открытыми моделями и где-то даже близкие к state-of-the-art результаты на бенчмарках по пониманию русского языка — Russian SuperGLUE и RuCoLA. Наша модель хотя и имеет миллиарды параметров, но вполне способна вместиться в одну домашнюю GPU: вы можете использовать её в своих проектах для классификации предложений, представления текстов и других языковых задач, не требующих генерации. В статье можно прочитать о подробностях обучения, которые мы реализовали в открытом коде, а чекпоинт теперь тоже доступен всем желающим.


Примерно так выглядит процесс обучения на множестве независимых серверов
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии8

Истории

Как обнаружить мертвый узел в распределенной системе

Время на прочтение6 мин
Количество просмотров3K
image


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

Для обеспечения отказоустойчивости отказы нужно обнаруживать. Однако в этой статье вы увидите, как сложно обнаружить отказ узла. Мы также в общем виде обсудим архитектуру, позволяющую обнаруживать отказ узла с накоплением Phi.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Как мы внедряли tracing

Время на прочтение6 мин
Количество просмотров8.6K

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

Всем привет, меня зовут Саша Казанцев, я — тимлид команды “Clickme” в hh.ru. В этой статье расскажу о том, как мы внедряли трейсинг. 

Читать далее
Всего голосов 16: ↑14 и ↓2+12
Комментарии2

Отказоустойчивая архитектура контентной платформы на 4 Тбит/с — опыт VK Видео

Время на прочтение16 мин
Количество просмотров20K

Представьте идеальный мир с бесконечными ресурсами, в котором можно сколько угодно линейно масштабироваться под нагрузку: просто доставлять серверы, диски, видеокарты, как только потребуется больше мощностей. Звучит хорошо? Только оказывается, что когда серверов 5 000 и дисков 100 000, то несколько из них обязательно находятся в состоянии maintenance или repair, куда их привели обстоятельства непреодолимой силы. И главная задача здесь — обеспечить доступность сервиса в условиях постоянных сбоев. 

В статье разберём, как построить отказоустойчивую платформу, с какими неочевидными corner cases может столкнуться сервис с UGC-контентом, а ещё — как жить в реальном, а не идеальном мире и оптимизировать железо. Чтобы раздавать 4 Тбит/с можно, конечно, использовать 400 серверов по 10 Гбит/с, но гораздо интереснее грамотно всё потюнить и выжать 100 Гбит/с с Java-сервера.  

Читать далее
Всего голосов 59: ↑58 и ↓1+57
Комментарии15

Разбираемся в Apache Kafka: подборка полезных статей и кейсов

Время на прочтение3 мин
Количество просмотров15K

Разрабатываете приложения с применением Apache Kafka? Мы собрали для вас статьи, которые помогут освоить инструмент, познакомят с рабочими кейсами с использованием ПО. Делимся пользой и свежими идеями, подборками книг и реализованными задумками.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии1

Почему я выбрал DeltaChat для приватного общения

Время на прочтение3 мин
Количество просмотров11K

Нет централизованного сервера. Используется любой email-сервер, который укажете

Надежное e2e-шифрование Autocrypt Level 1. Реализация прошла независмый аудит

Open Source, не преследует коммерческих целей, финансируется НКО и пользователями

Аудитория ~1М. Точно не оценить из-за отсутсвия телеметрии

Недостатки: не такой быстрый и отсутсвуют (пока) редактирование сообщений, реакции и треды

Читать далее
Всего голосов 26: ↑24 и ↓2+22
Комментарии45

Как я начал писать симулятор распределённой системы, а закончил WebAssembly

Время на прочтение8 мин
Количество просмотров5.6K

Несколько месяцев назад мне захотелось сдуть пыль со своего аккаунта в Steam и поиграть в старые игры про программирование.

While True Learn в очередной раз показалась слишком скучной, я пару дней позалипал в TIS-100, реализуя свой многопоточный процессор, но в конечном итоге осознал, что интереснее не играть в игры про программирование, а самому писать такие игры.

В статье рассказываю, что из этого получилось и на чём я сломался. Под катом —гремучая смесь из ссылок, картинок, теории распределённых систем и способов визуализации Python в 2022 году.

Читать далее
Всего голосов 46: ↑35 и ↓11+24
Комментарии10

Raft (не)всемогущий: какие надстройки повышают надёжность алгоритма

Время на прочтение12 мин
Количество просмотров6.7K

Меня зовут Сергей Петренко, вот уже четыре года я работаю над репликацией в Tarantool, и сегодня хочу рассказать про слабые места алгоритма Raft и способы их преодоления. Эта статья — вольный пересказ нашего с Борисом Степаненко доклада на Hydra 2022. Если читатель не знаком с Raft, то предлагаю ознакомиться с моей статьёй о нём.

Читать далее
Всего голосов 61: ↑61 и ↓0+61
Комментарии8

Сравнение гетерогенных блокчейнов (Cosmos, Polkadot, Avalanche)

Время на прочтение28 мин
Количество просмотров16K

Данная статья поможет всем интересующимся лучше узнать про технические особенности платформ: Cosmos, Polkadot, Avalanche.

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

Цель этой статьи - помочь разработчикам, исследователям, предпринимателям и всем, кто изучает блокчейн и децентрализованные системы, понять эту смену парадигмы в блокчейн сетях.

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии6

Как мы сжимаем данные в больших проектах

Время на прочтение6 мин
Количество просмотров9.1K

Привет! Меня зовут Александр Кленов, и я работаю в Tarantool. В апреле вышел Tarantool 2.10 Enterprise Edition – обновленная версия платформы in-memory вычислений. В версии 2.10 появилось несколько новых функций, о которых уже немного рассказывали на Хабре

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

Читать далее
Всего голосов 56: ↑56 и ↓0+56
Комментарии8

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн

Учимся жить с Kafka без Zookeeper

Время на прочтение13 мин
Количество просмотров29K

При всех достоинствах Kafka как распределенного хранилища потока сообщений, боль вызывало раздельное хранение метаданных (топологии разделов, конфигурации кластера и прочего) и необходимость запуска в кластере рядом с Kafka еще и Apache Zookeeper. Побочным эффектом такого соседства (кроме дополнительных забот об администрировании и мониторинге) является долгое время восстановления после сбоя при больших размерах кластера, значительном количестве разделов или сложной топологии групп. Но ситуация улучшается и отличная новость появилась полторы недели назад в KIP-833, что в ближайшей версии Kafka 3.3 новый протокол согласования метаданных (KRaft), работающий внутри Kafka без Zookeeper, будет признан Production-Ready и далее постепенно зависимость от Zookeeper будет помечена как deprecated и удалена. В этой статье мы поговорим об особенностях протокола KRaft и разберемся как настроить новый кластер Kafka без необходимости установки Zookeeper.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

Yandex Planner. Как планировать вычислительные мощности

Время на прочтение14 мин
Количество просмотров12K


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

Меня зовут Сергей Фомин, я разработчик Yandex Planner. Мой пост будет посвящён тому, как мы эффективно решаем задачу планирования вычислительных мощностей.

Сначала я расскажу, что такое Yandex Planner и почему мы решили писать своё решение. После этого мы поговорим про то, в чём заключается задача планирования, почему она не такая простая, как может показаться на первый взгляд. И в качестве одного из способов решения задачи мы рассмотрим дефрагментацию ресурсов. Поехали.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии3

Как мы мигрировали критичную БД с Oracle в CockroachDB

Время на прочтение6 мин
Количество просмотров7.3K

… простите, мигрировали куда? Туда!


CockroachDB — PostgreSQL-совместимая (по SQL-синтаксису DML) распределенная СУБД с открытым кодом (ну, почти). Ее название символизирует, что она, как таракан, выживает в любых экстремальных ситуациях. Лично мне крайне импонирует такая СУБД с привычным SQL-интерфейсом, настройка которой занимает 5 минут, которая хранит данные — как Kafka — на нескольких узлах в нескольких ЦОДах сразу, имеет настраиваемый replication factor на уровне конкретных таблиц, легко переживает потерю как одного узла, так и целого ЦОДа, использует для этого механизм распределенного консенсуса Raft и при этом еще и имеет строгую консистентность и уровень изоляции serializable. Разработчики CockroachDB — выходцы из компании Google, которые решили коммерциализировать архитектуру распределенной СУБД Spanner.



Недостатки тоже есть, не переживайте, но про них лучше в другой раз :)

Почему именно CockroachDB?


Среди распределенных SQL-СУБД есть альтернативы в виде Yugabyte и TiDB, и с прошлого месяца YDB. Вопрос «Почему?» связан в первую очередь с тем, зачем вообще нужна БД. Как мне кажется, БД нужна для того, чтобы надежно хранить данные и доставать их через стандартный язык SQL, а удобство ее использования — приятный, но вторичный фактор. Тут надо заметить, что я почти 9 лет проработал в техподдержке Oracle, и видел достаточно случаев порчи БД, как из-за дисковых сбоев и ошибок администраторов, так и из-за багов в приложении и даже в коде самой СУБД.

Ключевыми критериями выбора были:
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии21

Руководство по обеспечению высокой доступности в Kubernetes

Время на прочтение11 мин
Количество просмотров11K

Перед вами полноценный гайд по запуску приложений с высокой доступностью (HA) в Kubernetes. В его основу лёг мой многолетний опыт работы с этой системой, приправленный лучшими практиками из официальной документации OpenShift и Kubernetes.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии4

Низкоорбитальная навигационная система: подводные камни

Время на прочтение5 мин
Количество просмотров5.1K

За час до того, как я сел писать эти строки, первый спутник-демонстратор низкоорбитальной навигационной системы Pulsar отделился от разгонного блока.

Идею этой системы я изложил в прошлой статье. Компания Xona планирует вывести около 300 небольших спутников на низкую орбиту. Каждый спутник будет снабжен приемником сигналов глобальных навигационных систем (ГНСС), по их сигналам спутники будут определять свои траектории движения и синхронизироваться. Из-за удаленности от поверхности земли и ориентации антенны, спутники будут оставаться вне досягаемости наземных постановщиков помех.

Каждый спутник системы будет формировать собственный сигнал, который благодаря близости к поверхности планеты, окажется в 100 раз мощнее сигналов ГНСС. В совокупности с криптографической защитой сигнала это обещает устойчивость навигации к помехам и спуфинговым атакам. А за счет простоты спутников и их вывода, простоты комплекса управления, стоимость всей системы можно уместить в несколько сотен млн долларов.

Читать далее
Всего голосов 24: ↑23 и ↓1+22
Комментарии9

Решение проблемы в управлении конкурентными вычислениями

Время на прочтение4 мин
Количество просмотров3.7K

От переводчиков. Эту коротенькую статью Дейкстры, которой уже 57 лет, Лесли Лампорт назвал «работой, которая начала всю область конкурентных и распределенных алгоритмов». Но на Хабре её до сих пор вроде бы не переводили. Поскольку мы скоро проведём конференцию Hydra, которая посвящена именно этой области, решили восполнить этот пробел. Кстати, как думаете, как лучше переводить на русский слово concurrent? Мы выбрали вариант «конкурентный», но консенсуса тут вроде бы нет.

Эдсгер В. Дейкстра
Технический университет Эйндховена, Нидерланды

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

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии10

Низкоорбитальная навигационная система Xona Pulsar

Время на прочтение4 мин
Количество просмотров3.5K

Успех Starlink проложил дорогу молодым компаниям, претендующим на заполнение низкой околоземной орбиты своими малыми и не очень спутниками. Производить аппараты на конвейере, запускать сотнями и тысячами, разрабатывать и разворачивать группировку за десятки месяцев - всё это "New Space". Теперь HawkEye360 следит за пожарами лесными и людскими, Spire собирает данные о погоде, OneWeb догоняет Маска, SatelliteVU запускает в космос тепловизоры...а Xona Space Systems готовит для нас новую навигационную систему Pulsar!

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии15
Изменить настройки темы

Вклад авторов

Работа