Все потоки
Поиск
Написать публикацию
Обновить
17.82

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

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

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

Техники обработки отказов сервиса в микросервисных архитектурах, или Альтернативы Circuit Breaker

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

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

Читать далее

Контроллер АСУНО с ВЕБ интерфейсом настроек

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

Это моя первая статья на Хабр. Статья посвящена разработке и некоторым особенностям контроллера, поэтому вопросы, относящиеся к организации работы сервера не рассматриваются в данной статье. Но для того, чтобы лучше понять работу контроллера АСУНО некоторые моменты все же будут даны. В статье будет рассмотрено назначение контроллера, дана функциональная схема, фото самого контроллера и подключение внешнего оборудования. В статье приводятся принтскрины веб интерфейса. ВЕБ интерфейсом легко пользоваться, он интуитивно понятен для обслуживающего персонала. Хотя им пользуются только при настройке контроллера во время пусконаладочных работ это сильно экономит время настройки и подготовки контроллера к работе. Наличие в контроллере ТСР клиента и ТСР сервера расширяет возможности диагностики оборудования. Контроллер выполнен на процессоре PIC32MX795F512L фирмы Micrpchip. ПО разработано без использования ОС, написано на С. Возможно данная статья будет иметь продолжение, если заинтересует читателей. Приятного чтения. Область применения

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

Читать далее

DeDLOC: обучаем большие нейросети всем миром

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


Как показывает опыт последних лет, самые интересные результаты в deep learning получаются при использовании больших нейросетей, обученных на массивах неразмеченных данных. Правда, для создания этих моделей нужен суперкомпьютер с десятками или сотнями мощных видеокарт, а также быстрым соединением между серверами. Но что делать, если таких ресурсов нет, а в открытом доступе хорошей модели под вашу задачу не нашлось?

Сегодня я расскажу про технологию, которая позволяет учить нейросети, объединяя через интернет вычислительные мощности энтузиастов из любой точки мира. В её основе лежит совместная научная работа Yandex Research, Hugging Face, студентов ШАД, ВШЭ и МФТИ, а также профессора Университета Торонто. Технология уже получила боевое крещение в ходе реального эксперимента, подробно описанного ниже. В конце статьи вы узнаете, как поставить такой эксперимент самостоятельно — модель и код доступны всем желающим.

Претрейн для всех, и пусть никто не уйдёт обиженным


За последние несколько лет во многих областях deep learning (например, в обработке естественного языка) стала популярной идея self-supervised learning. Оказалось, что для получения полезных в целевой задаче представлений не нужна большая размеченная выборка. Достаточно обучить модель на какой-то простой сигнал, построенный из неразмеченных данных, которых чаще всего в достатке. В частности, известные многим архитектуры BERT, GPT и языковая модель YaLM обучаются именно так.
Читать дальше →

Apache Flink и потоковая обработка данных для решения задач IoT

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

К 2021 году прогнозируется, что около 16 млрд из приблизительно 28 млрд подключенных устройств по всему миру, будут так или иначе связаны в рамках концепции интернета вещей. Интернет уходит в вещность, и надо как-то справляться с растущим потоком данных.

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

Читать далее

Как мы создаём почтовую систему нового поколения Mailion. Архитектура кластера DOS

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

МойОфис продолжает серию статей о корпоративной почтовой системе Mailion (1, 2), разрабатываемой при грантовой поддержке РФРИТ, и входящем в его состав объектном хранилище DOS. Мы уже рассказали об основных оптимизациях DOS, которые позволяют увеличить экономическую эффективность хранения данных, а также коснулись общих принципов построения масштабируемых хранилищ. Сегодня мы поговорим о том, как эти принципы применялись на практике в ходе работ над кластером DOS.

Читать далее

SSE, нотификации, Node.js и при чём тут C#?

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

Вписавшись в очередной провальный заранее стартап, мне прилетела задача: нужны уведомления на сайте. Ладно - сказал я себе. Открываю любимую IDE и начинаю писать очередной микросервис.

До этого я никогда не занимался уведомлениями, но был осведомлен, что есть для этого несколько путей: WebSocket, SSE и Long Polling.

Читать далее

Учебник по Solidity: Все о модификаторах

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

В документации Solidity модификаторы определяются следующим образом:

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

Из этого определения можно понять, что модификатор направлен на изменение поведения функции, к которой он присоединен.

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

Модификаторы уменьшают избыточность кода. Вы можете повторно использовать один и тот же модификатор в нескольких функциях, если вы проверяете одно и то же условие в смарт-контракте.

Читать далее

Снится ли GGG Тиму Бернерсу-Ли?

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

В 2007 году знаменитый автор слова из трёх букв 'W' опубликовал в своем блоге рассуждения о востребованности слова нового, на сей раз - из трёх букв 'G'. "Гигантский Глобальный Граф" - так предполагалось это произносить в полном, необрезанном виде. О чём шла речь? О том, что слово "граф" больше подходит для обозначения технологии представления взамосвязанных данных, нежели "паутина", пусть даже и "семантическая". Термин не прижился. Отчасти, возможно, из-за некоторой тавтологичности, отчасти же - из-за того, что привычная "паутина" оказалась милее сердцу обывателя, чем какой-то "граф".

Ну, да ладно, "ГГГ" не всплыло взлетело - не беда, ведь в конце концов - это лишь один из возможных псевдонимов планетарной семантической сети. Но что представлялось сиру Тиму в качестве цели для достижения (с помощью новых-то технологий связывания данных)?.. "Важны не документы, а то, что в них содержится. Очевидная истина." - писал он, - "...когда я бронирую билет на авиарейс, меня интересует именно этот рейс. Не страница рейса на сайте путешествий или страница рейса на сайте авиакомпании, но URI самого авиарейса. Вот что я поставлю в закладки. И каким бы устройством я ни воспользовался для открытия закладки, оно будет иметь доступ к ситуационно зависимому обзору всего, что я знаю об этом рейсе из разных источников. Задача заказа и совершения рейса потребует множества взаимодействий. И на их протяжении, эти задача и рейс будут на первом месте в моём осознании, веб-сайты – на втором, а сети и устройства – на третьем."

Читать далее

Способы снизить потребление газа смарт-контрактами

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

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

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

Читать далее

Понимаем соединения и пулы

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

Прим. перев.: автор этой статьи — технический архитектор Sudhir Jonathan — рассказывает об одном из тех базовых механизмов, с которым сталкивается каждый пользователь, разработчик и системный администратор. Однако до возникновения определённых (и иногда довольно специфичных) проблем многие не задумываются о том, как всё работает «под капотом». Автор устраняет этот пробел, используя популярные фреймворки, серверы БД и приложений в качестве понятных примеров.

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

Читать далее

Еще 5 причин выбрать Apache Pulsar вместо Apache Kafka

Время на прочтение7 мин
Количество просмотров13K
Apache Kafka — крайне популярное в настоящий момент решение для обмена сообщениями. Тем более интересно посмотреть какие альтернативы для нее существуют. Особенно декларируемые, как более интересные по ряду параметров.

Под катом — перевод статьи-сравнения Apache Pulsar и Apache Kafka. Статья в некоторой степени рекламная, т.к. написана заинтересованным лицом, но как минимум, возбуждает интерес копнуть глубже. Поехали.

Переведено @middle_java
Читать дальше →

Как и зачем мы сделали Spark-коннектор к Greenplum

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

Всем привет! Меня зовут Андрей, я работаю системным архитектором в Arenadata. В этой статье расскажу, как и зачем мы сделали свой инструмент для обмена данными между Arenadata DB (аналитическая MPP-СУБД на базе Greenplum) и фреймворком для распределенной обработки данных Apache Spark (входит в экосистему Arenadata Hadoop).

Читать далее

Книга «Безопасно by design»

Время на прочтение10 мин
Количество просмотров6.6K
image Привет, Хаброжители! «Безопасно by Design» не похожа на другие книги по безопасности. В ней нет дискуссий на такие классические темы, как переполнение буфера или слабые места в криптографических хэш-функциях. Вместо собственно безопасности она концентрируется на подходах к разработке ПО. Поначалу это может показаться немного странным, но вы поймете, что недостатки безопасности часто вызваны плохим дизайном. Значительного количества уязвимостей можно избежать, используя передовые методы проектирования. Изучение того, как дизайн программного обеспечения соотносится с безопасностью, является целью этой книги. Вы узнаете, почему дизайн важен для безопасности и как его использовать для создания безопасного программного обеспечения.
Читать дальше →

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

Концепции libp2p. Publish/Subscribe

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

Перевод статьи с портала проекта Libp2p.

Публикация/Подписка (Publish/Subscribe, сокр. pub/sub или PubSub - прим. перев.) - это система, в которой одноранговые узлы (в дальнейшем - просто "узлы" или "пиры" (peers) - прим. перев.) объединяются вокруг интересующих их тем. Говорят, что пиры, заинтересованные в какой-либо теме, подписаны на эту тему:

Читать далее

DRS как средство оптимизации размещения виртуальных машин в облаке Mail.ru Cloud Solutions

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


Source


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


В облаке Mail.ru Cloud Solutions используется собственная реализация механизма DRS. Я Артем Карамышев, руководитель команды системного администрирования, расскажу о базовых принципах, на которых строится работа DRS у нас в облаке.

Читать дальше →

Сборка и тестирование в монорепозитории: кластер распределённой сборки DistBuild. Доклад Яндекса

Время на прочтение11 мин
Количество просмотров3.8K
Как собирать 7000 изменений в день в огромном монорепозитории? Я постарался рассказать об этом на недавнем Я.Субботнике. Во вводной части я напомнил, чем мы в принципе занимаемся в отделе технологий разработки Яндекса. Дальше поговорили про устройство нашего кластера, а на десерт пообсуждали, как у нас используются вычислительные ресурсы на этом кластере — насколько хорошо они утилизируются.

Чем мы занимаемся


— Итак, давайте начинать. Наверняка все из вас каким-то образом связаны с IT и знают нормальный жизненный цикл или каждодневную работу разработчика. Он приносит основную ценность тем, что пишет код.
Читать дальше →

Незаслуженно забытый ZooKeeper

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

В наш век распределенных микросервисов постоянно возникают распределенные проблемы. Это самые обычные computer science проблемы, но они распределены по разным серверам или даже разным датацентрам. Для их решения часто выдумывают много разного. Не делайте так, просто возьмите ZooKeeper. Он, несмотря на то что придуман бумерами, просто работает. Он решит немалую часть ваших проблем с распределенными системами.

Читать далее

Мониторинг запросов в Greenplum

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

Часто при работе с разными базами данных необходимо отслеживать выполнение текущих запросов. В основном это связано с задачами администрирования или аналитики. Средства мониторинга, позволяющие управлять и наблюдать за выполнением запросов, сильно помогают в этом. Я расскажу о том, с какими задачами мы столкнулись при проектировании и реализации системы мониторинга запросов для Arenadata DB.

Читать далее

Apache Ignite 3: распределённая БД своими руками, next level

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

«В теории нет разницы между теорией и практикой. А на практике есть»
Йоги Берра

Распределённые системы — это вообще интересная и непростая тема, мы по ней проводим целую конференцию Hydra. А у опенсорсного проекта Apache Ignite (и его коммерческой версии GridGain) есть ещё и своя интересная специфика: эта база данных добивается производительности с помощью in-memory computing, помещая данные в оперативную память.

Сейчас компания GridGain готовит новые версии Apache Ignite 3 и GridGain 9. А ещё она недавно поучаствовала в Hydra, и в связи с этим мы решили спросить её: как выглядит работа над этими новыми версиями? C какими вопросами приходится сталкиваться, когда делаешь распределённую БД? Ответ компании — под катом.

Читать далее

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Время на прочтение25 мин
Количество просмотров173K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


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

Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?
Читать дальше →