<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Как продумать грамотную архитектуре]]></title><description><![CDATA[<p dir="auto">В общем, коротко насколько можно суть "проекта":</p>
<p dir="auto">Сбор событий и коэффициентов с pinnacle(а именно с одного "вида/игры" в киберспорте). И дальнейшего отслеживания изменения коэффициентов для каждого матча с заданными интервалами(то есть наступило время проверки, скрапер идет собирает информацию) до выхода в лайв(после отслеживание не ведется). Матчей не так много, линии собираются тоже не все, только основные.</p>
<p dir="auto">Реализовано с асинхронным подходом, но есть нюанс, работа с postgresql без специальных драйверов, поддерживающих asyncio(Все методы в DatabaseOperations помечены как async, но внутри используют синхронные операции с БД?)</p>
<p dir="auto">Самый малый интервал проверки 1 минута. И то за 10 или 15 минут до матча.</p>
<p dir="auto">Помучал иишку, и я так понял, что асинхронно работать с БД нужно, когда планируется высокая частота проверок и запросов с записями(например, в лайве).<br />
Вопросы такие:</p>
<ol>
<li>Стоит ли игра свеч, чтоб переписывать код под асинхронное взаимодействие с БД?</li>
<li>Как повлияет на масштабируемость в будущем оставление в текущем виде?<br />
К примеру,  я хочу прикрутить статистику, которую будет собирать отдельный ботик, а также добавить отслеживание коэффициентов с пары других контор, под каждую свой ботик. (Тут кстати тоже возникает интересный вопрос, как это все грамотно совместить)</li>
</ol>
<p dir="auto">Хочется изначально все продумать наперед, выявить узкие места и потенциальные проблемы. Но опыта скажем так, его нет. Куда копать, на что обратить внимание?<br />
Одна аишка советует:</p>
<pre><code>Для добавления статистики и других букмекеров я бы предложил микросервисную архитектуру:

Каждый бот - отдельный процесс
Общая база данных
Общий конфиг
Возможно, очередь сообщений (RabbitMQ) для коммуникации
</code></pre>
<p dir="auto">Другая:</p>
<pre><code>Каждый бот собирает данные независимо и пишет их в БД (лучше через очередь, например, Redis, Kafka или даже простую таблицу в PostgreSQL).
Главный процесс читает и агрегирует данные по запросу или с определённой периодичностью.
Можно использовать отдельную таблицу для кэширования актуальных данных, чтобы не нагружать базу частыми запросами.
Redis или PostgreSQL в качестве брокера сообщений будет нормальным решением.
</code></pre>
]]></description><link>https://wewin.ru/topic/1345/как-продумать-грамотную-архитектуре</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 08:59:16 GMT</lastBuildDate><atom:link href="https://wewin.ru/topic/1345.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Feb 2025 11:57:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Как продумать грамотную архитектуре on Sun, 02 Feb 2025 09:00:33 GMT]]></title><description><![CDATA[<p dir="auto">В связи с тем, что вам пока не хватает практики и опыта для выбора правильной архитектуры изначально, вам лучше вообще об этом не заморачиваться.<br />
Двигайтесь эволюционно, пишите код как умеете, сталкивайтесь с фактическими проблемами - производительность, нехватка ресурсов, нехватка паралелизма, и в этот момент думайте о способах решения, и об архитектуре. Именно тогда, видя конкретную проблему, переписывайте код, оптимизируйте, новичкам важно и нужно переписывать код, чтобы развиваться. Попытка выбрать архитектуру, которую вы не умеете, затянет задачу и оттянет получение удовольствия от результата, что вам навряд ли добавит мотивации. Пилите свой монолит, если дойдете до узких мест, думайте о декомпозиции.</p>
<p dir="auto">Если говорить о сферической задаче получения данных от разных источников, и аналитике, то хорошо в этом работает микросервисная архитектура, общая шина обмена данных вроде ampq и pub/sub модель обмена данными.</p>
]]></description><link>https://wewin.ru/post/44992</link><guid isPermaLink="true">https://wewin.ru/post/44992</guid><dc:creator><![CDATA[kvakirsanov]]></dc:creator><pubDate>Sun, 02 Feb 2025 09:00:33 GMT</pubDate></item></channel></rss>