Обновить
12.56

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

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

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

FritzFrog — новое поколение ботнетов

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

Краткое содержание


  • Guardicore обнаружили сложный ботнет пиринговой (P2P) сети FritzFrog, который еще с января 2020 года активно взламывал SSH серверы.
  • Вредоносное ПО на Golang: FritzFrog исполняет модульный, мультипоточный и безфайловый вредоносный код на Golang, который не оставляет следов на жестком диске зараженного устройства.
  • Активное таргетирование государственных, образовательных, финансовых и прочих ресурсов: FritzFrog пытался брутфорсить и распространяться на десятках миллионов IP адресов правительственных офисов, образовательных учреждений, медицинских центров, банков и множества телекоммуникационных компаний. Среди них успешно подвержены атаке оказались более чем 500 серверов, включая известные университеты США и Европы, и одну железнодорожную компанию.
  • Сложность: FritzFrog полностью проприетарен, его имплементация P2P написана с нуля, что говорит о высоком уровне профессионализма его создателей в области разработки ПО.
  • Перехват: Guardcore Labs разработали клиентскую программу на Golang, способную перехватывать P2P соединения FritzFrog и подключаться к сети как пир.
  • Принадлежность: мы не смогли определить конкретную группу, ответственную за создание FritzFrog, однако текущий ботнет частично похож на ранее известный ботнет Rakos.

Введение


FritzFrog это очень изощренный пиринговый ботнет, который активно взламывает SSH серверы по всему миру. Благодаря своей децентрализованной структуре он распределяет контроль по всем своим узлам. В этой сети нет единой точки отказа, и пиры постоянно общаются друг с другом, чтобы поддерживать ее в устойчивом, обновляемом и постоянно активном состоянии. P2P соединение проводится через зашифрованный канал с использованием AES для симметричного шифрования и протокола Диффи-Хеллмана для обмена ключами.
Читать дальше →

Практикуем разработку небольшого веб-приложения с нуля

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

Hero image


Быть новичком — значит исследовать новые горизонты программирования, шагая в неизвестность, надеясь что где-то там будет лучше.


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


Так о чём это я. Сегодня я здесь чтобы поделится с вами своим первым опытом создания системы из Hedless CMS, API и блога. В связи с отсутствием достаточного количества подобного материала, особенно русскоязычного, я надеюсь что эта статья поможет вам создать подобную систему самостоятельно, избегая ошибок, которые я совершал.


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


Исходный код проекта вместе с пошаговым руководством по пользовательскому интерфейсу и API (рекомендую не читать, пока не закончите статью):


Vidzhel/Bluro

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

Распределённые СУБД для энтерпрайза

Время на прочтение8 мин
Количество просмотров6.8K
CAP-теорема является краеугольным камнем теории распределённых систем. Конечно, споры вокруг неё не утихают: и определения в ней не канонические, и строгого доказательства нет… Тем не менее, твёрдо стоя на позициях бытового здравого смысла™, мы интуитивно понимаем, что теорема верна.



Единственное, что не очевидно, так это значение буквы «P». Когда кластер разделился, он решает – то ли не отвечать, пока не будет набран кворум, то ли отдавать те данные, которые есть. В зависимости от результатов этого выбора система классифицируется либо как CP, либо как AP. Cassandra, например, может вести себя и так и так, в зависимости даже не от настроек кластера, а от параметров каждого конкретного запроса. Но если система не «P», и она разделилась, тогда – что?

Ответ на этот вопрос несколько неожиданный: CA-кластер не может разделиться.
Что же это за кластер, который не может разделиться?
А вот

RIPE Atlas

Время на прочтение10 мин
Количество просмотров11K
Всем доброго времени суток! Свою дебютную статью на habr хочу посвятить весьма интересной теме – системе контроля качества сети Интернет RIPE Atlas. Частично поле моих интересов затрагивают вопросы исследования Интернета или киберпространства (термин стремительно набирает популярность, особенно в научных кругах). Материалов по RIPE Atlas в интернете, в том числе на habr, предостаточно, но мне они показались недостаточно целостными. По большей части, в статье использовалась информация с официального сайта RIPE Atlas и собственные соображения. Время для чтения — 8 минут.

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

Добавление ноды в Skydive топологию вручную через Skydive client

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

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


Чтобы заинтересовать вас, приведу пару скриншотов про Skydive. Чуть ниже будет пост по введению в Skydive.



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

Vela → умный кеш для time series и не только

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

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


Фламинго


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

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

Вот как это было сделано

Путеводитель по интеллектуальному учёту электроэнергии в России (для энергетиков и потребителей)

Время на прочтение24 мин
Количество просмотров51K
Путеводитель по интеллектуальному учёту охватывает все наиболее важные составляющие этого процесса – юридические, технические, организационные и экономические.



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

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

1. Что такое интеллектуальный учёт?


Сначала определимся с понятиями. Существует обычный счётчик (далее мы будем говорить о счётчиках электроэнергии, поскольку законодательство предусматривает массовое внедрение пока только умного учёта электроэнергии, а по другим ресурсам – вода, тепло, газ – пока нет определённости). Обычный счётчик:

  • считает только энергию нарастающим итогом (есть ещё многотарифные, которые считают нарастающий итог по двум или трём зонам суток – день, ночь, полупик);
  • с его табло нужно раз в месяц списывать показания и передавать поставщику (либо энергокомпании отправляют контролёров списывать показания);
  • не позволяет регулировать потребление энергии (например, отключать неплательщика).

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

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

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


Так выглядит избыточность


Коды избыточности* широко применяются в компьютерных системах для увеличения надёжности хранения данных. В Яндексе их используют в очень многих проектах. Например, применение кодов избыточности вместо репликации в нашем внутреннем объектном хранилище экономит миллионы без снижения надёжности. Но несмотря на широкое распространение, понятное описание того, как работают коды избыточности, встречается очень редко. Желающие разобраться сталкиваются примерно со следующим (из Википедии):



Меня зовут Вадим, в Яндексе я занимаюсь разработкой внутреннего объектного хранилища MDS. В этой статье я простыми словами опишу теоретические основы кодов избыточности (кодов Рида — Соломона и LRC). Расскажу, как это работает, без сложной математики и редких терминов. В конце приведу примеры использования кодов избыточности в Яндексе.


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


* Под термином «коды избыточности» в статье подразумевается инженерный термин «erasure codes».

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

Spreadable — вариант децентрализованной сети

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

image


Зачем вообще нужна децентрализация? Многие люди не совсем понимают смысла, ведь и так вроде все хорошо работает. Причин на самом деле несколько, но обычно сторонники подхода затрагивают только сложные технические моменты, и обывателю становится сложно углядеть суть. Для меня, например, все очень просто.


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

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

Использование HAProxy в качестве Data Plane Service Mesh в архитектуре микросервисов

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

Использование HAProxy в качестве Data Plane Service Mesh в архитектуре микросервисов


HAProxy Data Plane API – это программа, которая работает вместе с HAProxy, чтобы вы могли полностью настроить балансировщик нагрузки HAProxy во время выполнения.


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


Лучшим примером является использование HAProxy в качестве Data Plane Service Mesh в архитектуре микросервисов, где центральная плоскость управления управляет конфигурацией набора прокси-серверов sidecar.


В этом разделе показано, как установить и настроить Data Plane API и начать работу с несколькими примерами.

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

Edge-ик в тумане и другие приключения периферийных вычислений

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

Добрый день.


Меня зовут Игорь Хапов. Я руководитель разработки в Научно-техническом центре IBM. И сегодня я хотел бы вам помочь окунуться в мир периферийных вычислений, или edge computing, как его ещё называют. Я расскажу о том, что же такое edge computing и как он может повлиять на наш с вами мир. Также хотелось бы пояснить различия между edge computing и fog computing, какие преимущества даёт этот подход. В статье я также описал референсную архитектуру приложения на edge computing. И под конец немного расскажу о проекте с открытым исходным кодом Open Horizon, который совсем недавно присоединился к Linux Foundation.


edge computing align=«center»

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

Деплой распределенных сервисов в Яндекс.Облаке на примере Grafana

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

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


image

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

FabEx — block explorer для Hyperledger Fabric

Время на прочтение6 мин
Количество просмотров2K
Привет, я хочу рассказать про проект FabEx — block explorer для Hyperledger Fabric, недавно принятый в Hyperledger Labs и имеющий некоторые преимущества относительно официального эксплорера. Проект написан полностью на Golang (а не на Nodejs, как официальный), хранит данные о блокчейне в MongoDB или Cassandra по выбору (а не в PostgreSQL, как официальный), имеет как GRPC, так и REST API. Eго легко расширять, например, можно легко добавить больше реализаций хранилища. Детали под катом.



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

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

Telemetría → метрики без напряжения

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

12 июля 2018 года увидел свет первый коммит проекта :telemetry. Автор коммита — Аркадий Гил, но README утверждает, что авторское право принадлежит © 2018 Chris McCord and Erlang Solutions, а последний коммит по состоянию на сегодня был сделан Жозе Валимом.


Big Brother is Watching You


Библиотека представляется следующим образом:


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

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

Но недостатков тоже более, чем хватало

Cloister → простое управление кластером OTP

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

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


Cloister


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


Передача сообщений между процессами на разных узлах, а также между ссылками и мониторами прозрачна […]
На практике все немного сложнее.

Так что же это всё-таки такое, «фолдинг белков»?

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


В текущей пандемии COVID-19 появилось много проблем, на которые хакеры с удовольствием набрасывались. От лицевых щитков, распечатанных на 3D-принтере и медицинских масок домашнего изготовления до замены полноценного механического аппарата искусственной вентиляции лёгких – этот поток идей вдохновлял и радовал душу. В то же самое время были попытки продвинуться и в другой области: в исследованиях, нацеленных на борьбу непосредственно с самим вирусом.

Судя по всему, наибольший потенциал для остановки текущей пандемии и опережения всех последующих есть у подхода, пытающегося докопаться до самого истока проблемы. Этот подход из разряда «узнай своего врага» исповедует вычислительный проект Folding@Home. Миллионы людей зарегистрировались в проекте и жертвуют часть вычислительных мощностей своих процессоров и GPU, создав таким образом крупнейший [распределённый] суперкомпьютер в истории.

Но для чего конкретно используются все эти экзафлопы? Почему нужно бросать такие вычислительные мощности на фолдинг [укладку] белков? Какая тут работает биохимия, зачем вообще белкам нужно укладываться? Вот краткий обзор фолдинга белков: что это, как он происходит и в чём его важность.
Читать дальше →

Эффективные надежные микросервисы

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


В Одноклассниках запросы пользователей обслуживает более 200 видов уникальных типов сервисов. Многие из них совмещают в одном JVM-процессе бизнес-логику и распределенную отказоустойчивую базу данных Cassandra, превращая обычный микросервис в микросервис с состоянием. Это позволяет нам строить высоконагруженные сервисы, управляющие сотнями миллиардов записей с миллионами операций в секунду на них.


Какие преимущества появляются при совмещении бизнес-логики и БД? Какие нюансы надо учесть, прибегая к такому подходу? Что с надёжностью и доступностью сервисов? Расскажем подробно об этом всём.

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

Реплицируй это. Вебинары Apache Ignite и GridGain

Время на прочтение1 мин
Количество просмотров996
Продолжаем серию вебинаров, где разработчики GridGain не только рассказывают, но и показывают, как работать с теми или другими возможностями Apache Ignite.

Если пропустили, обязательно посмотрите Руководство по настройкам безопасности для Apache Ignite и GridGain с примерами.

В четверг 23 апреля поговорим о том, как в Ignite устроен ребаланс, и подробно разберем примеры логов, чтобы научиться определять, когда ребаланс остановлен, а когда все еще активен, и безопаснее перезапускать узлы кластера. Также пример поможет понять, почему был автоматически выбрал исторический или полный ребаланс. Перед вебинаром советуем прочитать про распределение данных в Apache Ignite.
Регистрация

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

Новая программная модель Hyperledger Fabric: Go SDK

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


В предыдущей статье мы говорили о новой программной модели чейнкода в Hyperledger Fabric. И хотя релиз нового Go SDK ещё не состоялся, ничто не мешает нам уже сейчас посмотреть, что нас ждет в будущем, и даже протестить это на тестовой сборке. Не всё ещё реализовано (как, например, commit handlers), но планируемый дизайн программной модели уже ясен, так что давайте взглянем на него ближе.
Читать дальше →

Стартапы в области Automotive и Blockchain

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

Победители первого этапа конкурса MOBI Grand Challenge применяют блокчейн к автоиндустрии и рынку транспорта новыми способами, начиная от колонн беспилотных автомобилей и заканчивая автоматизированной V2X-связью.

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

Mobility Open Blockchain Initiative (MOBI), некоммерческая инициатива, направленная на ускоренное внедрение стандартов, связанных с блокчейном, в автомобильной и транспортной промышленности, провела первую фазу своего проекта MOBI Grand Challenge (MGC), рассчитанного на три года и направленного на выявление инновационных способов применения блокчейна в формирующейся экосистеме подключенных к сети и автономных автомобилей.

Согласно заявлению MOBI: «Целью MGC является создание жизнеспособной, децентрализованной, специальной сети связанных между собой автомобилей на распределенной бухгалтерии (distributed ledger technology) и инфраструктуры, которая может надежно обмениваться данными, координировать поведение и, в конечном счете, улучшать городскую мобильность».