Блокчейн и Apache Kafka: versus или вместе

Kafka курсы примеры обучение, Blockchain примеры Big Data, KafkaBlockchain library, блокчейн большие данных, обучение большим данным, Школа Больших Данных Учебный Центр Коммерсант

Сегодня рассмотрим, можно ли построить на Apache Kafka быстрый и надежный блокчейн для криптовалюты, NFT или других проектов, где нужны технологии распределенного реестра. Что общего у топика Apache Kafka с blockchain-цепочкой, чем они отличаются, возможно ли совместить их и для каких случаях. А в качестве примеров перечислим несколько реальных проектов.

Еще раз о том, что такое блокчейн и зачем это нужно

Блокчейн (blockchain) представляет собой реализацию технологии распределенного реестра (Distributed Ledger Technology, DLT) – децентрализованную базу данных или распределенный журнал записей, управляемый разными участниками без центрального регулятора. Эта общая база данных или журнал записей используются совместно с помощью блоков, образующих цепочку. Таким образом, блокчейн — это растущий список записей (блоков), связанных с помощью криптографии. Каждый блок содержит криптографический хэш предыдущего блока, отметку времени и данные транзакции. Хеш как специальный тип криптографической подписи гарантирует, что зашифрованная информация не подвергалась изменениям и что ею нельзя манипулировать.

Блокчейн как цепочка хэшированных блоков может быть общедоступным, как криптовалюта Bitcoin, или контролироваться группой компаний (консорциумом) с помощью различных алгоритмов консенсуса типа Proof-of-Work (POW), Proof-of-Stake (POS) или системы голосования.

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

  • управление цепочками поставок (Supply Chain Management, SCM) в производстве, транспорте, логистике и розничной торговле, включая расчеты по транзакциям, отслеживание социальной ответственности, точную информацию о затратах, доставке и местонахождении товаров, автоматизированные закупки и планирование с использованием ERP- и CRM-систем, обеспечение соблюдения партнерских договоров, безопасность пищевых продуктов.
  • Здравоохранение — управление данными пациентов (особенно контроль доступа), управление и использование данных академических исследований, предотвращение нарушений соответствия, сокращение человеческих ошибок, сквозная актуальная информация о пациентах, безопасное управление идентификацией.
  • телекоммуникации — блокчейн-решение для заключения соглашений о скидках на роуминг с разными операторами связи;
  • финансовые услуги — мгновенные международные платежи с помощью криптовалют с отслеживанием всей цепочки транзакций и мониторингом происхождения данных.

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

Однако, в реальном мире применение блокчейн-технологий ограничено следующими проблемами:

  • техническая сложность провоцирует высокие затраты на реализацию проекта;
  • организационная сложность — развертывание blockchain-цепи в нескольких организациях требует огромных усилий, в том числе соблюдения правовых норм;
  • низкая скорость транзакций пока не позволяет применять эту технологию в финансовой торговле, SCM, Internet of Things и многих других сценариях, где нужна обработка данных в реальном времени;
  • высокое потребление энергии для работы механизма консенсуса;
  • сложности в обеспечении безопасности, включая трудности защиты от несанкционированного доступа развертывание в разных организациях и неопределенность права собственности на данные;
  • высокая стоимость жизненного цикла из-за сложной распределенной инфраструктуры.

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

Что общего между Apache Kafka и blockchain-системой?

Прежде всего подчеркнем, что Apache Kafka не является блокчейном, а представляет собой распределенную надежную платформу потоковой обработки событий с возможностью развертывания stateful-приложений в гибридных архитектурах без простоев и потери данных. Именно высокая доступность обеспечивает потенциал применения Kafka в блокчейн-проектах. Не будучи блокчейном, Kafka обеспечивает множество характеристик, необходимых для реальных blockchain-проектов корпоративного уровня:

  • обработка событий в режиме реального времени;
  • высокая пропускная способность;
  • децентрализованный распределенный и неизменяемый журнал записей;
  • репликация;
  • высокая доступность;
  • разделение приложений/клиентов;
  • управление доступом к данным на основе ролей.

Однако, по умолчанию в Kafka отсутствуют три основных требования для настоящих блокчейн-проектов:

  • защита от несанкционированного доступа;
  • шифрование полезной нагрузки;
  • развертывание в различных независимых организациях.

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

  • интеграция между технологиями блокчейна/DLT и остальной частью предприятия, включая CRM, аналитику больших данных и любые другие настраиваемые бизнес-приложения;
  • надежная масштабируемая обработка данных в режиме реального времени с помощью Kafka для внутренних сценариев использования;
  • блокчейн для безопасной связи между различными независимыми организациями.

Из-за вышеотмеченных ограничений технологии блокчейна, ее следует использовать, только для обеспечения сотрудничества разных ненадежных сторон. На практике для большинства корпоративных проектов блокчейн является ненужной дополнительной сложностью. В 95% случаев достаточно распределенного журнала фиксации, т.е. топика Kafka или защищенного от несанкционированного доступа распределенного реестра, что тоже может быть реализовано на базе этой Big Data платформы.

Тем не менее, в мире многие компании используют Kafka на своих платформах для торговли криптовалютами и токенами. Например, проекты Nash, Hyperledger Fabric, KafkaBlockchain. Также Kafka используется в некоторых проектах Web3 IoT, таких как Helium, и более простых закрытых DLT-реестрах типа R3 Corda. Однако, Kafka НЕ является блокчейном на этих платформах, а играет роль средства соединения блокчейнов с другими приложениями, такими как CRM, озеро или хранилище данных и пр.

Kafka и блокчейн, blockchain Kafka примеры
Kafka в блокчейн-проектах

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

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

Поскольку блокчейны должны быть строго последовательно упорядочены, blockchain-топики Kafka должны либо иметь один раздел, либо потребители для каждого раздела должны взаимодействовать для упорядочивания записей. Если имеется несколько продюсеров, они должны сотрудничать, чтобы последовательно добавлять записи в блокчейн Kafka.

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

Для управления блокчейнами Kafka примеры программ сохраняют хэш SHA-256 первого (генезисного) сообщения для каждого blockchain-топика в ZooKeeper. В производствственной среде можно применять специализированные средства хранения секретов, например, Vault.

KafkaBlockchain library
JAVA-библиотека KafkaBlockchain: принцип работы

Проект KafkaBlockchain использует криптобиблиотеку Bouncy Castle. Apache Maven требуется для создания этой библиотеки и запуска примеров быстрого запуска. Эта библиотека написана с использованием Java 10. В JAR-файле зависимости скрыты от любого проекта Maven, который включает KafkaBlockchain в качестве зависимости. Также в проект включены служебные классы: ByteUtils, KafkaAccess, ZooKeeperAccess, SHA256Hash и Serialization.

Освойте администрирование и использование Apache Kafka для потоковой аналитики больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков больших данных в Москве:

Источники

  1. https://www.kai-waehner.de/blog/2022/01/04/when-not-to-use-apache-kafka/
  2. https://www.kai-waehner.de/blog/2020/07/17/apache-kafka-blockchain-dlt-comparison-kafka-native-vs-hyperledger-ethereum-ripple-iota-libra/
  3. https://github.com/ai-coin/KafkaBlockchain
Поиск по сайту