Как стать автором
Поиск
Написать публикацию
Обновить
49.76

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

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

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

Как сервера договариваются друг с другом: алгоритм распределённого консенсуса Raft

Время на прочтение9 мин
Количество просмотров39K
Когда кластеры достигают размеров в сотни, а иногда и тысячи машин, возникает вопрос о согласованности состояний серверов относительно друг друга. Алгоритм распределённого консенсуса Raft даёт самые строгие гарантии консистентности из возможных. В этой статье мы рассмотрим Raft с точки зрения инженера и постараемся ответить на вопросы «Как?» и «Почему?» он работает.



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

14-15 октября: Bootcamp глобального блокчейн-проекта Hyperledger впервые в Москве

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


Нет лучшего места для первых шагов в блокчейне, чем буткемп глобального блокчейн-проекта Hyperledger, который пройдет в Москве 14 и 15 октября. Это первое подобное мероприятие в России и хорошая возможность не только своими глазами увидеть, как работает платформа, но и попробовать себя в каждом из её направлений, будь то Hyperledger Fabric, Sawtooth или Iroha, чтобы раз и навсегда определиться, что вас больше всего привлекает в блокчейне.
Читать дальше →

Как работает децентрализованный мессенджер на блокчейне

Время на прочтение8 мин
Количество просмотров33K
В начале 2017 мы начали создавать мессенджер на блокчейне [название и ссылка есть в профиле] с обсуждения преимуществ перед классическими P2P-мессенджерами.

Прошло 2.5 года, и нам удалось подтвердить свой концепт: сейчас доступны приложения мессенджера для iOS, Web PWA, Windows, GNU/Linux, Mac OS и Android.

Сегодня мы расскажем, как устроен мессенджер на блокчейне и как клиентским приложениям работать с его API.

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

Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 3. Kafka

Время на прочтение20 мин
Количество просмотров115K
Продолжение перевода небольшой книги:
«Understanding Message Brokers»,
автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

Предыдущая часть: Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 2. ActiveMQ
Читать дальше →

«Автономные Агенты» или исполняем код в открытой криптоплатформе Obyte

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


Obyte — это открытая крипто платформа, использующая в качестве реестра транзакций Directed Acyclic Graph (DAG, направленный граф без циклов) вместо блокчейна, со свободным равным доступом к реестру для всех участников. DAG, в отличие от привычного всем блокчейна, даёт возможность отправлять данные в распределённый реестр напрямую без участия майнеров за счёт отказа от блоков и от строгой упорядоченности транзакций. По сравнению с блокчейнами, DAG архитектура не нуждается в привилегированных классах пользователей, таких как майнеры, форджеры или блокпродюсеры, поэтому в сети нет посредников между пользователем и реестром, и каждый имеет равный и прямой доступ на добавление транзакций в реестр.

В этой статье я бы хотел рассказать о Obyte, Автономных Агентах и сравнить всё это с Ethereum.
Читать дальше →

Мини-интервью Олега Анастасьева: отказоустойчивость в Apache Cassandra

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


Одноклассники – самый крупный пользователь Apache Cassandra в Рунете и один из крупнейших в мире. Мы начали использовать Cassandra в 2010 для хранения оценок фото, а сейчас под управлением Cassandra находятся петабайты данных на тысячах нод, более того, мы даже разработали свою собственную NewSQL транзакционную БД.
12 сентября в своём петербургском офисе мы проведем второй митап, посвященный Apache Cassandra. Основным спикером мероприятия станет станет главный инженер Одноклассников Олег Анастасьев. Олег – эксперт в области распределённых и отказоустойчивых систем, он работает с Cassandra уже более 10 лет и неоднократно рассказывал об особенностях эксплуатации этого продукта на конференциях.

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

Линейная регрессия и методы её восстановления

Время на прочтение5 мин
Количество просмотров20K
image
Источник: xkcd

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

Но в этой статье речь пойдет не про применение линейной регрессии для решения практических задач. Здесь будут рассмотрены интересные особенности реализации распределенных алгоритмов её восстановления, с которыми мы столкнулись при написании модуля машинного обучения в Apache Ignite. Немного базовой математики, основ машинного обучения и распределенных вычислений помогут разобраться, как восстанавливать линейную регрессию, даже если данные распределены между тысячами узлов.
Читать дальше →

Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 1

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

Начал перевод небольшой книги:
"Understanding Message Brokers",
автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

Из введения к книге:
"… Эта книга научит вас рассуждать о системах обмена сообщениями на брокерах, сравнивая и противопоставляя две популярные технологии брокеров: Apache ActiveMQ и Apache Kafka. Здесь будут изложены примеры использования и стимулы разработки, которые привели к тому, что их разработчики использовали совершенно разные подходы к одной и той же области — обмену сообщениями между системами с промежуточным брокером. Мы рассмотрим эти технологии с нуля и выделим влияние различных вариантов дизайна на этом пути. Вы получите глубокое понимание обоих продуктов, понимание того, как их следует и не следует использовать, и понимание того, на что следует обращать внимание при рассмотрении других технологий обмена сообщениями в будущем ..."

Переведенные к настоящему моменту части:
Глава 1. Введение
Глава 2. ActiveMQ
Глава 3. Kafka

Перевод выполнен: t.me/middle_java

Буду выкладывать законченные главы по мере перевода.
Читать дальше →

Блокчейн: что нам стоит PoC построить?

Время на прочтение11 мин
Количество просмотров6.9K
Глаза боятся, а руки чешутся!

В прошлых статьях мы разобрались с технологиями, на которых строятся блокчейны (Что нам стоит блокчейн построить?) и кейсами, которые можно с их помощью реализовать (Что нам стоит кейс построить?). Настало время поработать руками! Для реализации пилотов и PoC (Proof of Concept) я предпочитаю использовать облака, т.к. к ним есть доступ из любой точки мира и, зачастую, не надо тратить время на нудную установку окружения, т.к. есть предустановленные конфигурации. Итак, давайте сделаем что-нибудь простое, например, сеть для перевода монет между участниками и назовем ее скромно Сitcoin. Для этого будем использовать облако IBM и универсальный блокчейн Hyperledger Fabric. Для начала разберемся, почему Hyperledger Fabric называют универсальным блокчейном?

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

Тarantool Cartridge: шардирование Lua-бекенда в три строчки

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


У нас в Mail.ru Group есть Tarantool — это такой сервер приложений на Lua, который по совместительству ещё и база данных (или наоборот?). Он быстрый и классный, но возможности одного сервера всё равно не безграничны. Вертикальное масштабирование тоже не панацея, поэтому в Tarantool есть инструменты для горизонтального масштабирования — модуль vshard [1]. Он позволяет шардировать данные по нескольким серверам, но придётся повозиться, чтобы его настроить и прикрутить бизнес-логику.

Хорошие новости: мы собрали шишек (например [2], [3]) и запилили очередной фреймворк, который заметно упростит решение этой проблемы.

Тarantool Cartridge — это новый фреймворк для разработки сложных распределённых систем. Он позволяет сфокусироваться на написании бизнес-логики вместо решения инфраструктурных проблем. Под катом я расскажу, как этот фреймворк устроен и как с его помощью писать распределённые сервисы.
Читать дальше →

Кот Шрёдингера без коробки: проблема консенсуса в распределённых системах

Время на прочтение13 мин
Количество просмотров25K
Итак, представим. В комнате заперты 5 котов, и чтобы пойти разбудить хозяина им необходимо всем вместе договориться между собой об этом, ведь дверь они могут открыть только впятером навалившись на неё. Если один из котов – кот Шрёдингера, а остальные коты не знают о его решении, возникает вопрос: «Как они могут это сделать?»

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


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

ок.tech: Cassandra Meetup #2

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


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

Но многие темы оказались за рамками встречи и поэтому мы решили продолжить!

Зарегистрироваться на ок.tech Cassandra Meetup #2
Читать дальше →

Система управления конфигурацией сети фильтрации Qrator

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


TL;DR: Описание клиент-серверной архитектуры нашей внутренней системы управления конфигурацией сети, QControl. В основе лежит двухуровневый транспортный протокол, работающий с упакованными в gzip сообщениями без декомпрессии между эндпойнтами. Распределенные роутеры и эндпойнты получают конфигурационные апдейты, а сам протокол позволяет установку локализованных промежуточных релеев. Система построена по принципу дифференциального бэкапа (“recent-stable”, объясняется ниже) и задействует язык запросов JMESpath вместе с шаблонизатором Jinja для рендера конфигурационных файлов.

Qrator Labs управляет глобально распределенной сетью нейтрализации атак. Наша сеть работает по принципу anycast, а подсети анонсируются посредством BGP. Будучи BGP anycast-сетью, физически расположенной в нескольких регионах Земли мы можем обработать и отфильтровать нелегитимный трафик ближе к ядру интернета — Tier-1 операторам.

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

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

DPKI: устраняем недостатки централизованной PKI при помощи блокчейна

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


Ни для кого не секрет, что один из общераспространенных вспомогательных инструментов, без которого невозможна защита данных в открытых сетях, — это технология цифровых сертификатов. Впрочем, не является секретом и то, что главный недостаток это технологии — безусловное доверие к центрам, выпускающим цифровые сертификаты. Директор по технологиям и инновациям компании ENCRY Андрей Чмора предложил новый подход к организации инфраструктуры общедоступных ключей (Public Key Infrastructure, PKI), который поможет устранить существующие в настоящее время недостатки и который использует технологию распределенного реестра (блокчейна). Но обо всем по порядку.
Читать дальше →

Пять студентов и три распределённых key-value хранилища

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

Или как мы писали клиентскую C++ библиотеку для ZooKeeper, etcd и Consul KV


В мире распределённых систем существует ряд типовых задач: хранение информации о составе кластера, управление конфигурацией узлов, детекция сбойных узлов, выбор лидера и другие. Для решения этих задач созданы специальные распределённые системы — сервисы координации. Сейчас нас будут интересовать три из них: ZooKeeper, etcd и Consul. Из всей богатой функциональности Consul мы сосредоточимся на Consul KV.



По сути все эти системы представляют собой отказоустойчивые линеаризуемые key-value хранилища. Хотя их модели данных и имеют существенные отличия, о чём мы поговорим позднее, они позволяют решать одни и те же практические проблемы. Очевидно, каждое приложение, использующее сервис координации, завязывается на один из них, что может приводить к необходимости поддерживать в одном датацентре несколько систем, решающих одинаковые задачи, для разных приложений.

Идея, призванная решить эту проблему, зародилась в одном австралийском консалтинговом агентстве, а нам – небольшой команде студентов – выпало её реализовывать, о чём я и собираюсь рассказать.
Читать дальше →

Блокчейн как платформа цифровой трансформации

Время на прочтение9 мин
Количество просмотров4K
Традиционно ИТ-системы предприятий формировались под задачи автоматизации, поддержки целевых систем, таких, например, как ERP. Сегодня организациям приходится решать иные задачи – задачи цифровизации, цифровой трансформации. Делать это на основе прежней ИТ-архитектуры сложно. Цифровая трансформация — серьезный вызов.

На чем же должна основываться программа преобразования ИТ-систем с целью цифровой трансформации бизнеса?

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

Консенсус на репутации ноды. Нужен ли?

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

Знаю-знаю. Криптопроектов тьма, есть куча консенсусов: на основе труда и владения, золота, нефти, выпеченных пирожков (есть и такой, да-да). Что нам ещё от одного? Это и предлагаю обсудить после прочтения перевода "облегченной" технической документации проекта *Созвездие (Constellation). Конечно, это не полное описание алгоритма, но мне интересно мнение комьюнити хабра, имеет ли место "быть" такому консенсусу или он даром не нужен?


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


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

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

Три лауреата премии Дейкстры: как прошли Hydra 2019 и SPTDC 2019

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


Совсем недавно, с 8 по 12 июля, одновременно проходило два знаковых события — конференция Hydra и школа SPTDC. В этом посте хочется отметить несколько особенностей, которые мы заметили по ходу проведения конференции.


Самая большая гордость Гидры и Школы — это докладчики.


  • Три лауреата премии Дейкстры: Leslie Lamport, Maurice Herlihy и Michael Scott. Причём Морис получил её целых два раза. Лесли Лэмпорт получил еще и премию Тьюринга — самую престижную премию ACM в информатике;
  • Создатель JIT-компилятора Java — Cliff Click;
  • Разработчики корутин — Роман Елизаров (elizarov) и Никита Коваль (ndkoval) для Kotlin, и Дмитрий Вьюков для Go;
  • Контрибьюторы в Cassandra (Алекс Петров), CosmosDB (Денис Рысцов), Yandex Database (Семен Чечеринда и Владислав Кузнецов);
  • И множество других известных людей: Martin Kleppmann (CRDT), Heidi Howard (Paxos), Ori Lahav (C++ memory model), Pedro Ramalhete (wait-free data structures), Алексей Зиновьев (ML), Дмитрий Бугайченко (анализ графов).
Читать дальше →

Разбор задач с конференции Hydra — балансировка нагрузки и in-memory хранилища

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

Несколько дней назад случилась конференция Hydra. Ребята из JUG.ru Group пригласили спикеров мечты (Лесли Лэмпорт! Клифф Клик! Мартин Клеппманн!) и посвятили два дня распределённым системам и вычислениям. Контур был одним из трёх партнёров конференции. Мы общались на стенде, рассказывали про наши распределённые хранилки, играли в бинго, решали задачки.


Это пост с разбором задач на стенде Контура от автора их текста. Кто был на Гидре — это ваш повод вспомнить приятные впечатления, кто не был — шанс размять мозги big O-нотацией.


Были даже участники, которые разобрали флипчарт на слайды, чтобы записать своё решение. Я не шучу — они сдали на проверку вот такую пачку бумаги:



Всего было три задачи:


  • о выборе реплик по весам для балансировки нагрузки
  • о сортировке результатов запроса к in-memory базе данных
  • о передаче состояния в распределённой системе с кольцевой топологией
Взять и решить всё

Hydra 2019: бесплатная трансляция первого зала и немного о том, что будет на конференции

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

11-12 июля, то есть уже в этот четверг и пятницу, пройдёт конференция Hydra 2019. Это два дня и два трека докладов, посвященных распределённым вычислениям. Доклады ведут лучшие учёные и инженеры, приехавшие в Санкт-Петербург из разных стран мира. Конференция ориентирована на специалистов в области, никаких вводных докладов!


Вы сможете посмотреть совершенно бесплатную онлайн-трансляцию. На ней будет только первый день и первый зал + онлайн-интервью между докладами. Что это за доклады — обсудим чуть ниже.


Важно, что трансляция начнётся в 9:45 утра (по московскому времени), за 15 минут до открытия, и закончится ближе к 8 часам вечера. Всё это время вы сможете слушать доклады с небольшими перерывами. Ссылка будет работать весь день, поэтому можно открывать её только на наиболее важных для вас докладах.


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


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