Pull to refresh

Проблематика распределенных транзакций в контексте микросервисной архитектуры

Reading time4 min
Views6.6K
Всем привет. Уже в сентябре OTUS открывает набор в новую группу курса «Highload Architect». В связи с этим я продолжаю серию своих публикаций, написанных специально для этого курса, а также приглашаю вас на свой бесплатный вебинар, в рамках которого я подробно расскажу о программе курса и формате обучения в OTUS. Записаться на вебинар можно тут.




Введение


Как известно, переход от монолита к микросервисной архитектуре вызывает ряд сложностей, связанных как с технической частью проекта, так и с человеческим фактором. Одной из самых сложных технических проблем вызывает обеспечение согласованности в распределенной системе.
Читать дальше →
Total votes 12: ↑7 and ↓5+2
Comments7

Паттерн «сага» как способ обеспечения консистентности данных

Reading time3 min
Views15K
Всем привет. Уже сейчас в OTUS открывает набор в новую группу курса «Highload Architect». В связи с этим я продолжаю серию своих публикаций, написанных специально для этого курса, а также приглашаю вас на свой бесплатный демо урок по теме: «Индексы в MySQL: best practices и подводные камни». Записаться на вебинар можно тут.





Введение


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

В прошлый раз мы обсудили причины возникновения проблем с согласованностью в микросервисной архитектуре, оптимистичный подход к обеспечению согласованности и обеспечение согласованности с применением двухфазного коммита.
Читать дальше →
Total votes 20: ↑14 and ↓6+8
Comments0

MVCC как один из способов обеспечения изоляции транзакций

Reading time4 min
Views13K
Привет, хабр. Меня зовут Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Специально к старту нового набора на курс «Архитектор высоких нагрузок» я написал небольшой материал, которым с радостью делюсь с вами.



Введение


В прошлый раз мы поговорили с вами о том, к чему приводит ослабление изоляции транзакций в базах данных. Сегодня мы обсудим более подробно один из способов обеспечения этой самой изоляции и избегания рассмотренных аномалий. Как вы могли заметить, в прошлой статье часто выделялись два подхода: один был основан на том, что у записей есть некоторые версии, а второй на том, что мы будем запись так или иначе блокировать. Таким образом, выделяются два класса баз данных: версионники и блокировочники. Сегодня мы поговорим о том, что из себя представляют версионники, а рассмотрение блокировочников оставим на следующий раз.
Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments3

Блокировки как один из способов обеспечения изоляции транзакций

Reading time4 min
Views16K
Привет, Хабр. Меня зовут Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Эту статью я подготовил специально к старту нового набора на курс «Архитектор высоких нагрузок».




Введение


В позапрошлый раз мы поговорили с вами о том, к чему приводит ослабление изоляции транзакций в базах данных. Сегодня мы обсудим более подробно один из способов обеспечения этой самой изоляции и избегания рассмотренных аномалий. Как вы могли заметить, в позапрошлой статье часто выделялись два подхода: один был основан на том, что у записей есть некоторые версии, а второй на том, что мы будем запись так или иначе блокировать. Таким образом, выделяются два класса баз данных: версионники и блокировочники. О том, что из себя представляют версионники, мы поговорили в прошлый раз, а сейчас я предлагаю обсудить блокировочники.
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments0

Насколько много маркетинга в ACID?

Reading time4 min
Views4.9K
Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

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




Предисловие


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

Период времени, в течении которого происходили данные события, характеризовался отсутствием высоких нагрузок, Интернета и проблем с производительностью, для решения которых можно было обойтись лишь методами вертикального масштабирования. Впоследствии, в начале 2000-ых возник тренд на NoSQL базы данных, появилась аббревиатура BASE, которая фактически противопоставлялась классическому ACID (ACID — кислота, BASE — щелочь). Сейчас возникает обратный тренд на ACID. Даже NoSQL-ая MongoDB стала поддерживать ACID.

Давайте разберемся с тем, что означает данная аббревиатура и насколько много маркетинга в ней.
Читать дальше →
Total votes 17: ↑10 and ↓7+3
Comments8

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

Reading time5 min
Views16K
Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

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




Введение


В прошлый раз мы с вами поговорили про то, что транзакции в базах данных служат для решения двух задач: обеспечения отказоустойчивости и доступа к данным в конкурентной среде. Для полноценного выполнения этих задач транзакция должна обладать свойствами ACID. Сегодня мы подробно поговорим про букву I (isolation) в данной аббревиатуре.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments11

Проектируем идеальную систему реактивности

Reading time12 min
Views10K

Здравствуйте, меня зовут Дмитрий Карловский и я… крайне плох в построение социальных связей, но чуть менее плох в построении программных. Недавно я подытожил свой восьмилетний опыт реактивного программирования, проведя обстоятельный анализ различных подходов к решению типичных детских болячек:


Main Aspects of Reactivity

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


Вторая стадия принятия мола в своё сердце: всё ещё пригорает, но уже не можешь остановиться.


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


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

Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments15