Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

Забудьте САР теорему как более не актуальную

Время на прочтение12 мин
Количество просмотров67K
или «Прекратите характеризовать хранилища данных как CP или AP»

capДжеф Ходжес в своем прекрасном посте «Заметки о распределенных системах для новичков» рекомендует использовать САР теорему для критики найденных решений. Многие, похоже, восприняли этот совет слишком близко к сердцу, описывая свои системы как «СР» (согласованность данных, но без постоянной доступности при сетевой распределенности), «АР» (доступность без согласованного состояния при сетевой распределенности), или иногда «СА» (означает «Я всё ещё не читал статью Коды (Coda Hale) почти 5-летней давности»).

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

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

САР использует слишком узкое определение


Если вы хотите ссылаться на САР как на теорему (а не на расплывчатый концепт в маркетинговых материалах к вашей базе данных), вы должны быть точны. Математика требует точности. Доказательство сохраняется только если вы вкладывается в слова, то же самое значение, что было использовано при доказательстве. И оно опирается на очень точные определения:
Еще 3000 слов увлекательного чтива
Всего голосов 70: ↑66 и ↓4+62
Комментарии23

Мифы о CAP теореме

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

Введение


cap


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


Событие, когда какая-то статья вызывает бурю эмоций, — крайне редкое. Первый раз такое возникло, когда я прочитал про chained replication. Меня пытались убедить, что это мощный подход и что это лучшее, что могло произойти с консистентной репликацией. Я сейчас не буду приводить доводы, почему это плохо работает, а просто приведу говорящую цитату из статьи Chain Replication metadata management:


Split brain management is a thorny problem. The method presented here is one based on pragmatics. If it doesn’t work, there isn’t a serious worry, because Machi’s first serious use case all require only AP Mode. If we end up falling back to “use Riak Ensemble” or “use ZooKeeper”, then perhaps that’s fine enough.

В моем вольном пересказе это означает примерно следующее: "У нас тут есть некий алгоритм. Мы не знаем, будет ли он работать правильно или нет. Да нам это и не важно". Хотя бы честно, сэкономило кучу времени, спасибо авторам.


И тут, значит, попадается на глаза статья: Spanner, TrueTime & The CAP Theorem. Её мы разберем по полочкам ближе к концу, вооружившись понятиями и знаниями. А перед этим разберем самые распространенные мифы, связанные с CAP теоремой.

Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии70

Разработка и тестирование смарт-контрактов Hyperledger Fabric

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

Hyperledger Fabric (HLF) — платформа с открытым исходным кодом, использующая технологию распределенного реестра (DLT — distributed ledger technology), предназначенная для разработки приложений, работающих в среде бизнес-сетей, созданных и контролируемых консорциумом организаций с применением правил доступа (permissioned).


Платформа поддерживает смарт-контракты, в терминах HLF — чейнкоды (chaincode), создаваемые на языках общего назначения, таких как Golang, JavaScript, Java, в отличие, от, например, Ethereum, в котором используется контрактно-ориентированный, ограниченный по функциональности язык Solidity (LLL, Viper и др).



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

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

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

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



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

Ответ на этот вопрос несколько неожиданный: CA-кластер не может разделиться.
Что же это за кластер, который не может разделиться?
А вот
Всего голосов 3: ↑2 и ↓1+2
Комментарии8

Когда одного Postgres'a мало: сравнение производительности PostgreSQL и распределенных СУБД

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров13K

Общеизвестно, что PostgreSQL - крайне эффективная СУБД с богатой функциональностью. При этом не секрет, что PostgreSQL масштабируется только вертикально и её производительность ограничена возможностями одного сервера.

Написано много хороших постов, в которых сравнивают архитектуру монолитных и распределенных СУБД. К сожалению, обычно авторы ограничиваются теоретическим сравнением и не приводят конкретные цифры. Данный пост же наоборот основан на эмпирическом исследовании с использованием бенчмарка TPC-C, который является промышленным стандартом для оценки производительности транзакционных СУБД (On-Line Transaction Processing, OLTP).

Мы расскажем, когда именно одного Postgres'a становится мало, и какие возможны компромиссы между производительностью и надежностью. Для тех, кто не готов к компромиссам, мы покажем, что могут предложить такие распределенные СУБД, как CockroachDB и YDB.

Читать далее
Всего голосов 23: ↑22 и ↓1+27
Комментарии54

Uber — причины перехода с Postgres на MySQL

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


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


Наверное, не будет преувеличением сказать, что за последние несколько лет это стало одним из самых громких и резонансных событий, связанных с СУБД PostgreSQL, которую мы, к слову сказать, очень любим и широко используем. Эта ситуация наверняка пошла на пользу не только упомянутым системам, но и движению Free and Open Source в целом. При этом, к сожалению, русского перевода статьи так и не появилось. Ввиду значимости события, а также подробного и интересного с технической точки зрения изложения материала, в котором в стиле «Postgres vs MySQL» идет сравнение физической структуры данных на диске, организации первичных и вторичных индексов, репликации, MVCC, обновлений и поддержки большого количества соединений, мы решили восполнить этот пробел и сделать перевод оригинальной статьи. Результат вы можете найти под катом.

Читать дальше →
Всего голосов 112: ↑110 и ↓2+108
Комментарии58

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

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.8K

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

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

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

Читать далее
Всего голосов 47: ↑44 и ↓3+55
Комментарии23

Какие задачи решают IAM системы?

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

Какие задачи решают IAM системы?



Терминология


Чаще всего мы встречаем термин Identity Management (IdM), что означает управление учетными записями или электронными представлениями пользователей. Как правило, от IdM-системы требуется управление не только учетными записями, но и доступом к системам. Поэтому обычно говоря об IdM, подразумевают Identity and Access Management.

Под Identity and Access Management (IAM) понимают набор технологий и программных продуктов, отвечающих задачам управления жизненным циклом учетных записей и управления доступом к различным системам в компании. Аналитические агентства (Gartner, Forrester, KuppingerCole) и разработчики IAM-систем выделяют как минимум две области внутри IAM: User Administration and Provisioning (UAP) и Identity and Access governance (IAG). Современное IAM-решение должно предоставлять функциональность в обеих областях.

UAP-решения появились в конце 1990-х как средства автоматизации работы со службами каталогов. UAP решает задачи автоматизации создания, изменения и удаления учетных записей в информационных системах организации, а также обеспечивает доступ к приложениям и ресурсам, которые нужны пользователю для работы.
Читать дальше →
Всего голосов 4: ↑2 и ↓20
Комментарии10

Xinfrared XH 09 (Х2): обзор поискового тепловизора для смартфона

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

Тепловизор Xinfrared XH 09 (он же Xinfrared Х2) подключается к смартфону и предназначен для обнаружения целей на значительных расстояниях, в условиях, когда визуальным методом это сделать невозможно или затруднительно. Например, в условиях слабого освещения или ночью. Или днем, когда цель сливается с окружающей средой и ее трудно заметить.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии27

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на экзамене IELTS Academic

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров162K

Привет, Хабр!

В этой статье я расскажу о своем опыте изучения английского языка и поделюсь вещами которые работали и не работали для меня. Процесс изучения языка очень индивидуален, и никогда нельзя утверждать что верный какой-то один метод / схема (хотя некоторые статьи на Хабре прямо говорят: вот этот метод правильный, а вот этот нет).

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

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

Конечно, перед началом обучения я прочитал много статей на хабре о том как люди учат языки. Некоторые из них поражали скоростью овладения материалом (что-то вроде с нуля до fluent за 4 месяца). Но одна вещь была неизменна – у всех был какой-то план изучения языка.

Читать далее
Всего голосов 150: ↑146 и ↓4+165
Комментарии220

Цифровой рубль: большой справочник по технологиям, возможностям и рискам

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров19K

Этот справочник - попытка собрать в одном месте максимум полезной информации по цифровому рублю. При появлении новой информации или корректировке существующей, справочник будет обновляться.

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

Читать далее
Всего голосов 16: ↑15 и ↓1+15
Комментарии89

Бауманка, ВШЭ или все-таки МФТИ? Или как я выполнила 5ти летку за 4 года. Часть 2

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров10K

На самом деле восьмилетку за 6 лет, но пятилетка за 4 года звучит лучше.

История про учебу в трёх лучших технических (почти) вузах страны, а также особенности каждого из личного опыта.

Вторая часть моего повествования об учебе в высших учебных заведениях.

В этой части речь в основном пойдет о ВШЭ (но не всегда).

Шо там дальше
Всего голосов 6: ↑4 и ↓2+4
Комментарии7

Как принимать платежи в Telegram | Оплата без всяких токенов и асинхронная обработка платежа

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров18K

Как принимать платежи на своем сайте или в telegram используя библиотеку yoomoney-api.

Читать далее
Всего голосов 6: ↑5 и ↓1+5
Комментарии31

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

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

Привет, Хабр!

Сегодня поговорим про матрицы компетенций и, как мы их внедряли в «Рексофт». Мы уже рассказывали про матрицу Android-программиста, и как мы вводили кросс-интервью при повышении грейда, а сегодня я расскажу, о том, как все начиналось и куда мы пришли. Итак, поехали!

Читать далее
Всего голосов 20: ↑13 и ↓7+6
Комментарии20

Архитектор 2.0

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров17K

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

Читать далее
Всего голосов 26: ↑17 и ↓9+12
Комментарии29

От желания управлять газовым котлом удалённо до полной автоматизации отопления дома

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров38K

В статье расскажу про свой путь разработки DIY железок для работы с Home Assistant с целью автоматизации отопления в частном доме.

Глава 0: предыстория

Захотелось построить дом. Дом построили, встал вопрос с отоплением и управлением, а так как в доме иногда отсутствовали по несколько месяцев, то переплачивать за газ не очень-то и хотелось. Газа ведь магистрального нет, но «мы скоро проведем». До этого «скоро» закопали газгольдер, а газ там в +-10 раз дороже магистрального. Пытливый ум решил: будем поддерживать в доме температуру 15 градусов, когда там никого нет. Как это сделать? Повесить контроллер/термостат для котла.

Читать далее
Всего голосов 31: ↑30 и ↓1+40
Комментарии112

От Isolation к Consistency — дорога длиной в 30 лет

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

Участвую в стартапе, в котором разрабатывается СУБД нового типа (работает поверх некоторых kv-движков, кардинально расширяя их возможности, про это немного можно прочитать здесь). Для того, чтобы сравнить то, что понемногу получается, с тем, что имеется в индустрии, пришлось на глубоком уровне проработать первоисточники по темам Isolation и Consistency (уточню, что имеется ввиду не та Consistency, что в ACID). Обнаружил интересные нюансы, которые и излагаю в этой статье.


Тезисно:


  • Термин Phantom Read является продуктом испорченного телефона
  • Смысл понятий Lost Update, Write Skew и Read Skew для разделения уровней изоляций неочевиден и относителен
  • Движок, который обеспечивает уровень изоляции Serializable, в распределённом мире может вести себя весьма причудливо, например, всегда возвращать пустой результат для read-only транзакций — и ему за это по стандарту "ничего не будет"
  • Strong consistency в Cosmos DB — предел мечтаний? (спойлер: нет)

Ну, и ещё кое-что по мелочи. В конце рассмотрим вот такой венец творения человеческого разума:


Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии25

Протоколы семейства TCP/IP. Теория и практика

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров141K
image

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

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

В ходе работы над статьёй я написал небольшое приложение, которое послужит отправной точкой для понимания компьютерных сетей и семейства протоколов TCP/IP. С приложением можно экспериментировать, получая дополнительные знания.

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

В статье изложены наиболее важные с моей точки зрения понятия, которые должен знать любой программист, хоть как-то сталкивающийся с компьютерными сетями. Так что без теоретических сведений не обошлось.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии5

Архитектурные антипаттерны в микросервисах и способы их избежания

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

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

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

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

Читать далее
Всего голосов 15: ↑13 и ↓2+13
Комментарии15

Межкластерная репликация Apache Kafka между тремя дата-центрами

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

Я Роман Ананьев, NoSQL/Kafka-инженер в Авито. В этом материале расскажу, как мы попробовали использовать брокер сообщений Apache Kafka в трёх дата-центрах и что из этого получилось.

Сначала пробегусь по архитектуре Kafka, потому что она играет роль в репликации между кластерами. Затем коснусь самих способов репликации и расскажу о двух инструментах для неё: MirrorMaker и uReplicator. Основная часть статьи — про нашу реализацию Kafka cluster federation и то, как Kafka размазана на несколько дата-центров.

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии7

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность