<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 13.01.2021 16:55, Maksym Tulyuk
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:f8a1c78e-bd3f-4279-b927-719234ab1b85@Spark">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <title></title>
      <div name="messageBodySection">
        <div dir="auto">Привет!<br>
          <br>
          Если нужно что-то делать для 1) “для снижения нагрузки на
          REST” и если 2) "приложение долго тянет базу из REST API”, то
          это говорит о неправильной архитектуре системы и/или REST API.
          Но, менять архитектуру дорого и может не получится. Поэтому, в
          данной ситуации, я бы или 1) оптимизировал REST API для
          приложения, или 2) написал свой “прокси" REST API и добавлял
          туда механизмы кеширования.<br>
        </div>
      </div>
    </blockquote>
    <p>так по сути "проксёй" и является in-memory db. Очень быстрой
      проксёй.</p>
    <p><br>
    </p>
    <blockquote type="cite"
      cite="mid:f8a1c78e-bd3f-4279-b927-719234ab1b85@Spark">
      <div name="messageBodySection">
      </div>
      <div name="messageSignatureSection"><br>
        <div class="matchFont"><span style="color: var(--textColor);
            background-color: var(--backgroundColor);">Максим</span></div>
      </div>
      <div name="messageReplySection">On 12 Jan 2021, 17:55 +0100,
        Volodymyr Litovka <a class="moz-txt-link-rfc2396E" href="mailto:doka@xlit.one"><doka@xlit.one></a>, wrote:<br>
        <blockquote type="cite" style="border-left-color: grey;
          border-left-width: thin; border-left-style: solid; margin: 5px
          5px;padding-left: 10px;">
          <p>Привет,</p>
          <p>а как правильно подойти к следующей задаче?</p>
          <p>Есть приложение (e.g. MyApp), которое обрабатывает данные
            из нескольких источников:</p>
          <pre>            +-----------+
            |  REST API |
            +--+-----+--+
               |     |
    PUSH (TCP) |     | GET (HTTP)
               |     |
               v     v
           +---+-----+---+
   UDP     |             |   Output
 --------->+   MyApp     +----------->
           |             |
           +-------------+

</pre>
          <p>Поток UDP довольно мощный и является источником RAW data.
            Для обработки этих данных нужна дополнительная информация,
            хранящяяся в SQL - она доступа по REST API, а обновления -
            по TCP PUSH NFYs<br>
          </p>
          <p>Для снижения нагрузки на REST и увеличения собственного
            быстродействия, при старте MyApp наполняет in-ram cache,
            запрашивая стартовые данные из REST API и больше никогда к
            нему не обращаясь, а обновления приходят по TCP (PUSH NFYs)</p>
          <p>Таким образом, в процессе работы приложения всегда есть два
            параллельных процесса, один из которых довольно ёмкий либо
            по времени, либо по ресурсам -<br>
          </p>
          <p>1) старт - приложение долго тянет базу из REST API,
            реагируя при этом на периодические TCP PUSH NFYs (тут можно
            разбить вытягивание большого объема данных на более мелкие
            чанки)<br>
            2) основной цикл работы - приложение слушает очень
            интенсивный поток UDP (я бы сказал, что делает это без пауз
            на передохнуть), реагируя при этом на периодические TCP PUSH
            NFYs</p>
          <p>Пока что это пишется на Питоне, что вносит определенные
            ограничения в набор механизмов. Три варианта, какие я вижу:</p>
          <ul>
            <li>multiprocess - три отдельных приложения</li>
            <ul>
              <li>тут более-менее понятно - система сама будет
                распределять CPU resources между приложениями по
                требованию + внешняя синхронизация</li>
              <li>но выглядит оно эскадрой пушечных парусников из книжки
                по истории ;-)<br>
              </li>
            </ul>
            <li>multithreading - три треда в одном приложении, это уже
              более "модно и молодежно" (хотя задача синхронизации
              событий остается), но:</li>
            <ul>
              <li>гарантируется ли своевременная передача исполнения
                треду с TCP listener upon packet arrival в услових
                интенсивной работы треда, обслуживающего UDP?</li>
              <li>я читал/слышал, что у Питона сложная история отношений
                с multi-threading, не наступить бы еще тут на грабли<br>
              </li>
            </ul>
            <li>python asyncio</li>
            <ul>
              <li>это удобно - одно приложение, никакой синхронизации
                событий между автономными процессами</li>
              <li>но вообще это эффективно для такой задачи?<br>
              </li>
            </ul>
          </ul>
          Что выбрать? Какие еще варианты подхода к снаряду могут быть?
          Как вообще правильно это делать?<br>
          <p>Спасибо!<br>
          </p>
          <pre class="moz-signature" cols="72">--  
Volodymyr Litovka
  "Vision without Execution is Hallucination." -- Thomas Edison</pre>
          _______________________________________________<br>
          uanog mailing list<br>
          <a class="moz-txt-link-abbreviated" href="mailto:uanog@uanog.kiev.ua">uanog@uanog.kiev.ua</a><br>
          <a class="moz-txt-link-freetext" href="https://mailman.uanog.kiev.ua/mailman/listinfo/uanog">https://mailman.uanog.kiev.ua/mailman/listinfo/uanog</a><br>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
uanog mailing list
<a class="moz-txt-link-abbreviated" href="mailto:uanog@uanog.kiev.ua">uanog@uanog.kiev.ua</a>
<a class="moz-txt-link-freetext" href="https://mailman.uanog.kiev.ua/mailman/listinfo/uanog">https://mailman.uanog.kiev.ua/mailman/listinfo/uanog</a></pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Volodymyr Litovka
  "Vision without Execution is Hallucination." -- Thomas Edison</pre>
  </body>
</html>