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

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

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

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

Apache Ignite в облаке AWS — базовый пример

Время на прочтение6 мин
Количество просмотров1.8K
Облачные вычисления так популярны по нескольким причинам: они гибкие, относительно дешевые по сравнению с поддержкой внутренней инфраструктуры и позволяют отлично автоматизировать распределение ресурсов (и тут тоже экономия). Когда объем обрабатываемых данных растет из года в год, нельзя полагаться на вертикальную масштабируемость, покупая все более и более дорогие серверы. Данные должны быть распределены по нескольким более дешевым системам (кластерам), где могут надежно храниться, обрабатываться и возвращаться к пользователю при необходимости. Создание таких систем — непростая задача, но, к счастью, есть решения, которые отлично вписываются в облачную архитектуру. Я говорю об Apache Ignite.

Подготовка среды


Я собираюсь использовать AWS-облако для развертывания кластера Ignite. Для целей обучения нам хватит бесплатных машин базового уровня (AWS free tier). Я выбрал образ Ubuntu 18.04, но в целом это неважно. Перед развертыванием первых машин нам надо настроить группу безопасности (Security Group). В ней должны быть определены сетевые правила для портов, необходимых для узлов Ignite.


Рисунок 1 – Конфигурация Security Group
Читать дальше →

Часть 3. MPI — Как процессы общаются? Сообщения типа точка-точка

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

В этом цикле статей речь идет о параллельном программировании с использованием MPI.

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

Окунуться в процесс

Распределенный искусственный интеллект на платформе InterSystems IRIS

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

Автор: Сергей Лукьянчиков, инженер-консультант InterSystems

Что такое распределенный искусственный интеллект?

Попытки отыскать «железное» определение ничего не дали: видимо, понятие немного «обогнало время». Но можно попробовать разобрать семантически само понятие – тогда получится, что распределенный искусственный интеллект это тот же самый ИИ (см. наши попытки дать «прикладное» определение), только еще и разнесенный на несколько компьютеров, не объединенных в единый вычислительный кластер (ни по данным, ни по приложениям, ни по доступу к отдельным компьютерам в принципе). Т. е. в абсолюте, распределенный искусственный интеллект должен быть распределен так, чтобы ни с одного из участвующих в этом «распределении» компьютеров не было возможности получить прямой доступ ни к данным, ни к приложениям других компьютеров: единственной альтернативой становится передача фрагментов данных или скриптов приложений через «явные» сообщения. Любые отступления от этого абсолюта, по идее, приводят к возникновению «частично распределенного искусственного интеллекта» – например, данные распределены, а сервер приложений общий. Или наоборот. Так или иначе, мы получаем на выходе набор «федерированных» моделей (т. е. либо обученных каждая на своем источнике данных, либо обученных каждая своим алгоритмом, либо «и то и другое вместе»).

Сценарии распределенного ИИ «для масс»

Речь не пойдет о периферийных вычислениях, операторах конфиденциальных данных, поисковых запросах на мобильных телефонах и тому подобных увлекательных, но не самых (пока что) осознанно применяемых в широких кругах пользователей сценариях. Гораздо более «жизненным» может стать, например, следующий сценарий (детальную демонстрацию можно и нужно посмотреть здесь): на предприятии работает продуктивное AI/ML-решение, качество его работы должен систематически контролировать внешний дата-саентист (т.е. эксперт, не являющийся сотрудником предприятия). Предоставить дата-саентисту доступ к решению предприятие не может (по различным соображениям), но может отправлять ему выгрузку записей из той или иной таблицы по заданному расписанию или по наступлении определенного события (например, завершение очередного сеанса обучения одной или нескольких моделей решения). При этом предполагается, что дата-саентист владеет какой-нибудь версией AI/ML-механизмов, которые были интегрированы в продуктивное решение, работающее на предприятии – скорее всего, сам же дата-саентист эти механизмы и разрабатывает, занимается их усовершенствованием и адаптацией к конкретной задаче конкретного предприятия. Размещением этих механизмов в продуктивное решение, мониторингом их эксплуатации и прочими аспектами жизненного цикла занимается дата-инженер (является сотрудником предприятия).

Читать далее

Что нужно для самовосстановления удаленных рабочих мест?

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

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

Читать далее

Приватность в сети Биткоин: Лучшие практики

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

Приватность, особенно в контексте финансов, сложно переоценить. Очередной перевод статьи на данную тему.
“Приватность необходима открытому обществу цифрового века. Приватность и секретность не одно и то же. Частное дело – это то, о чем, по мнению человека, всему миру знать не нужно, о секретном же деле не должен знать вообще никто. Приватность – это возможность выбирать, какую информацию о себе открыть миру.”

Читать далее

Создаем легальные NFT в 3 шага, и защищаем как объект интеллектуальной собственности

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

Давайте немедленно упорядочим хаос и остановим скам. Текущая ситуация и международное право.

Взрыв интереса и рост рынка NFT токенов поднял на поверхность ключевые вопросы токенизации. Мы разработали юридически значимую модель создания NFT на основе Парижской Конвенции по охране промышленной собственности и нового инструмента Всемирной организации интеллектуальной собственности (ВОИС) при ООН. Данный метод имеет надгосударственный правовой статус и не требует дополнительной легализации в 177 странах мира. А еще это занимает всего 15 минут…

Читать далее

С чего начать писать микросервис на C++

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

Около 3х лет занимаюсь разработкой микросервисов, однако изначального понимания подходящего стека технологий у меня не было. Испробовал множество различных подходов(одними из которых были OpenDDS и apache-thrift), но в конце концов остановился на RestApi.

RestApi общается по средствам HTTP-запросов, которые в свою очередь представляют структуру данных из заголовков и тела запроса передаваемые через сокет. Первым на что я обратил внимание это boost/asio который предоставляет tcp-сокеты, но тут возникают сложности с объемами разработки:

Читать далее

Истерия с NFT и современным искусством, поданная через призму Пелевина: вам нужно только 10 мин., чтобы быть в теме

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

Эпиграф: Я вижу искусство как некое поле событий, на одном полюсе которого – веселые заговоры безбашенной молодежи с целью развести серьезный мир на хаха, охохо или немного денег, а на другом бизнес-проекты профессиональных промывателей мозгов, пытающихся эмитировать новые инвестиционные инструменты… В. Пелевин, iPhuck 10

Уверен, что даже далекие от блокчейна люди уже слышали про NFT-токены, которые современные творцы загоняют доверчивым миллионерам за бешенные деньги. Даже Хабр отметился такими публикациями: вот кто-то покупает бесплатный видеоклип за 6,5 млн. бакинских, а вот ставка на самый первый твит достигает 2,5 миллиона (опять не рублей), и это явно не предел. Когда читаешь комментарии, понимаешь, что читатели немного, скажем так, удивляются ситуации и явно не понимают — а зачем платить так много за то, что и так находится в свободном доступе. Причем, оно мало того, что свободное, так еще и легко копируемое. Т.е. рааааз - у тебя хоть тысяча таких твитов. 

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

Заходите, будет весело.

Суть NFT и психология их покупок

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

В 2021-м году вся сеть пестрит сообщениями об рекордных продажах NFT: карточки спортсменов и работы художников разлетаются на раз. Но для людей старой школы, NFT довольно странная вещь - так как скопировать без потери качества медиа-файл который в нем заключен может любой и вроде как защиты никакой нет… Но! Имя автора и владельца NFT остаются неизменными и подтверждаются в любой момент независимыми и защищенными записями в блокчейн. Так в чем же феномен такого успеха NFT?

Читать далее

Как e2e автотесты на Selenide помогают QA-команде при частых релизах

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

Всем привет! Я Иван, старший инженер-тестировщик в КРОК. Уже 6 лет занимаюсь тестированием ПО. Из них 3 года внедряю автоматизацию тестирования на различных проектах - люблю всё автоматизировать. На рабочей машине много разных “батников” и bash-скриптов, которые призваны упрощать жизнь.

Недавно у нас стартовал проект по модернизации и импортозамещению системы электронного документооборота (СЭД) в одной крупной организации. Система состоит из основного приложения и двух десятков микросервисов, в основном - для построения отчётов и интеграции с другими подсистемами. Сейчас в проекте уже настроено больше 100  автотестов, и они сильно помогают при частых релизах, когда времени на регресс почти нет. Весь набор автотестов выполняется примерно за 25 минут, в среднем экономим до 3,5 часов ручной работы при каждом запуске. А запускаем мы их каждый день.

Дальше будет про то, как мы выбирали технологии и инструменты, какой  каркас и подход к организации автотестов в итоге получился. И почему мы в КРОК решили тиражировать этот подход в других проектах, реализация которых основана на Content Management Framework (CMF) под СЭД. На базе CMF у нас есть комплексное решение для автоматизации процессов документооборота КСЭД 3.0. Конечно, отдельные решения по автотестам можно применять под любую СЭД.

Ещё расскажу про проблемы, и как мы их решали. Пост будет интересен и полезен, если в ваших автотестах необходимо подписывать документ электронной подписью (ЭП) в докер-образе браузера, проверять содержимое pdf файла, выполнять сравнение скриншотов или интегрироваться с одной из популярных Test Management System.

Читать далее

Децентрализованное Torrent хранилище в DHT

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

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

Вместе с этой системой существуют команды для взаимодействия с ней. Их не так уж много, но для создания децентрализованной БД нужно всего два: put и get.

Об этом и пойдёт речь далее...

Устройство гетерогенного кластера выполнения задач. Доклад Яндекса

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

Тысячам разработчиков в Яндексе каждый день нужно решать и выполнять множество самых разных задач: от простых скриптов, запускаемых по расписанию, до сложных релизных пайплайнов. Как построить эффективную систему выполнения задач общего назначения? Как сделать ее отказоустойчивой и масштабируемой отдновременно? Как подружить в одном кластере гетерогенное железо и различные операционные системы? Как управлять тысячами серверов и не сойти с ума в процессе разработки и эксплуатации такой огромной системы? На все перечисленные вопросы я ответил в докладе на первой DevTools Party. Это новая серия митапов: будем выступать сами и приглашать экспертов из других компаний, чтобы обмениваться мнениями в сложной теме — инфраструктуре разработки.

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

Смотреть видео и читать конспект

Cortex и не только: распределённый Prometheus

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

В последнее время Prometheus стал де-факто стандартом для сбора и хранения метрик. Он удобен для разработчиков ПО - экспорт метрик можно реализовать в несколько строк кода. Для DevOps/SRE, в свою очередь, есть простой язык PromQL для получения метрик из хранилища и их визуализации в той же Grafana.

Но Prometheus имеет ряд недостатков, способы устранения которых я хочу рассмотреть в этой статье. Также разберём деплой Cortex.

Ныряем

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

Интеграция: синхронное, асинхронное и реактивное взаимодействие, консистентность и транзакции

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

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

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

Читать далее

FLeet – гроза Большого Брата?

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


Новое исследование EPFL и INRIA показывает, что наши мобильные устройства могут выполнять обучение моделей самостоятельно, являясь частью распределённой сети и не раздавая наши данные технологическим компаниям.

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

Вычислительная система пятого поколения

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

В 80 годы прошлого века правительство Японии совершило попытку создать распределенную вычислительную систему следующего поколения с элементами ИИ. Проект закончился достаточно закономерным провалом. Причина провала достаточно проста, почему то посчитали, что простого наличия технологии производства больших интегральных схем хватит для качественного "скачка" в вычислительных технологиях (своеобразный переход качества в количество). Да, история повторилась, после изобретения компьютера, тоже была необоснованная уверенность в скором появлении ИИ и тоже провалилась.

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

Читаем и думаем (второе обязательно)

aSocial — полностью распределенная социальная сеть

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

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

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

Webtor.io и в чем его отличия от обычного сидбокса

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

Сегодня я вам расскажу вам о сервисе webtor.io для проигрывания торрентов онлайн. О том что он умеет, зачем нужен, а также с какими трудностями пришлось столкнуться в процессе разработки читаем далее...

Читать далее

git-ssb — децентрализованный хостинг git-репозиториев

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

SSB (Secure Scuttlebutt) - это децентрализованная социальная сеть и протокол, на основе которого она работает. git-ssb заворачивает обычные git-репозитории в этот протокол. SSB хочет заменить собой Facebook, а git-ssb - GitHub. Под катом - краткое руководство по git-ssb. Актуально для тех, кому дискомфортна сама идея использования централизованных сервисов в качестве посредника. Своеобразная красная таблетка с полагающимися в этом случае неожиданными последствиями.

Wake up, Neo …

Реализация распределённых вычислений на языке python с использованием технологии docker

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

Распределённые вычисления представляют собой способ решения трудоемких вычислительных задач с использованием нескольких компьютеров, чаще всего объединённых в параллельную вычислительную систему.

Одно из первых упоминаний распределенных вычислений относится к 1973 году. Сотрудники научно-исследовательского центра Xerox PARC Джон Шох и Джон Хапп написали программу, которая рассылала себя по другим работающими компьютерам через локальную сеть PARC.

Впоследствии, в связи с развитием и ростом количества персональных компьютеров, распределённые вычисления стали использоваться всё более и более широко. Так, в конце 1980- х годов Арьен Ленстра и Марк Менес написали программу для факторизации длинных чисел. Она рассылала задания на компьютеры участников по электронной почте и таким же образом принимала ответы.

Ещё одним значимым событием было создание проекта SETI@Home (Search for Extra-Terrestrial Intelligence at Home) для поиска внеземного разума путём анализа данных с радиотелескопов, в том числе на домашних компьютерах участников. Данный проект был запущен в 1999 году и оста новлен в 2020-м. Эта распределенная система была построена на платформе BOINC, созданной в университете Беркли.

В дальнейшем разработки по созданию различных распределённых систем активно продолжались, и в настоящее время они применяются в самых различных областях. В частности, распределённые вычисления широко используются для математических задач. Типичным примером является факторизация чисел (разложение их на произведение простых множителей).

Ещё одной важной областью применения распределённых вычислений является обработка больших данных с использованием методов машинного обучения и Data Mining. В качестве языка программирования для этой цели в последние годы на лидирующие позиции выходит язык Python. По состоянию на март 2020 года, согласно рейтингу TIOBE, Python находится на третьем месте, хотя ещё в 2015 году занимал лишь седьмое.

Одной из известных проблем языка Python является относительно низкая производительность в сравнении с компилируемыми языками – такими как C++. Данный недостаток является дополнительным поводом применять параллельное и распределённое программирование в процессе разработки.

Читать далее