<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Комментарии / Профиль return_nullptr]]></title>
    <link>https://habr.com/ru/users/return_nullptr/comments/</link>
    <description><![CDATA[Хабр: комментарии пользователя return_nullptr]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 12:14:21 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      

      
        
  
    <item>
      <title>28.03.2026 20:17:04 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1015988/#comment_29738624</guid>
      <link>https://habr.com/ru/articles/1015988/#comment_29738624</link>
      <description><![CDATA[<p>Архitектура</p>]]></description>
      <pubDate>Sat, 28 Mar 2026 20:17:04 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>12.03.2026 17:11:36 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1008132/#comment_29656334</guid>
      <link>https://habr.com/ru/articles/1008132/#comment_29656334</link>
      <description><![CDATA[<p>Замечаю, что если спрашивать LLM о том, что и так понимаешь, то вывод содержит огромное количество очевидных глупостей. Если спрашивать о том, чего не понимаешь, то <em>кажется</em>, что вывод логичный и ему можно верить. Но кто же будет спрашивать о том, что и так понимает?</p>]]></description>
      <pubDate>Thu, 12 Mar 2026 17:11:36 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>26.02.2026 13:26:33 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1003300/#comment_29589704</guid>
      <link>https://habr.com/ru/articles/1003300/#comment_29589704</link>
      <description><![CDATA[<p>В одном из пет-проектов я экспериментирую с изоляцией предметной модели от инфраструктуры и пытаюсь разделить их таким образом, чтобы предметная модель была максимально простой, а инфраструктуру было достаточно написать один раз и запускать на ней разные предметные модели, обеспечивая валидацию, наблюдаемость (последняя гифка), идемпотентность, восстановление после сбоев и генерацию HTTP интерфейса.</p><p>Я пытаюсь уменьшить сложность написания кода для LLM, отобрав у нее всю инфраструктурную сложность и оставив только моделирование объектами, методами и пользовательскими сценариями (юнит-тестами предметной модели). Да, менее производительно, да, с тонной ограничений, но, предположительно, проще для LLM как в количестве токенов, так и в количестве деталей, которые нужно учитывать.</p><p>Ограничения, которые я нащупал, не дают мне возможности использовать её кроме как в экспериментах. Идея и аналогия с LLM показались мне интересными, поэтому я решил поделиться этим на Хабре. Может, кто-нибудь найдет в ней вдохновение, все-таки статья в разделе "Ненормальное программирование".</p>]]></description>
      <pubDate>Thu, 26 Feb 2026 13:26:33 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>04.10.2024 05:48:40 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/840402/#comment_27375324</guid>
      <link>https://habr.com/ru/companies/otus/articles/840402/#comment_27375324</link>
      <description><![CDATA[<p>Kafka гарантирует порядок доставки в рамках одного партишна топика (topic partition). Сообщения из разных партишнов могут быть получены разными консюмерами и обработаны в любом порядке.</p>]]></description>
      <pubDate>Fri, 04 Oct 2024 05:48:40 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>12.06.2024 13:22:55 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/819803/#comment_26926799</guid>
      <link>https://habr.com/ru/companies/kuper/articles/819803/#comment_26926799</link>
      <description><![CDATA[<p>Скажите пожалуйста, рассматривали ли вы вариант, когда Kafka не фиксирует смещение (commit offset) сразу при получении сообщения из топика, а делает это после обработки? </p><p>Ведь тогда можно объединить консюмера и Inbox-демона. К тому же, Kafka самостоятельно разделяет работу между консюмерами. Этот момент теряется, если складывать все в инбокс-таблицу, а потом запускать воркеров. Что думаете?</p><p>Буду благодарен, если ознакомитесь с моей публикацией:</p><p><a href="https://habr.com/p/820867/" rel="noopener noreferrer nofollow">https://habr.com/p/820867/</a></p><p>Это решение ещё не было в продакшне. Там разделения нет, а меня терзает мысль, что я упускаю что-то важное. Будет здорово, если разбирающийся человек укажет мне на неочевидные недочёты.</p><p></p>]]></description>
      <pubDate>Wed, 12 Jun 2024 13:22:55 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2024 16:49:52 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/820867/#comment_26924373</guid>
      <link>https://habr.com/ru/articles/820867/#comment_26924373</link>
      <description><![CDATA[<p>Спасибо, что поделились!Рассмотренный в статье подход позволяет свести задачу однократного выполнения неидемпотентной операции к задаче неоднократного выполнения идемпотентной операции. Возня с событиями, как мне кажется, это больше вопрос подхода. Как ни крути, нужно сделать вторую операцию. Будет ли это для этого поставлена некоторая задача (job/task) или отправлено событие (event), инициирующее действие, в целом, не так важно.</p><p>Получается, клиент, который создаёт задачу, записывает ее в общую базу данных. Обработчики тоже смотрят на эту базу данных и выполняют из нее задачи. При этом есть механизм разделения работы, чтобы они не делали одно и то же. Ваше решение предоставляет базу данных + этот механизм. </p><p>У меня другой стек. MongoDB не занимается оркестрацией задач. Собственно, для этого здесь Kafka, протокол ребалансировки которой мне не нужно изобретать.</p><p>Писать свою оркестрацию это всё-таки большая работа, мое Вам уважение.</p><p>Однако, вернёмся к вопросу терминологии. Думаю, ваши доводы меня не убедили. Я всё-таки не согласен с утверждением, что это семантика "ровно один раз" (exactly once). Падения обработчиков могут оставить какой-то сайд-эффект во внешней системе до изменения статуса задачи. Например, отправка письма клиенту. В таких условиях, все равно необходимо делать запрос к внешней системе с ключом идемпотентности, если не хочется случайно отправить письмо дважды. Думаю, семантика обработки здесь тоже "хотя бы один раз" (at least once).</p>]]></description>
      <pubDate>Tue, 11 Jun 2024 16:49:52 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2024 13:50:58 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/819803/#comment_26923683</guid>
      <link>https://habr.com/ru/companies/kuper/articles/819803/#comment_26923683</link>
      <description><![CDATA[<p>Большое спасибо Вам за статью! Вы, кстати, вдохновили меня опубликоваться на Хабре со своей реализацией, правда, на Python. Если честно, я бы хотел сопоставить решения. Вероятно, из обсуждения каждый из нас может вынести что-то полезное для своего стека.</p><p>В Вашей архитектуре есть разделение:</p><blockquote><p>Важно отметить, что в нашей архитектуре получение (потребление) сообщений концептуально отделено от их фактической обработки.</p></blockquote><p>Можете объяснить, почему их пришлось разделять?</p>]]></description>
      <pubDate>Tue, 11 Jun 2024 13:50:58 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2024 12:48:47 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/820867/#comment_26923381</guid>
      <link>https://habr.com/ru/articles/820867/#comment_26923381</link>
      <description><![CDATA[<p>Вы меня немного запутали. Я пишу про механизм доставки и обработки событий.</p><blockquote><p>В идеальном мире, от механизма доставки и обработки событий требуется:</p><p></p><p>Гарантия публикации события ровно один раз (exactly once).</p><p></p><p>Гарантия доставки события ровно один раз (exactly once).</p><p></p><p>Гарантия обработки события ровно один раз (exactly once).</p><p></p><p>Мне не известен способ реализации этих гарантий в настоящем мире.</p></blockquote><p>Но при этом, вы пишете, что:</p><blockquote><p>В том-то и дело, что тут нет никаких событий.</p></blockquote><p>В связи с этим у меня вопрос: как мы можем говорить о гарантиях механизма доставки и обработки событий, если нет никаких событий?</p><p>Если вас не затруднит, можете описать вот этот процесс обработки запроса в предложенном подходе?</p><blockquote><p>Обозначим порядок обработки:</p><p></p><p>Первый сервис получает запрос (request) от клиента.</p><p></p><p>Первый сервис выполняет первое действие и публикует событие, инициирующее выполнение второго действия на втором сервисе.</p><p></p><p>Первый сервис отправляет ответ (response) клиенту.</p><p></p><p>Второй сервис получает событие и выполняет второе действие.</p></blockquote><p></p>]]></description>
      <pubDate>Tue, 11 Jun 2024 12:48:47 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2024 12:33:27 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/820867/#comment_26923327</guid>
      <link>https://habr.com/ru/articles/820867/#comment_26923327</link>
      <description><![CDATA[<p>Можете поделиться своим опытом? К сожалению, почти ничего не знаю про ActiveMQ. Почему вы выбрали именно его? Есть ли какие-то механизмы восстановления после сбоев в кластере? Буду признателен, если опишете ваш подход в небольшом комментарии или дадите ссылки на статьи.</p>]]></description>
      <pubDate>Tue, 11 Jun 2024 12:33:27 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2024 12:12:20 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/820867/#comment_26923217</guid>
      <link>https://habr.com/ru/articles/820867/#comment_26923217</link>
      <description><![CDATA[<p>Мне тоже интересен случай, когда обработчик сделал работу, зафиксировал изменения в базе данных, а затем упал. Если другому обработчику придет то же самое событие, то семантика доставки все же "хотя бы раз" (at least once).</p><p>Такая система мне нужна в том числе и для сценария, в котором базы данных разных сервисов изолированны. В том смысле, что я не могу положить событие в базу данных одного сервиса, а затем в другом сервисе прочитать его из той же базы для обработки.</p><p>Скажите пожалуйста, используется ли в приведенном Вами решении какая-то система доставки сообщений? Или передача событий происходит через базу данных?</p>]]></description>
      <pubDate>Tue, 11 Jun 2024 12:12:20 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2024 09:00:51 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/820867/#comment_26922181</guid>
      <link>https://habr.com/ru/articles/820867/#comment_26922181</link>
      <description><![CDATA[<p>У меня есть <a href="https://github.com/returnnullptr/event-outbox-example/tree/main" rel="noopener noreferrer nofollow">репозиторий</a> с игрушечным демо. Вот, например, модель данных события <a href="https://github.com/returnnullptr/event-outbox-example/blob/b0993c93e79d8a546e46d33adfc62681dfcbca16/example/infrastructure/message_queue.py#L15" rel="noopener noreferrer nofollow">OrderCreated</a>:</p><pre><code class="python">class OrderCreated(Event):
    topic: Literal["booking"] = "booking"
    content_schema: Literal["OrderCreated"] = "OrderCreated"
    order_id: str
    client_id: str</code></pre><p>Когда слушатель (consumer) получает событие, он не сразу подтверждает (commit offset) обработку в Kafka. Событие кладется в коллекцию MongoDB вот в таком виде:</p><pre><code class="json">{
  "_id": {
    "topic": "booking",
    "content_schema": "OrderCreated",
    "idempotency_key": "acff8c3352d547d68f1c25a172c031d7"
  },
  "handled": false
}</code></pre><p>Т.е. просто составной ключ и флаг, что событие еще не обрабатывалось.</p><p>Далее идет обработка. Функцию обработчика можете посмотреть в <a href="https://github.com/returnnullptr/event-outbox-example/blob/b0993c93e79d8a546e46d33adfc62681dfcbca16/example/infrastructure/message_queue.py#L81" rel="noopener noreferrer nofollow">исходном коде демо</a>. </p><p>Когда транзакция зафиксировалась (commit), то обработка события подтверждается (commit offset) в Kafka. Можете посмотреть это в <a href="https://github.com/returnnullptr/event-outbox/blob/cee2b7cbb9bd6c0f0b7fab0ad7d41431f56b1544/event_outbox/outbox.py#L419" rel="noopener noreferrer nofollow">исходном коде event-outbox</a>.</p>]]></description>
      <pubDate>Tue, 11 Jun 2024 09:00:51 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>27.11.2023 14:02:23 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/776646/#comment_26203668</guid>
      <link>https://habr.com/ru/articles/776646/#comment_26203668</link>
      <description><![CDATA[<p>Мне вот интересно, а почему считается, что параметры вселенной константы? Насколько понимаю, все измерения статистические. Грубо говоря, измерили кучу однотипных частиц, усреднили, вот и результат. Почему масса элементарной частицы не может быть каким-нибудь распределением с отклонениями?</p><p>Может, всё-таки, "тонкая настройка вселенной" это не факт, а процесс, который происходит постоянно? Со временем нестабильное разрушается. Помножить такой отсев на миллиарды лет, и вот и масса частицы - самый стабильный вариант.</p>]]></description>
      <pubDate>Mon, 27 Nov 2023 14:02:23 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

      

      

    
  </channel>
</rss>
