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

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

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

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

Микросервисы на основе событий с Dapr

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

Системы оркестрации контейнеров существенно упростили управление многокомпонентными системами, в том числе основанными на микросервисной архитектуре. Но остался открытым вопрос организации надежного обмена сообщениями между микросервисами, координации последовательности операций при распределенной архитектуре. В этой статье мы рассмотрим подход Incubating (CNCF)-проекта Dapr (Distributed Application Runtime) по использованию Sidecar-контейнеров в Kubernetes для реализации микросервисной архитектуры, основанной на событиях. 

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии0

Как работают объектные хранилища: объясняем на практике и собственных шишках

Время на прочтение11 мин
Количество просмотров12K
Объектные хранилища сейчас повсюду. До прихода в Selectel я лишь знал, что они живут в облаках, сложно тарифицируются, а Amazon снова впереди планеты всей… Но, если подумать, так можно сказать почти про любую облачную услугу, и это не расскажет нам о ее реальных особенностях.

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

Попытки понять природу непривычных ограничений порождают лишь новые вопросы: почему можно удалять только пустой контейнер? Почему нельзя быстро перенести большой объем данных из одного контейнера в другой? Да и вообще, что это за название такое — объектные — и какая магия творится под капотом?

На связи Рома из команды объектного хранилища Selectel, и я изучил наш опыт разработки и поддержки такого продукта на протяжении 10 лет. Под катом находится первая часть истории, где я поделюсь своими открытиями о теоретической части вопроса.
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии3

Обновляемые смарт-контракты: Что это такое и как создать свой собственный. Часть 2

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

В первой теоретической части мы поговорили про то, что такое обновляемый смарт-контракт и как работают обновления.

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

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

Читать далее
Рейтинг0
Комментарии1

Сделай сам: ОМС и МИС на коленке

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

ИТ в медицине — достаточно скользкая тема. Нужно отметить, что за последние 10 лет реально растет "проникновение" (как выражаются бюрократы) ИТ в медицину и в здравоохранение в целом. Спецы, работающие в линейных МО (мед. организациях), не дадут соврать. Мне даже представляется, что РФ не то, что отстает, но даже где-то и опережает глобальные тренды. Правда, на мой взгляд, есть разрыв между собственно технологиями и уровнем подготовки и мотивации пользователей, для которых они создаются. Ну и сами ИТ решения не всегда решения, а, скорее, головная боль

Любой МО нужен софт, и не просто бухгалтерский 1С, управление торговлей и CRM, нужен специализированный, МИСы (медицинские информационные системы), и не одна. Нужно вести учет приема пациентов, как-то получать, анализировать и хранить диагностические данные (изображения, графики, результаты анализов, и много чего еще), вести карты с записями о болезнях и т.д. и т.п.

Если МО участвует в программе обязательного мед. страхования (ОМС), она должна ежемесячно формировать и отправлять в территориальный (федеральный) фонд ОМС (ТФОМС) отчеты о количестве принятых в МО пациентов, характере и стоимости оказанной им мед. помощи. Без этого, никак нет возможности получить денежное возмещение от страховых компаний за оказанные услуги.

Собственно отчет — это 2-3 XML файла, упакованных в ZIP архив. Для подготовки пакетов с отчетами, разбора протоколов ошибок и оформления реестров к счетам для страховых компаний, я написал небольшую библиотеку и web приложение (сервер задач) для доступа к библиотеке по REST API.

Возможно, это будет интересно специалистам, или более широкой публике.

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

Истории

Почему стоит использовать лимиты CPU в Kubernetes

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

Эту статью я написал в противовес статье “For the love of god, stop using CPU limits on Kubernetes” (Ради всего святого, прекратите использовать в Kubernetes лимиты CPU).

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

При этом моё несогласие, явно выраженное в противоположном по смыслу заголовке, связано с той категоричностью, с которой в итоге автор рекомендует не устанавливать лимиты потребления CPU.
Читать дальше →
Всего голосов 42: ↑38 и ↓4+34
Комментарии9

Обновляемые смарт-контракты: Что это такое и как создать свой собственный. Часть 1

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

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

Чтобы получить максимальную пользу от этой статьи, вы должны иметь начальные знания о смарт-контрактах на базе Ethereum и EVM. В этой серии статей приводится краткое описание кода, так что опыт программирования не менее трех месяцев будет полезен, как и базовое понимание Solidity и способов его компиляции, что такое смарт-контракты и как они развертываются, а также как использовать такие инструменты, как Metamask и Hardhat.

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии0

Что такое стандарты на крипто-токены?

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

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

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

Читать далее
Всего голосов 5: ↑2 и ↓3-1
Комментарии1

CAP двенадцать лет спустя: как изменились «правила»

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


Эта статья впервые появилась в журнале Computer и подготовлена InfoQ & IEEE Computer Society.


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


За десятилетие, прошедшее с появления теоремы, разработчики и исследователи использовали теорему CAP (а иногда и злоупотребляли ею) как повод для изучения широкого спектра новых распределенных систем. Движение NoSQL также использовало её в качестве аргумента против традиционных баз данных.


В теореме CAP говорится, что любая сетевая система с общими данными может иметь не более двух из трех желаемых свойств:


  • согласованность (С), эквивалентная наличию единственной актуальной копии данных;
  • высокая доступность (A) этих данных (для обновлений); и
  • устойчивость к сетевым разделениям (P).

Такое толкование CAP помогало разработчикам быть открытыми для более широкого диапазона систем и компромиссов; действительно, за последнее десятилетие возникло множество новых систем и много споров об относительных достоинствах согласованности и доступности. Формулировка «2 из 3» всегда вводила в заблуждение, поскольку имела тенденцию чрезмерно упрощать противоречия между свойствами. Но сейчас такие тонкости имеют значение. CAP запрещает лишь крошечную часть проектного пространства: идеальная доступность и согласованность при наличии разделений, которые встречаются редко.

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

Собрать за 60 секунд: кейс автоматизации получения данных из десятков подразделений

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

Привет, Хабр! Меня зовут Сергей Корнеев, и я хочу рассказать о том, как мы организовали сбор данных в компании “Россети”. На момент запуска проекта я работал в “Россети.Цифра” и руководил внедрением BI-платформы. Нам с командой удалось решить проблему ручного сбора данных на базе Visiology Smart Forms, и именно об этом я расскажу сегодня. 

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

Децентрализируй это. Создание сетей хранения без единого центра на Go

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

Сеть Интернет по своей архитектуре допускает возможность прямого обмена трафиком между любыми узлами, но все же в большинстве сценариев используется асимметричный вариант использования с относительно небольшим количеством узлов, отдающих содержание (объединенных в CDN, кэширующие сети (например, Google Global Cache), либо отдельные зеркала, расположенные на высокоскоростных каналах). При многих достоинствах такой подход не лишен и серъезных недостатков, прежде всего из-за значительной разбалансированности сети и перегрузке некоторых каналов связи при относительно небольшом трафике на других.

Решением этой проблемы могло стать использование сетей, основанных на прямом обмене трафиком (peer-to-peer или p2p), но создание полностью децентрализованной сети представляет значительную сложность, поэтому во многих случаях все же оставляют некоторые общие реестры, хранящие информацию об узлах-носителях определенного содержания (так, например, работают торрент-трекеры) и на которых регистрируются клиенты сети при подключении. Основным недостатком такого псевдодентрализованного подхода является возможность относительно простой остановки функционирования сети через блокировку соответствующих трекеров. Альтернативой могут быть полностью децентрализованные сети и мы рассмотрим в этой статье основные подходы к их реализации на примере свободного протокола и сети Peernet.

Читать далее
Всего голосов 16: ↑6 и ↓10-4
Комментарии2

Проблема трех «Н» и 5 типов гибридных облаков, характерных для России

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

Привет, Хабр! Сегодня мне хотелось бы поговорить о том, почему все больше клиентов ЦОДов предпочитают гибридные облачные инфраструктуры, и поговорить о том, как именно их можно реализовать на практике. Под катом вы найдете разные схемы создания гибридной облачной инфраструктуры. Всех заинтересованных приглашаю обсудить плюсы и минусы такого подхода в развитии ИТ-инфраструктуры.

Давайте посмотрим, что там в облаках...
Всего голосов 10: ↑9 и ↓1+8
Комментарии3

Объяснение Proof-of-History из документации Solana

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

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

Перед вами перевод Белой Книге, где описывается основная концепция Solana - доказательство истории (Proof-of-History, PoH).

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

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

Битва брокеров сообщений: RabbitMQ, Kafka, AWS SNS/SQS

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

Если вы работаете с вебом, вы обязательно столкнётесь с брокерами сообщений. Они бывают разные, но чаще остальных встречаются Kafka, RabbitMQ и AWS SNS/SQS. У каждого из них есть свои особенности, плюсы и минусы — выбирать брокер нужно под свою задачу. 

О том, как сделать правильный выбор, рассказали эксперты из команды курса «Go-разработчик» Яндекс Практикума: 

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

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

Основные архитектурные шаблоны построения ПО

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

Краткий обзор восьми наиболее востребованных архитектурных шаблонов с иллюстрациями:

Читать дальше →
Всего голосов 61: ↑58 и ↓3+55
Комментарии6

Типизация для Kafka-топиков в Юле

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

Мы делаем Юлу уже 7 лет, из небольшого проекта она превратилась в сервис объявлений с аудиторией в 33 млн пользователей. За это время в Юле появилось значительное количество функций и настроек, реализованных в разных компонентах. Одна из трудностей, встающих перед разработчиками подобных распределённых систем, связана с обеспечением согласованной работы отдельных компонентов, а именно с поддержкой контрактов сервисов. Мы также столкнулись с некоторыми проблемами, вытекающими из первоначального отсутствия контрактов.

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

Apache Cassandra: механизмы репликации и поддержания согласованности

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

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

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

Как НЕ надо строить надежные системы

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


При проектировании системы знание анти-паттернов и подвохов зачастую оказывается более полезным, чем знание самих паттернов. Отталкиваясь от этой идеи, я решил написать данную статью, чтобы рассказать о факторах, которые, на мой взгляд, приведут к созданию ненадёжных систем. В её основе лежит мой собственный опыт проектирования преимущественно распределённых корпоративных приложений. Будет здорово, если ниже вы поделитесь собственным опытом и полезными идеями по теме.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+59
Комментарии3

Деревья Меркла и экономия газа в смарт-контрактах Solidity

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

В идеальном децентрализованном приложении мы бы хотели хранить все в блокчейне на смарт-контрактах — в хранилище Ethereum: данные не могут быть изменены несанкционированным способом. Но запись какой-либо информации, размером 32 байта обойдется нам в 20000 газа. На момент написания статьи это примерно $0.26, c одной стороны не много, но что если мы хотим хранить в хранилище какой-то значительный массив информации.

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

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

Видео-туториал: https://www.youtube.com/watch?v=1aC1_AlCuT8

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

Сколько стоит облако? Оpen source инструменты, чтобы оценить расходы на виртуальную инфраструктуру

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

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

Предлагаем обратить внимание на open source решения, позволяющие найти «узкие места» и сократить чек в условиях уже развернутой инфраструктуры — например, Komiser, OpenCost, Koku.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии0

Собираем систему потоковой аналитики из логов приложений

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

Приветствую, коллеги.

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

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

Итак, представим, что у нас имеется некоторое количество приложений, которые изначально “не обучены” отдавать аналитику в режиме реального времени. Задача заключается в том, чтобы построить систему мониторинга бизнес-показателей с минимальным вмешательством в эти системы.

Существует множество способов решить эту задачу, и как водится, все они обладают своими достоинствами и недостатками. Основное достоинство описываемого способа заключается в очень простой реализации на стороне приложения (с которого есть необходимость получать аналитику). Но если бы мы сейчас разрабатывали все те приложения, которые нужно “научить” делиться аналитикой, то мы бы, наверное, их подружили с брокером сообщений типа Kafka или Rabbit, а внедрять в уже существующие приложения работу с брокером сообщений (особенно, если брокеры очередей сообщений не развернуты в компании) значительно сложнее, чем просто научить приложения писать свои показатели в лог.

Итак, рассмотрим подробно, как устроена предлагаемая система:

В основе системы лежат события, которые генерируют приложения. События сохраняются в лог (stdout, файл,..). Обработчик (сборщик) логов (в режиме реального времени) распознает в логах события приложений и отправляет их в хранилище (БД).

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