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

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

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

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

Сытые философы или конкурентное программирование на .NET

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


Давайте посмотрим как устроено конкурентное и параллельное программирование в .Net, на примере проблемы обедающих философов. План такой, от синхронизации потоков/процессов, до модели акторов (в следующих частях). Статья может быть полезна для первого знакомства или для того, чтобы освежить свои знания.


Зачем вообще уметь это? Транзисторы достигают своего минимального размера, закон Мура упирается в ограничение скорости света и поэтому рост наблюдается в количестве, транзисторов можно делать больше. При этом количество данных растет, а пользователи ожидают немедленной реакции систем. В такой ситуации "обычное" программирование, когда у нас один выполняющий поток, уже не эффективно. Нужно как-то решать проблему одновременного или конкурентного выполнения. Причем, проблема эта существует на разных уровнях: на уровне потоков, на уровне процессов, на уровне машин в сети (распределенные системы). В .NET есть качественные, проверенные временем, технологии для быстрого и эффективного решения таких задач.

Пообедаем...

Не только обработка: Как мы сделали из Kafka Streams распределенную базу данных, и что из этого вышло

Время на прочтение6 мин
Количество просмотров7.9K
Привет, Хабр!

Напоминаем, что вслед за книгой о Kafka мы выпустили не менее интересный труд о библиотеке Kafka Streams API.



Пока сообщество только постигает границы возможностей этого мощного инструмента. Так, недавно вышла статья, с переводом которой мы хотим вас познакомить. На собственном опыте автор рассказывает, как сделать из Kafka Streams распределенное хранилище данных. Приятного чтения!
Читать дальше →

Secure Scuttlebutt — p2p социальная сеть, работающая и в оффлайне

Время на прочтение4 мин
Количество просмотров14K
Scuttlebutt — сленговое слово, распространённое среди американских моряков, обозначающее слухи и сплетни. Node.js разработчик Доминик Тарр, живущий на паруснике у берегов Новой Зеландии, использовал это слово в названии p2p сети, предназначенной для обмена новостями и личными сообщениями. Secure Scuttlebutt (SSB) позволяет делиться информацией, используя лишь эпизодический доступ к сети Интернет или даже при полном его отсутствии.

SSB работает уже несколько лет. Функции социальной сети можно протестировать при помощи двух настольных приложений (Patchwork и Patchfoo) и приложения для Android (Manyverse). Для гиков есть ssb-git. Вам интересно как работает offline-first p2p сеть без рекламы и без регистрации? Прошу под кат.


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

ok.tech: Cassandra meetup

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


Работаете с NoSQL-хранилищем Apache Cassandra?


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

Безграничные технологии XR в эпоху распределённых вычислений

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


Как трансформация Wireless Edge поможет в разработке фотореалистичных мобильных систем расширенной реальности.
Читать дальше →

Строительные блоки распределенных приложений. Второе приближение

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

Анонс


Коллеги, в середине лета я планирую выпустить еще один цикл статей по проектированию систем массового обслуживания: “Эксперимент VTrade” — попытка написать фреймворк для торговых систем. В цикле будет разобрана теория и практика построения биржи, аукциона и магазина. В конце статьи предлагаю проголосовать за наиболее интересные вам темы.



Это завершающая статья цикла по распределенным реактивным приложениям на Erlang/Elixir. В первой статье можно найти теоретические основы реактивной архитектуры. Вторая статья иллюстрирует основные шаблоны и механизмы построения подобных систем.


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

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

Строительные блоки распределенных приложений. Первое приближение

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


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


  • Request-response
  • Request-Chunked Response
  • Response with Request
  • Publish-subscribe
  • Inverted Publish-subscribe
  • Task distribution
Читать дальше →

Строительные блоки распределенных приложений. Нулевое приближение

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


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

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

Основоположники теории распределенных систем в объятьях гидры

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

Это Лесли Лэмпорт — автор основополагающих работ в распределённых вычислениях, а ещё вы его можете знать по буквам La в слове LaTeX — «Lamport TeX». Это он впервые, ещё в 1979 году, ввёл понятие последовательной согласованности, а его статья «How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs» получила премию Дейкстры (точней, в 2000 году премия называлась по-старому: «PODC Influential Paper Award»). Про него есть статья в Википедии, где можно добыть ещё несколько интересных ссылок. Если вы в восторге от решения задач на happens-before или проблемы византийских генералов (BFT), то должны понимать, что за всем этим стоит Лэмпорт.


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

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

Uptime day: 12 апреля, полёт нормальный

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


«Да чего же ждать от конференций? Сплошь танцовщицы, вино, гулянки» — шутил герой фильма «Послезавтра».

Наверное, на каких-то конференциях и не такое бывает (делитесь историями в комментах), но на it-сборищах обычно вместо вина пиво (по завершении), а вместо танцовщиц — «танцы» с кодами и информационными системами. 2 года назад мы тоже вписались в эту хореографию, организовав конференцию Uptime day. В этом апреле, на День космонавтики, мы проводим её уже в четвёртый раз — традиционно бесплатно и традиционно под аккомпанемент вопросов «зачем вам это надо?»
На весеннем Uptime day будем говорить об организации резервирования веб-проектов со сложной распределённой архитектурой — способам переключения с боевого окружения на резервное, а также разбору различных сценариев отката и переключения на резервную площадку в случае неудачного деплоя.

А зачем нам это надо?.. Об этом под катом. И о том, чем вам будет полезна конференция Uptime day.
Читать дальше →

Flightradar24 — как это работает? Часть 2, ADS-B протокол

Время на прочтение9 мин
Количество просмотров34K
Привет Хабр. Наверное каждый, кто хоть раз встречал или провожал родственников или друзей на самолет, пользовался бесплатным сервисом Flightradar24. Это весьма удобный способ отслеживания положения самолета в реальном времени.

image

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

Где весной поговорить про Apache Ignite, распределенные базы данных и распределенное машинное обучение

Время на прочтение2 мин
Количество просмотров1.2K
Начинается первая волна конференций, да и дружественные митапы активизировались. Присоединяйтесь.

15 марта, Санкт-Петербург — ODS SPB Meetup #5


Распределенный TensorFlow с Apache Ignite
На митапе, приуроченному ко дню рождения Open Data Science, Юрий Бабак, Руководитель группы разработки в GridGain, расскажет про распределенный TensorFlow с Apache Ignite:

— Apache Ignite как распределенный источник данных для TensorFlow;
— Hаспределенная тренировка модели на кластере TensorFlow поверх Apache Ignite;
— Инференс TensorFlow модели на кластере Apache Ignite

Программа и регистрация

28 марта, Москва — Scalability Meetup #7


Репликация распределенных баз данных
Репликация кластеров позволяет не беспокоиться за работоспособность распределенных систем. Но что делать, если в дата-центре отключат свет, все кластеры сразу начнут сбоить (и каждый по-своему), а потом кто-то очень серьезно ошибется?

Иван Раков, Senior Software Engineer в GridGain, расскажет про то, какие варианты репликации возможны, как реализована транзакционная целостность в GridGain, и как это защищает кластер от катастроф.

Программа и регистрация

А также на JPoint и Saint Highload
Читать дальше →

Прошло 10 лет, а никто не придумал, как использовать блокчейн. И вот опять?

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

Действительно ли это так? Это соответствует действительности почти на 100 процентов. Но есть пара нюансов. Первое, это всем известная криптовалюта. Ее свойства все таки имеют некоторую привлекательность на фоне фиата. Тема это острая, прямо скажем, политически очень "заряженная", потому объективности в ней ждать не приходится.

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

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

Распределенные системы. Паттерны проектирования. Обзор книги

Время на прочтение7 мин
Количество просмотров28K
Здравствуйте, коллеги. Сегодня мы публикуем перевод очередного обзора с сайта Бена Нейдела — этот сайт наверняка заинтересует вас и в оригинале. На сей раз мы поговорим о книге "Распределенные системы. Паттерны проектирования", которая дополняет вышедшую у нас в начале этого года книгу "Осваиваем Kubernetes" и, в сущности, является аналогом GoF для проектирования распределенных систем.



Приятного чтения.
Читать дальше →

Кластерное хранилище Pacemaker + DRBD (Dual primary) + samba

Время на прочтение5 мин
Количество просмотров12K
В продолжение статьи «Кластерное хранилище Pacemaker + DRBD (Dual primary) + ctdb» представляю полностью готовый и рабочий вариант HA кластера файловой шары на 2-4 ноды для centos 6 и centos 7. Если вы хотите реализовать такое, вы либо извращенец, либо вам не дали никакого выбора, и реализовать надо хоть как-то.

Я просто опишу слоёный пирог, который мы будем собирать:

На блочном устройстве создаём таблицу gpt => один раздел на всё пространство под лвм => группу томов лвм на всё доступное пространство => лвм том на всё доступное пространство => drbd устройство => dlm => размечаем как физический том лвм на всё доступное пространство => на него кластерную группу томов лвм => лвм том на всё доступное пространство => размечаем фс gfs2 => подключаем в точку монтирования.
И рулить всем этим будет pacemaker c virtual ip адресом.


Если вы ещё хотите продолжать, читайте дальше под катом.
Читать дальше →

WG Contract API: zoo of services

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


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

Если хотите познакомиться поближе с тем как команда Wargaming Platform справляется со сложностью системы из более чем сотни взаимодействующих друг с другом web-сервисов, то добро пожаловать под кат.
Читать дальше →

TensorFlow на Apache Ignite

Время на прочтение8 мин
Количество просмотров4.5K
С чего начинается родина мы все знаем, а глубокое обучение начинается с данных. Без них невозможно обучить модель, оценить ее, да и вообще использовать. Занимаясь исследованиями, увеличивая индекс Хирша статьями о новых архитектурах нейронных сетей и экспериментируя, мы опираемся на простейшие локальные источники данных; обычно — файлы в различных форматах. Это работает, но неплохо было бы помнить про боевую систему, содержащую терабайты постоянно меняющихся данных. А это значит, что нужно упростить и ускорить передачу данных в продакшене, а также иметь возможность работы с большими данными. Вот тут и наступает время Apache Ignite.

Apache Ignite – это распределенная memory-centric база данных, а также платформа для кэширования и обработки операций, связанных с транзакциями, аналитикой и потоковыми нагрузками. Система способна перемалывать петабайты данных со скоростью оперативной памяти. В статье речь пойдет об интеграции между Apache Ignite и TensorFlow, которая позволяет применять Apache Ignite в качестве источника данных для обучения нейронной сети и инференса, а также в качестве хранилища обучаемых моделей и системы управления кластером при распределенном обучении.
Читать дальше →

Почему Google нуждалась в графе знаний

Время на прочтение15 мин
Количество просмотров12K
Когда я представляюсь и говорю, чем занимается наш стартап, у собеседника сразу возникает вопрос: вы раньше работали в Facebook, или ваша разработка создана под влиянием Facebook? Многие знают об усилиях Facebook по обслуживанию своего социального графа, потому что компания опубликовала несколько статей об инфраструктуре этого графа, который она тщательно выстроила.

Google рассказывала о своём графе знаний, но ничего о внутренней инфраструктуре. Однако в компании тоже есть для него специализированные подсистемы. На самом деле сейчас графу знаний уделяется большое внимание. Лично я поставил на эту лошадку минимум два своих повышения по службе — и начал работу над новым графом ещё в 2010 году.
Читать дальше →

День, когда Dodo IS остановилась. Синхронный сценарий

Время на прочтение8 мин
Количество просмотров17K
Dodo IS — глобальная система, которая помогает эффективно управлять бизнесом в Додо Пицце. Она закрывает вопросы по заказу пиццы, помогает франчайзи следить за бизнесом, улучшает эффективность сотрудников и иногда падает. Последнее — самое страшное для нас. Каждая минута таких падений приводит к потерям прибыли, недовольству пользователей и бессонным ночам разработчиков.

Но теперь мы спим лучше. Мы научились распознавать сценарии системного апокалипсиса и обрабатывать их. Ниже расскажу, как мы обеспечиваем стабильность системы.

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

Системы на основе очередей задач

Время на прочтение12 мин
Количество просмотров13K
Привет, Хаброжители!

Мы решили поделиться переводом главы «Системы на основе очередей задач» Из готовящейся к выходу новинки «Распределенные системы. Паттерны проектирования» (уже в типографии).

image

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