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

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

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

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

REDIS: такой простой и такой сложный

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

Меня зовут Андрей Комягин, я СТО компании STM Labs. Мы занимаемся разработкой очень больших распределённых высоконагруженных систем для различных отраслей и в своей работе широко используем open-source решения, в том числе СУБД Redis. Недавно я подробно рассказывал об этой системе на конференции Saint HighLoad++, а теперь с удовольствием поделюсь основной информацией с читателями Хабра. Итак, поехали.

Читать далее

Kafka для самых маленьких разработчиков, аналитиков и тестировщиков

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

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

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

Читать далее

NGINX Mail Proxy: на пути к INBOX

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

В публикации рассматривается практический пример развертывания NGINX imap proxy с использованием Python скрипта для привязки пользователей к серверам и реализации Fail2Ban.

Читать далее

Отправка уведомлений по таймеру в Apache Flink

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

Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. В предыдущих постах я рассказал, как собрать первое приложение Flink со Spring, реализовав пайплайн дедупликации сообщений Kafka-to-Kafka. В этом примере погружусь в использование таймеров в Flink, а в следующих статьях расскажу, как работать с более сложными состояниями, эволюционировать их схему и покрыть это все тестами.

Весь разбираемый исходный код есть в репозитории AlexanderBobryakov/flink-spring. В master-ветке представлен итоговый проект по всей серии. Эта статья соответствует релизной ветке с названием release/7_Trigger_Flink_Job.

Это восьмой материал из моей серии про Apache Flink. По мере выхода новых ссылки на них будут появляться ниже.

Читать далее

Как создавать высокопроизводительные очереди сообщений с различной архитектурой

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

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

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

Материал подготовлен по мотивам вебинара «Как создавать высокопроизводительные очереди сообщений с различной архитектурой». Вы можете посмотреть его здесь.

Читать далее

Децентрализованные технологии на службе гражданского общества

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

Государственные системы будут увеличивать контроль над людьми и приходить к тому, что сейчас происходит в Китае. Это в их ДНК.

Мы видим, что сейчас происходит с Павлом Дуровым: его судят за свободу слова и за крипту в Телеграме. Телеграм — лучший мессенджер в мире, и недавно количество его пользователей перевалило за 1 млрд. Государства не устраивает степень свободы, которую получили люди в Телеграме. И вместо точечной работы с преступниками они хотят влиять на саму площадку.

А популярные социальные сети, где есть приемлемая свобода слова, уже сегодня можно сосчитать по пальцам одной руки (спасибо Маску, что выкупил X — он следующий).

Для удушения свобод государства будут использовать новые технологии — но и мы должны использовать их в борьбе за свою свободу.

Читать далее

Мысли вслух. Создание распределенного вычислительного кластера для СУБД

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

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

Идеи создания распределенного вычислительного кластера СУБД (далее РВК) посещали меня достаточно давно. Если упрощенно описать, то программное обеспечение РВК позволяет объединить множество серверов в один суперсервер (кластер), осуществляющий равномерную балансировку всех запросов между отдельными серверами. При этом для приложения, которое работает на РВК все будет выглядеть как будто оно работает с одним сервером и одной базой данных (далее БД), это будут не разрозненные базы данных на распределенных серверах, а как будто одна виртуальная. Все сетевые протоколы, репликационные обмены, прокси-перенаправления будут скрыты внутри РВК. При этом будут эффективно и равномерно использоваться все ресурсы распределенных серверов, в частности, оперативная память и процессорное время.

Читать далее

Распределенные транзакции для самых маленьких

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

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

Читать далее

Распределённые блокировки с помощью Tarantool 3

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

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

Читать далее

1С РИБ опять тормозит. Как лечить?

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

Назрела тут тема про обмены между базами данных 1С. Даже сузим круг и поговорим об обменах между гомогенными базами данных (базами данных с идентичными конфигурациями).

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

Читать далее

Книга: «Безопасные и надежные системы: Лучшие практики проектирования, внедрения и обслуживания как в Google»

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

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

Вам уже знакомы два бестселлера, написанные разработчиками из Google — «Site Reliability Engineering. Надежность и безотказность как в Google» и «Site Reliability Workbook: практическое применение», значит, вы понимаете, что только неуклонное следование жизненному циклу обслуживания позволяет успешно создавать, развертывать и поддерживать программные системы. Сейчас же мы предлагаем взглянуть на проектирование, реализацию и обслуживание систем с точки зрения практиков, специализирующихся на безопасности и надежности.
Читать дальше →

Как организовать анализ большого объема данных в реальном времени

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

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

Меня зовут Николай Карлов. Я директор инновационных проектов в VK Tech. В этой статье я расскажу, что такое HTAP-системы, какие преимущества они предоставляют, и познакомлю с нашей колоночной СУБД Tarantool Column Store, которая реализует HTAP-обработку.

Статья подготовлена по мотивам вебинара «Анализируем данные в Real-time». Его вы можете посмотреть здесь.

Читать далее

Greenplum: эффективное хранение данных с Hybrid Storage

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

В 2021 году мы запустили Greenplum в нашем облаке. И очень скоро столкнулись с тем, что эластичность систем расчёта и хранения — это must have в облачных аналитических БД. А Greenplum — совсем не такой.

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

Читать далее

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

Создание масштабируемых приложений при помощи Kafka и реактивного программирования

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


Введение


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

Оракул времени для блокчейна Hyperledger Fabric

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

В прошлой статье я рассказал, как использование серверов времени (NTP и NTS) решает проблему манипуляцией временем транзакции в блокчейне Hyperledger Fabric (CVE-2024-45244). И к каким финансовым последствиям приводит атака на примере концепта вымышленного уязвимого смарт-контракта, имитирующего цифровой финансовый актив. Концепт-код для защиты от атаки был написан на Go. Поэтому он не применим для смарт-контрактов Hyperledger Fabric, написанных на других языках (Java, JavaScript, TypeScript). Поэтому, я решил сделать Оракул времени: смарт-контракт, который будет источником времени для других смарт-контрактов. Это позволит использовать оракул времени смарт-контрактами, написанными на других языках. Оракул времени доступен в исходном коде.
В этой статье убедимся, что оракул устойчив к атаке "человек посередине" (при использовании NTS). Для атаки будем использовать утилиты netsed (для подмены не зашифрованных данных) и mitmproxy (для подмены сертификата TLS). А также убедимся, что данные протокола NTP подменить возможно. Читатели, которые не знакомы с блокчейном Hyperledger Fabric, могут представить, что оракул времени - это некий API-сервис, возвращающий текущее время (посредник между клиентом и NTP/NTS сервером).

Читать далее

Сила gRPC в облачных окружениях

Время на прочтение7 мин
Количество просмотров3K
При разработке исходно облачных (cloud-native) приложений требуется наладить гладкую и эффективную коммуникацию между различными компонентами. Для начала давайте рассмотрим весь спектр инструментов от XML до gRPC, которые обеспечивают и улучшают эти критически важные взаимодействия.

XML (часто с применением SOAP):


<order>
    <bookID>12345</bookID>
    <quantity>2</quantity>
    <user>JohnDoe</user>
</order>

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

Как реализовать и оптимизировать UPSERT в Greenplum 6

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

Привет! Меня зовут Антон Васильев, я работаю инженером технической поддержки компании Arenadata и нередко сталкиваюсь с довольно каверзными задачами и багами. Одной из них была проблема оптимизации механизма UPSERT в Greenplum 6. В этой статье я хочу рассказать, как эта задача может быть решена.

Читать далее

Быстрая обработка данных в data lake с помощью SQL

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

Кому пришла в голову идея отправлять SQL запросы в data lake? Оказывается, это позволяет компаниям более гибко и эффективно анализировать свои данные за счёт уменьшения потребности в ETL и снижения нагрузки на корпоративное хранилище. Рассмотрим, какие популярные SQL-движки умеют это делать и как им это удаётся.

Меня зовут Владимир Озеров, я руковожу компанией Querify Labs. Мы уже порядка 10 лет занимаемся распределённым SQL, делаем всевозможные SQL-движки, в частности CedrusData — коммерческий движок на основе опенсорс проекта Trino. Сегодня поговорим про то, каким образом устроен ряд SQL-движков, которые обрабатывают данные от data lake.

Читать далее

Go Tarantool: как построить Key-value-хранилище на сотни тысяч запросов в секунду

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

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

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

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

Читать далее

Как перейти на многонодовую архитектуру без боли. Или почти без боли

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

Есть у нас флагманский продукт под названием «Единый клиент», с которым работают десятки энтерпрайз-клиентов, оперирующих в нем сотнями миллионов записей. Продукт массивный, обвешанный аналитикой и различными сложными сервисами. В какой-то момент большая часть клиентов захотела получить общий uptime в 99,9%, чего сложно достичь без резервирования решения. И мы начали погружаться в эту тему практически с нуля.

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

Читать далее