кафка что это такое
Apache Kafka: обзор
Сегодня мы предлагаем вам сравнительно краткую, но при этом толковую и информативную статью об устройстве и вариантах применения Apache Kafka. Рассчитываем перевести и выпустить книгу Нии Нархид (Neha Narkhede) et. al до конца лета.
Приятного чтения!
Введение
Сегодня много говорят о Kafka. Многие ведущие айтишные компании уже активно и успешно пользуются этим инструментом. Но что же такое Kafka?
Kafka был разработан в компании LinkedIn в 2011 году и с тех пор значительно усовершенствовался. Сегодня Kafka – это целая платформа, обеспечивающая избыточность, достаточную для хранения абсурдно огромных объемов данных. Здесь предоставляется шина сообщений с колоссальной пропускной способностью, на которой можно в реальном времени обрабатывать абсолютно все проходящие через нее данные.
Все это классно, однако, если свести Kafka к сухому остатку, то получится распределенный горизонтально масштабируемый отказоустойчивый журнал коммитов.
Мудрено звучит. Давайте рассмотрим каждый из этих терминов и разберемся, что он означает. А затем подробно исследуем, как все это работает.
Распределенной называется такая система, которая в сегментированном виде работает сразу на множестве машин, образующих цельный кластер; поэтому для конечного пользователя они выглядят как единый узел. Распределенность Kafka заключается в том, что хранение, получение и рассылка сообщений у него организовано на разных узлах (так называемых «брокерах»).
Важнейшие плюсы такого подхода – высокодоступность и отказоустойчивость.
Давайте сначала определимся с тем, что такое вертикальная масштабируемость. Допустим, у нас есть традиционный сервер базы данных, и он постепенно перестает справляться с нарастающей нагрузкой. Чтобы справиться с этой проблемой, можно просто нарастить ресурсы (CPU, RAM, SSD) на сервере. Это и есть вертикальное масштабирование – на машину навешиваются дополнительные ресурсы. При таком «масштабировании вверх» возникает два серьезных недостатка:
После определенного порога горизонтальное масштабирование становится гораздо дешевле вертикального
Для нераспределенных систем характерно наличие так называемой единой точки отказа. Если единственный сервер вашей базы данных по какой-то причине откажет – вы попали.
Распределенные системы проектируются таким образом, чтобы их конфигурацию можно было корректировать, подстраиваясь под отказы. Кластер Kafka из пяти узлов остается работоспособным, даже если два узла лягут. Необходимо отметить, что для обеспечения отказоустойчивости обязательно приходится частично жертвовать производительностью, поскольку чем лучше ваша система переносит отказы, тем ниже ее производительность.
Журнал коммитов (также именуемый «журнал опережающей записи», «журнал транзакций») – это долговременная упорядоченная структура данных, причем, данные в такую структуру можно только добавлять. Записи из этого журнала нельзя ни изменять, ни удалять. Информация считывается слева направо; таким образом гарантируется правильный порядок элементов.
Схема журнала коммитов
— Вы имеете в виду, что структура данных в Kafka настолько проста?
Во многих отношениях — да. Эта структура образует самую сердцевину Kafka и абсолютно бесценна, поскольку обеспечивает упорядоченность, а упорядоченность – детерминированную обработку. Обе эти проблемы в распределенных системах решаются с трудом.
В сущности, Kafka хранит все свои сообщения на диске (подробнее об этом ниже), а при упорядочивании сообщений в виде вышеописанной структуры можно пользоваться последовательным считыванием с диска.
Как все это работает?
Приложения (генераторы) посылают сообщения (записи) на узел Kafka (брокер), и указанные сообщения обрабатываются другими приложениями, так называемыми потребителями. Указанные сообщения сохраняются в теме, a потребители подписываются на тему для получения новых сообщений.
Темы могут разрастаться, поэтому крупные темы подразделяются на более мелкие секции для улучшения производительности и масштабируемости. (пример: допустим, вы сохраняли пользовательские запросы на вход в систему; в таком случае можно распределить их по первому символу в имени пользователя)
Kafka гарантирует, что все сообщения в пределах секции будут упорядочены именно в той последовательности, в которой поступили. Конкретное сообщение можно найти по его смещению, которое можно считать обычным индексом в массиве, порядковым номером, который увеличивается на единицу для каждого нового сообщения в данной секции.
В Kafka соблюдается принцип «тупой брокер – умный потребитель». Таким образом, Kafka не отслеживает, какие записи считываются потребителем и после этого удаляются, а просто хранит их в течение заданного периода времени (например, суток), либо до тех пор, пока не будет достигнут некоторый порог. Потребители сами опрашивают Kafka, не появилось ли у него новых сообщений, и указывают, какие записи им нужно прочесть. Таким образом, они могут увеличивать или уменьшать смещение, переходя к нужной записи; при этом события могут переигрываться или повторно обрабатываться.
Следует отметить, что на самом деле речь идет не об одиночных потребителях, а о группах, в каждой из которых – один или более процессов-потребителей. Чтобы не допустить ситуации, когда два процесса могли бы дважды прочесть одно и то же сообщение, каждая секция привязывается лишь к одному процессу-потребителю в пределах группы.
Так устроен поток данных
Долговременное хранение на диске
Как упоминалось выше, Kafka на самом деле хранит свои записи на диске и ничего не держит в оперативной памяти. Да, возможен вопрос, есть ли в этом хоть капля смысла. Но в Kafka действует множество оптимизаций, благодаря которым такое становится осуществимым:
Распределение и репликация данных
Теперь давайте обсудим, как в Kafka достигается отказоустойчивость, и как он распределяет данные между узлами.
Данные с сегмента реплицируются на множестве брокеров, чтобы данные сохранились, если один из брокеров откажет.
В любом случае, один из брокеров всегда “владеет” секцией: этот брокер — именно тот, на котором приложения выполняют операции считывания и записи в секцию. Этот брокер называется «ведущим секции». Он реплицирует получаемые данные на N других брокеров, так называемых ведомыми. На ведомых также хранятся данные, и любой из них может быть выбран в качестве ведущего, если актуальный ведущий откажет.
Так можно сконфигурировать гарантии, обеспечивающие, что любое сообщение, которое будет успешно опубликовано, не потеряется. Когда есть возможность изменить коэффициент репликации, можно частично пожертвовать производительностью ради повышенной защиты и долговечности данных (в зависимости от того, насколько они критичны).
Таким образом, если один из ведущих когда-нибудь откажет, его место может занять ведомый.
Однако, логично спросить:
— Как генератор/потребитель узнает, какой брокер – ведущий данной секции?
Чтобы генератор/потребитель мог записывать/считывать информацию в данной секции, приложению нужно знать, какой из брокеров здесь ведущий, верно? Эту информацию нужно где-то взять.
Для хранения таких метаданных в Kafka используется сервис под названием Zookeeper.
Что такое Zookeeper?
Zookeeper – это распределенное хранилище ключей и значений. Оно сильно оптимизировано для считывания, но записи в нем происходят медленнее. Чаще всего Zookeeper применяется для хранения метаданных и обработки механизмов кластеризации (пульс, распределенные операции обновления/конфигурации, т.д.).
Таким образом, клиенты этого сервиса (брокеры Kafka) могут на него подписываться – и будут получать информацию о любых изменениях, которые могут произойти. Именно так брокеры узнают, когда ведущий в секции меняется. Zookeeper исключительно отказоустойчив (как и должно быть), поскольку Kafka сильно от него зависит.
Он используется для хранения всевозможных метаданных, в частности:
Ранее Генератор и Потребители непосредственно подключались к Zookeeper и узнавали у него эту (а также другую) информацию. Теперь Kafka уходит от такой связки и, начиная, соответственно, с версий 0.8 и 0.9 клиенты, во-первых, выбирают метаданные непосредственно у брокеров Kafka, а брокеры обращаются к Zookeeper.
Потоковый процессор в Kafka отвечает за всю следующую работу: принимает непрерывные потоки данных от входных тем, каким-то образом обрабатывает этот ввод и подает поток данных на выходные темы (либо на внешние сервисы, базы данных, в корзину, да куда угодно…)
Простую обработку можно выполнять непосредственно на API генераторов/потребителей, однако, более сложные преобразования – например, объединение потоков, в Kafka выполняется при помощи интегрированной библиотеки Streams API.
Этот API предназначен для использования в рамках вашей собственной базы кода, на брокере он не работает. Функционально он подобен API потребителя, облегчает горизонтальное масштабирование обработки потоков и распределение его между несколькими приложениями (подобными группам потребителей).
Обработка без сохранения состояния
Обработка без сохранения состояния — это поток детерминированной обработки, не зависящий ни от каких внешних факторов. В качестве примера рассмотрим вот такое простое преобразование данных: прикрепляем информацию к строке
Важно понимать, что потоки и таблицы – это, в сущности, одно и то же. Поток можно интерпретировать как таблицу, а таблицу – как поток.
Если обратить внимание, как выполняется синхронная репликация базы данных, то очевидно, что речь идет о потоковой репликации, где любые изменения в таблицах отправляются на сервер копий (реплику). Поток Kafka можно интерпретировать точно так же – как поток обновлений для данных, которые агрегируются и дают конечный результат, фигурирующий в таблице. Такие потоки сохраняются в локальной RocksDB (по умолчанию) и называются KTable.
Таблицу можно считать мгновенным снимком, отражающим последнее значение для каждого ключа в потоке. Аналогично, из потоковых записей можно составить таблицу, а из обновлений таблицы — сформировать поток с логом изменений.
При каждом обновлении можно сделать мгновенный снимок потока (запись)
Обработка с сохранением состояния
Проблема с поддержанием состояния в потоковых процессорах заключается в том, что эти процессоры иногда отказывают! Где же хранить это состояние, чтобы обеспечить отказоустойчивость?
Упрощенный подход – просто хранить все состояние в удаленной базе данных и подключаться к этому хранилищу по сети. Проблема в том, что тогда теряется локальность данных, а сами данные многократно перегоняются по сети – оба фактора существенно тормозят ваше приложение. Более тонкая, но важная проблема заключается в том, что активность вашего задания потоковой обработки будет жестко зависеть от удаленной базы данных – то есть, это задание будет несамодостаточным (вся ваша обработка может рухнуть, если другая команда внесет в базу данных какие-то изменения).
Итак, какой же подход лучше?
Вновь вспомним о дуализме таблиц и потоков. Именно благодаря этому свойству потоки можно преобразовывать в таблицы, расположенные именно там, где происходит обработка. Также при этом получаем механизм, обеспечивающий отказоустойчивость – мы храним потоки на брокере Kafka.
Потоковый процессор может сохранять свое состояние в локальной таблице (например, в RocksDB), которую будет обновлять входной поток (возможно, после каких-либо произвольных преобразований). Если этот процесс сорвется, то мы сможем восстановить соответствующие данные, повторно воспроизведя поток.
Можно добиться даже того, чтобы удаленная база данных генерировала поток и, фактически, широковещательно передавала лог изменений, на основании которого вы будете перестраивать таблицу на локальной машине.
Обработка с сохранением состояния, соединение KStream с KTable
Как правило, код для обработки потоков приходится писать на одном из языков для JVM, поскольку именно с ней работает единственный официальный клиент Kafka Streams API.
Образец установки KSQL
KSQL – это новая фича, позволяющая писать простые потоковые задания на знакомом языке, напоминающем SQL.
Настраиваем сервер KSQL и интерактивно запрашиваем его через CLI для управления обработкой. Он работает точно с теми же абстракциями (KStream и KTable), гарантирует те же преимущества, что и Streams API (масштабируемость, отказоустойчивость) и значительно упрощает работу с потоками.
Возможно, все это звучит не вдохновляюще, но на практике очень полезно для тестирования материала. Более того, такая модель позволяет приобщиться к потоковой обработке даже тем, кто не участвует в разработке как таковой (например, владельцам продукта). Рекомендую посмотреть небольшое вводное видео – сами убедитесь, насколько здесь все просто.
Альтернативны потоковой обработке
Потоки Kafka – идеальное сочетание силы и простоты. Пожалуй, Kafka – лучший инструмент для выполнения потоковых заданий, имеющихся на рынке, а интегрироваться с Kafka гораздо проще, чем с альтернативными инструментами для потоковой обработки (Storm, Samza, Spark, Wallaroo).
Проблема с большинством других инструментов потоковой обработки заключается в том, что их сложно развертывать (и с ними тяжело обращаться). Фреймворк для пакетной обработки, например, Spark, требует:
Kafka Streams позволяет вам сформулировать собственную стратегию развертывания, когда вам это потребуется, причем, работать с инструментом на ваш вкус: Kubernetes, Mesos, Nomad, Docker Swarm и пр.
Kafka Streams предназначен прежде всего для того, чтобы вы могли организовать в своем приложении потоковую обработку, однако, без эксплуатационных сложностей, связанных с поддержкой очередного кластера. Единственный потенциальный недостаток такого инструмента – его тесная связь с Kafka, однако, в нынешней реальности, когда потоковая обработка в основном выполняется именно при помощи Kafka, этот небольшой недостаток не так страшен.
Когда стоит использовать Kafka?
Как уже говорилось выше, Kafka позволяет пропускать через централизованную среду огромное количество сообщений, а затем хранить их, не беспокоясь о производительности и не опасаясь, что данные будут потеряны.
Таким образом, Kafka отлично устроится в самом центре вашей системы и будет работать как связующее звено, обеспечивающее взаимодействие всех ваших приложений. Kafka может быть центральным элементом событийно-ориентированной архитектуры, что позволит вам как следует отцепить приложения друг от друга.
Kafka позволяет с легкостью разграничить коммуникацию между различными (микро)сервисами. Работая Streams API, стало как никогда просто писать бизнес-логику, обогащающую данные из темы Kafka перед тем, как их станут потреблять сервисы. Здесь открываются широчайшие возможности – поэтому настоятельно рекомендую изучить, как Kafka применяется в разных компаниях.
Apache Kafka – это распределенная потоковая платформа, позволяющая обрабатывать триллионы событий в день. Kafka гарантирует минимальные задержки, высокую пропускную способность, предоставляет отказоустойчивые конвейеры, работающие по принципу «публикация/подписка» и позволяет обрабатывать потоки событий.
В этой статье мы познакомились с базовой семантикой Kafka (узнали, что такое генератор, брокер, потребитель, тема), узнали о некоторых вариантах оптимизации (страничный кэш), узнали, какую отказоустойчивость гарантирует Kafka при репликации данных и вкратце обсудили его мощные потоковые возможности.
Франц Кафка: как неудачник стал самым культовым писателем века
После смерти Франц Кафка повелел своему душеприказчику и другу Максу Броду сжечь без исключения всё им написанное, но Макс Брод не подчинился воле усопшего и опубликовал большую часть его работ, которая вскоре начала привлекать к себе внимание. И спустя 25 лет после смерти от туберкулеза он становится едва ли не самым знаковым и популярным писателем XX века. Мрачное насупленное лицо и образ несчастного человека до сих пор прельщают зрелые и не очень умы. Его боготворят, ему поклоняются, его чтят. Хотя многие его литературу не понимают. В чем же причина? В чем магия личности, которая впечатляет даже тех, кто его произведения не читал вовсе? Что же так прельщает людей, выстраивающихся в очередь на поклон его могиле и рыдающих над «Превращением»?
Франц Кафка — слишком трагическая фигура
Жизнь дает нам множество шансов хоть как-то оправдать собственное существование. И если первый этап оказался, мягко говоря, не очень удачным, то возможно, при должном старании тебе представится еще один шанс. Единственная проблема — даже в этом случае надо что-то делать, причем делать качественно, ибо дерьмо классикой стать не может.
Кафка именно таков. Сгусток комплексов, страхов и противоречий, которые не давали Францу ни жить в полную силу, ни раскрыться и превратиться в большого писателя. А всё благодаря собственному страху быть воспринятым отталкивающим как физически, так и умственно. И всё это при том, что Франц с младых ногтей крутился в обществе германоязычных поэтов Чехии. При его жизни было опубликовано всего несколько коротких рассказов, составивших очень малую долю его работ, а потому странное творчество Франца Кафки привлекало мало внимания.
Кафка разрывался между чувством и долгом — с одной стороны, Франц считал себя «должным» своим родителям, навязывающим ему юриспруденцию, с другой — его тянуло к литературе и писательству. «Всё, не связанное с литературой, я ненавижу, — записывал он, — …мне скучно ходить в гости, страдания и радости моих родственников наводят на меня безмерную скуку».
Некоторое время Кафка был простым скучным офисным работником в страховом отделе по несчастным случаям, что приводило его в полное отчаяние и еще больший пессимизм. В дневнике Франц писал: «Для меня это ужасная двойная жизнь, из которой, возможно, есть только один выход — безумие».
Боязнь быть высмеянным и непризнанным вкупе с деспотией родителей — как же это знакомо. Читая письма и дневники Кафки, понимаешь, что за 100 лет ничего не изменилось, — до сих пор непонимание и конфликты поколений мешают таким вот талантам раскрыться и наслаждаться прижизненной славой. Чтобы понять всю полноту трагедии, нужно прочитать его знаменитое письмо отцу, так и не дошедшее до адресата. Хотя Франц Кафка и винил во всех бедах отца, главными причинами его бед были неспособность подстроиться под реалии мира и гора комплексов.
И была третья группа, которая жила в Праге едва ли не с момента ее основания, жила в изолированном гетто, окруженном высокой стеной. Жила обособленно, лепя мифических големов и насылая проклятия на несчастных христиан. Это были евреи, к коим Франц Кафка и относился. Евреи, евреи, кругом одни евреи. Абсолютные чужаки, которые так и не стали своими, с которыми связывали ряд суеверий (в том числе и пресловутого голема), которых выгоняли, а потом возвращали в город. В середине XIX века гетто сделали официальным кварталом, а сынам иудейским наконец дали все гражданские права. И, казалось бы, жизнь наладилась, отец Кафки стал одним из успешнейших предпринимателей города, его дядя был генеральным директором железных дорог Испании. Но в 1897 году, когда Францу было 14, случился очередной еврейский погром. Немецкую речь, разносившуюся эхом над Влтавой, сменила чешская, Австро-Венгрия распалась на куски, образовав единую Чехословакию в 1918, а евреи так и остались чужаками.
Изгнанник, ставший везде своим
К чему этот объемный исторический экзерсис? Чтобы лучше понять ощущение ничтожности маленького человека, после смерти превратившегося в большого писателя. Франц писал: «Прага никогда не выпустит, у этой матушки те еще клешни», — вот так он любил родной город и всё равно стал его маскотом. Домов, где он бывал, проживал и останавливался — уйма, на каждом втором — мемориальная табличка, но надо отметить, что речь идет о самом читаемом немецкоязычном писателе. Отбросим стереотипы о нехороших взаимоотношениях германцев и иудеев, появившихся после Второй мировой, не стоит забывать, что это был государственный язык страны, в которой он прожил большую часть жизни. Кафка и чешским владел, но чего изменять традициям, если все твои произведения пишутся в стол, а сам ты просишь их уничтожить? Может быть, если бы Франц Кафка писал на чешском, то не стал бы таким популярным (все же на немецком говорит гораздо больше людей), но важно другое. Вот что он говорит о немецкоязычных писателях еврейского происхождения: «Они живут с тремя невозможностями: невозможностью не писать, невозможностью писать по-немецки, невозможностью писать иначе. Можно добавить четвертую невозможность — невозможность писать вообще».
И хотя еврейские погромы не затронули семью Кафки, сам он чувствовал себя чужаком, о чем писал: «Prasive plemeno — поганая кровь. Так при мне называли евреев. Не правда ли, естественно покинуть место, в котором тебя так яростно ненавидят. Героизм, который требуется для того, чтобы остаться несмотря ни на что — героизм таракана, которого тоже ничем не выжить из ванной».
Но сама ситуация абсурдна: еврей из Чехии пишет на немецком, становится символом города, который он любил, но отождествлял со злом, которое высасывает из него силу. Так что абсурд есть не только в его романах, но и во всей жизни Франца Кафки. Чужак, изгой, ставший маскотом — это ли не квинтессенция абсурда? Правда, всё поклонение писательскому гению выражается не только в паломничестве к могиле Кафки.
Например, они построили музей, сильный и впечатляющий, но после него испытываешь всю экзистенциальную глубину и ходишь два часа как мешком прибитый. Памятник в виде огромной крутящейся головы писателя и монумент пониже, где он верхом на своем костюме. А напротив того самого музея сияет изящный скульптурный комплекс: двое мужчин стоят на карте Чехии и писают на нее, вырисовывая буквы национального алфавита. Олицетворяют, конечно же, отношение правительства. И хотя у всех выдающихся чешских авторов была особенная страсть к высмеиванию общества и политиков, это абсурдное творение смотрится более логично возле музея Кафки, чем музея Чапека и Гашека.
Швейк, конечно, издевательски абсурден, «Война с саламандрами» и вовсе пугает, но с «Замком» и «Процессом» они не сравнятся, там уровень абсурдности не поддается исчислению. Этим и ценен Кафка, за это его и любят: так обличать бюрократию, как он, не мог и не может никто. За эту его уникальность его и любят.
Франц Кафка — любимец женщин
Образ забитого, запуганного собственным отцом паренька, неспособного существовать в этом мире, рисует образ закоренелого девственника поневоле. Однако у этого рефлексирующего и слабого человека не было проблем с женщинами. Женщины его влекли и вместе с тем пугали. Встречам и общению с ними Франц предпочитал письма. Сейчас это называется «хорошо устроился» — встречался, когда хотел. Но это же Кафка, и причины у него были не такие приземленные.
Четыре женщины, 3 помолвки (причем с одной женщиной дважды). Некоторые недалекие неудачники считают, что если такой затворник, как Кафка, охмурял девиц, то и у них получится. Некоторые даже считают Франца «красавчиком» — обломал женщину, дважды унизил, не пошел на брак. Но это была патологическая боязнь брака и полной потери независимости, которой и так не было. Единственную женщину, на которой Франц Кафка готов был жениться, забраковал деспотичный папаша — не дал согласия, слишком низкородная и бедная у нее была семья.
К женщинам у Кафки странное отношение. Ту, что он обломал дважды — Фелицию Бауэр — он сам называл некрасивой и говорил о сходстве ее лица с лошадиной мордой. Единственное, что его в ней привлекало — берлинская прописка. Нет, Берлин как таковой тут не важен. Важно то, что она живет далеко. Ее можно не видеть. С ней можно не разговаривать.
Зато одна женщина была под стать ему. Милена — талантливая, эмоциональная бисексуалка, балующаяся наркотиками и отлежавшая в психушке. А на вопрос, почему они расстались, отвечает Франц Кафка так: «Я любил девушку, которая тоже любила меня, но я должен был ее покинуть. Почему? Не знаю… Я очень страдал. Была ли виновата девушка? Не думаю, или, скорее, я в этом не уверен, поскольку предшествующее сравнение неполное».
Вот такой вот половой декаданс, но образ неудачника, так нагло и сурово обращающегося с женщинами, привлекает не только биографов. Дело в том, что в кумире всегда хочется видеть идеал. Но Кафка идеалом не был, как и нормальным человеком. Но женщины в его жизни дают надежду на то, что он все-таки был мужиком.
Жизненные, пугающе абсурдные произведения
И самая главная причина — это, конечно же, произведения, написанные, как любят говорить критики, кровью. Франц Кафка дал возможность людям понять, что страдание субъективно. Человек превращается в таракана, но все вокруг воспринимают это слишком по-бытовому.
Другой персонаж пытается узнать, в чем же его обвиняют. Но сделать это невозможно из-за ужасающей бюрократии. Так и ведет свою обычную жизнь Йозеф К.: в ожидании суда, пытаясь найти справедливость.
Или абсурдный роман про чужака, который пытается попасть в проклятый замок. Вся жизнь в близлежащей деревне крутится вокруг Замка, его поручений и нелепых официальных писем-уведомлений. Существование людей не имеет смысла. Главному герою советуют сблизиться с любовницей важного чиновника, чтобы получить возможность поговорить с ним. Полный абсурд, но так сильно напоминает жизнь.
Или роман «В исправительной колонии». Тот самый, про жестокую казнь, в которой специальный аппарат выцарапывает на теле человека заповедь, которую он нарушил. С каждым разом всё глубже, пока провинившийся не умрёт.
В колонии появляется новый начальник, которому такая жестокая казнь не по душе. В итоге из великой любви к аппарату палач убивает сам себя.
Казалось бы, что за бред? Что за идиотизм? Но абсурд, в общем, а если присмотреться, то начинаешь разглядывать вполне банальные элементы из жизни.
Кафкианская модель мира неоднозначна, как неоднозначен и сам абсурд. Для кого-то это злая ирония, а для кого-то настоящая боль. Франц Кафка не загоняет в рамки, поэтому каждый при прочтении видит свое. Кто-то видит свои собственные страдания, кто-то видит несовершенство мира, а кто-то слишком любит абсурд.
Кафка свой, Кафка для всех
Феномен Кафки — в его универсальности. Он вроде как для всех, но сам не относил себя ни к кому. Его трактует кто хочет и как хочет. Его причисляют к анархистам и даже борцам за независимость Чехии, а в своем дневнике он написал: «2 августа. Германия объявила войну России». Называли иудеем, а сам он на одном хасидском собрании сравнивал их с африканским племенем. Но при этом некоторый период времени, прежде чем разочароваться в иудаизме, тщательно интересовался историей и мифами иудеев. Атеисты считают его своим, хотя в бога он верил. Модернисты сделают его своим символом, Камю сделает его аргументом своей философии абсурда, экзистенциалисты провозгласят Богом.
А самому Кафке на всё это было плевать. Прикованный личной болью к трагедии жизни, Кафка острее других ощущал абсурдную компоненту бытия. Страдание сделало его визионером, и он просто-напросто стал пророком пессимизма. Но людям свойственно копать глубже, чем оно есть, выискивать всякую дрянь и трактовать по-своему.
Он сам — жертва бытия, не эпохи, не строя, не семьи, не болезни, а именно нескончаемо-мучительного бытия. Бытия, в котором так трудно — быть. Отношение Франца Кафки к миру — это отношение ребенка, столкнувшегося с мировым несчастьем — надежда на чудо. Феномен Кафки — инфантильная беспомощность перед выбором, чего бы этот выбор ни касался — службы или писательства, действия или мечты, одиночества или брака, преданности семье или бунта против нее. Страхи и душевные страдания — результат бесконечного напряжения, вызванного столкновением между внутренней и внешней реальностью, возвышенной любовью и сексом, преданностью семье и ее неприятием, притязаниями инстинкта и стремлением к духовной жизни.
В итоге
Святой покровитель Праги стараниями туристических агентств. Символ абсурдизма стараниями Камю, философ и теоретик стараниями критиков и литературных исследователей; и бог неудачников стараниями самих нытиков и неудачников. Кафка оказался писателем для всех: для тех, кто читал его книги, и особенно для тех, кто изучал его биографию. От него оторвали по куску и растащили каждый себе, не оставив ничего ему самому. Казалось бы, он родился зря, так и не реализовав свой потенциал, но время показало, что его абсурдизм с вплетенными жестокими реалиями жизни как раз очень нужен очумевшему и сходящему с ума XX веку. В этом веке читателю стали важны не только произведения, но и судьба автора. А увидев судьбу этого несчастного человека, мы нашли себе оправдание и начали искать отсутствующий у нас гений. И слава Богу, что Брод ничего не уничтожил, иначе бы нытики не поняли, что такое экзистенциальная яма, а любители хорошего чтива не узнали про потрясающе-печальную сатиру на этот мир.