<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE article PUBLIC "-//NLM/DTD JATS (Z39.96) Journal Publishing DTD v1.2 20120330//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd">
    <!--<?xml-stylesheet type="text/xsl" href="article.xsl">-->
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.2" xml:lang="en">
	<front>
		<journal-meta>
			<journal-id journal-id-type="issn">2303-9868</journal-id>
			<journal-id journal-id-type="eissn">2227-6017</journal-id>
			<journal-title-group>
				<journal-title>Международный научно-исследовательский журнал</journal-title>
			</journal-title-group>
			<issn pub-type="epub">2303-9868</issn>
			<publisher>
				<publisher-name>ООО Цифра</publisher-name>
			</publisher>
		</journal-meta>
		<article-meta>
			<article-id pub-id-type="doi">10.60797/IRJ.2025.162.91</article-id>
			<article-categories>
				<subj-group>
					<subject>Brief communication</subject>
				</subj-group>
			</article-categories>
			<title-group>
				<article-title>Динамическая адаптация стратегий повторных попыток в Celery на основе анализа временных меток и стохастических моделей в высоконагруженных микросервисах</article-title>
			</title-group>
			<contrib-group>
				<contrib contrib-type="author" corresp="yes">
					<contrib-id contrib-id-type="orcid">https://orcid.org/0009-0005-1563-6794</contrib-id>
					<contrib-id contrib-id-type="rinc">https://elibrary.ru/author_profile.asp?id=1249642</contrib-id>
					<name>
						<surname>Андреев</surname>
						<given-names>Роман Андреевич</given-names>
					</name>
					<email>grand-roman@yandex.ru</email>
					<xref ref-type="aff" rid="aff-1">1</xref>
				</contrib>
			</contrib-group>
			<aff id="aff-1">
				<label>1</label>
				<institution>Хакасский государственный университет имени Н.Ф. Катанова</institution>
			</aff>
			<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2025-12-17">
				<day>17</day>
				<month>12</month>
				<year>2025</year>
			</pub-date>
			<pub-date pub-type="collection">
				<year>2025</year>
			</pub-date>
			<volume>5</volume>
			<issue>162</issue>
			<fpage>1</fpage>
			<lpage>5</lpage>
			<history>
				<date date-type="received" iso-8601-date="2025-11-12">
					<day>12</day>
					<month>11</month>
					<year>2025</year>
				</date>
				<date date-type="accepted" iso-8601-date="2025-12-09">
					<day>09</day>
					<month>12</month>
					<year>2025</year>
				</date>
			</history>
			<permissions>
				<copyright-statement>Copyright: &amp;#x00A9; 2022 The Author(s)</copyright-statement>
				<copyright-year>2022</copyright-year>
				<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
					<license-p>
						This is an open-access article distributed under the terms of the Creative Commons Attribution 4.0 International License (CC-BY 4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited. See 
						<uri xlink:href="http://creativecommons.org/licenses/by/4.0/">http://creativecommons.org/licenses/by/4.0/</uri>
					</license-p>
					.
				</license>
			</permissions>
			<self-uri xlink:href="https://research-journal.org/archive/12-162-2025-december/10.60797/IRJ.2025.162.91"/>
			<abstract>
				<p>В данной статье рассматривается проблема повышения эффективности повторных попыток при обработке задач в распределённых информационных системах с использованием системы управления задачами Celery. Решение задач надежной и быстрой обработки запросов особенно актуально в условиях современных микросервисных и облачных архитектур, где на протяжении рабочего цикла происходят значительные колебания нагрузки, а также наблюдаются изменения в доступности и производительности отдельных компонентов инфраструктуры.Классические стратегии реализации retry-логики, как правило, строятся на статических или полу-статических схемах, где временные интервалы между попытками выполнения задачи заранее фиксируются либо рассчитываются по простой формуле, например, по экспоненциальному принципу. Такой подход не всегда оказывается оптимальным, поскольку не учитывает динамические изменения в профиле нагрузки и во внутреннем состоянии системы во время выполнения задач. В результате возможно либо чрезмерное увеличение времени ожидания, либо перегрузка отдельных компонентов из-за слишком частых попыток восстановления.В представленной работе предлагается программная архитектура, основанная на динамической адаптации стратегии повторов в Celery. Для выбора оптимальной задержки используется стохастический анализ временных рядов, включающий временные метки возникновения сбоев и успешных завершений задач. В математической модели учитываются не только частота ошибок, но и показатели текущей загрузки, а также история недавних неудачных и успешных попыток. Такой подход позволяет в режиме реального времени корректировать интервалы между retry и минимизировать как задержки, так и вероятность перегрузки компонентов.Проведённые вычислительные эксперименты на реальных потоках сервисных запросов выявили, что предлагаемая стратегия даёт снижение среднего времени выполнения задач на 12–18% по сравнению с традиционными схемами, что особенно важно при высокой изменчивости нагрузочного профиля. Полученные результаты могут быть применены для повышения надёжности, отказоустойчивости и производительности распределённых микросервисных платформ, а внедрение разработанных решений в промышленные облачные среды позволит значительно улучшить их эффективность и адаптивность к изменяющимся условиям эксплуатации.</p>
			</abstract>
			<kwd-group>
				<kwd>celery</kwd>
				<kwd> retry-стратегии</kwd>
				<kwd> микросервисы</kwd>
				<kwd> временные метки</kwd>
				<kwd> стохастическое моделирование</kwd>
				<kwd> отказоустойчивость</kwd>
				<kwd> динамическая адаптация</kwd>
				<kwd> балансировка нагрузки</kwd>
				<kwd> распределённые системы</kwd>
				<kwd> обработка ошибок</kwd>
				<kwd> асинхронные задачи</kwd>
				<kwd> управление очередями</kwd>
			</kwd-group>
		</article-meta>
	</front>
	<body>
		<sec>
			<title>HTML-content</title>
			<p>1. Введение</p>
			<p>В последние годы быстрый рост числа распределённых вычислительных систем и переход к микросервисной архитектуре сделали вопросы надёжности и отказоустойчивости ключевыми для обеспечения бесперебойного функционирования сервисов. Асинхронная обработка задач с использованием очередей сообщений и фреймворков вроде Celery стала стандартом для построения современных программных решений, ориентированных на отказоустойчивость и масштабируемость. Одной из существенных проблем при эксплуатации таких систем выступают различные по характеру сбои при выполнении задач: временная недоступность сервисов, перегрузки, сетевые задержки и прочие сбои, вызывающие необходимость повторного выполнения задачи ­— механизм retry.</p>
			<p>Несмотря на широкое распространение, традиционные подходы к реализации стратегии retry, такие как fixed-delay и exponential-backoff, имеют недостатки в динамически меняющейся среде. В частности, они могут приводить к неэффективному использованию вычислительных ресурсов, увеличению времени ожидания задачи и избыточной нагрузке на подверженные деградации сервисы. В связи с этим возникает задача построения гибких, адаптивных стратегий управления retry, оптимально учитывающих реальные параметры системы.</p>
			<p>В данной работе разрабатывается обобщённая стохастическая модель функционирования очередей задач с повторными попытками и предлагается архитектура динамической адаптации стратегии retry, реализуемая на уровне Celery-платформы. Основное внимание уделено интеграции методов анализа временных меток выполнения задач, вычислению вероятностей успешного завершения, а также формализации алгоритмов подстройки параметров между попытками выполнения в зависимости от текущей статистики системы.</p>
			<p>2. Обзор
существующих подходов к реализации Retry</p>
			<p>Стратегии повторного выполнения задач традиционно классифицируются на основе характера формирования временных интервалов между попытками, включая подходы с фиксированной или экспоненциально увеличивающейся задержкой, методы с применением случайной разбивки интервалов (jitter), а также более сложные адаптивные и предиктивные схемы, реагирующие на изменяющиеся условия обработки.</p>
			<p>Наиболее распространённой в промышленности является схема с экспоненциально увеличивающейся задержкой [1]:</p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mi>n</mml:mi>
					</mml:msub>
					<mml:mo>=</mml:mo>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mn>0</mml:mn>
					</mml:msub>
					<mml:mi>·</mml:mi>
					<mml:msup>
						<mml:mn>2</mml:mn>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:mi>n</mml:mi>
							<mml:mo>−</mml:mo>
							<mml:mn>1</mml:mn>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:msup>
				</mml:mrow>
			</mml:math>
			<p>где tn — задержка перед n-й попыткой, t0 — базовая задержка.</p>
			<p>Существенным недостатком этих схем при высокой нагрузке является искусственное увеличение задержек и риск «столкновения» большого числа повторных попыток в один момент времени. В литературе предложены схемы jitter, в которых к экспоненциальной задержке добавляется случайная компонента для разнесения повторных запросов во времени и предотвращения скоординированных «штормов»:</p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mi>n</mml:mi>
					</mml:msub>
					<mml:mo>=</mml:mo>
					<mml:mtext>uniform</mml:mtext>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:mn>0</mml:mn>
					<mml:mo>,</mml:mo>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mn>0</mml:mn>
					</mml:msub>
					<mml:mi>·</mml:mi>
					<mml:msup>
						<mml:mn>2</mml:mn>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:mi>n</mml:mi>
							<mml:mo>−</mml:mo>
							<mml:mn>1</mml:mn>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:msup>
					<mml:mo stretchy="false">)</mml:mo>
				</mml:mrow>
			</mml:math>
			<p>Стратегии jitter показали свою эффективность как промышленный стандарт для борьбы с эффектом одновременных повторов, однако такие схемы, как и классические экспоненциальные, фиксированы и не реагируют на изменения динамики отказов или перегрузок в реальном времени. Адаптивные схемы предполагают динамический анализ статистики распределения ответов и подстройку параметров retry «на лету» [2].</p>
			<p>3. Постановка
задачи и математическая модель</p>
			<p>Рассмотрим формальную модель обработки очереди задач в Celery, в которой каждая задача характеризуется вероятностью успешного выполнения </p>
			<p>Цель: построить динамически регулируемую функцию задержки между повторными попытками </p>
			<p>Пусть </p>
			<p>—</p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:msubsup>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:mi>n</mml:mi>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:msubsup>
					<mml:mo>=</mml:mo>
					<mml:mi>P</mml:mi>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:mtext>успех попытки n ∣ история</mml:mtext>
					<mml:mo stretchy="false">)</mml:mo>
					<mml:msubsup>
						<mml:mi>p</mml:mi>
						<mml:mi>f</mml:mi>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:mi>n</mml:mi>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:msubsup>
					<mml:mo>=</mml:mo>
					<mml:mn>1</mml:mn>
					<mml:mo>−</mml:mo>
					<mml:msubsup>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:mi>n</mml:mi>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:msubsup>
				</mml:mrow>
			</mml:math>
			<p>Динамическая стратегия адаптации реализуется через анализ временных рядов успешных и неуспешных завершений задач, на основе которых вычисляются актуальные оценки вероятности успешного завершения для следующего интервала. Полученные значения используются для коррекции параметра задержки таким образом, чтобы обеспечить максимизацию вероятности успеха при одновременном минимизировании времени ожидания.</p>
			<p>4. Алгоритм динамической
адаптации</p>
			<p>В выбранной реализации предлагается следующее правило подстройки задержки между попытками:</p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:mi>Δ</mml:mi>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mrow>
							<mml:mi>n</mml:mi>
							<mml:mo>+</mml:mo>
							<mml:mn>1</mml:mn>
						</mml:mrow>
					</mml:msub>
					<mml:mo>=</mml:mo>
					<mml:mi>α</mml:mi>
					<mml:mi>·</mml:mi>
					<mml:mi>Δ</mml:mi>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mi>n</mml:mi>
					</mml:msub>
					<mml:mo>+</mml:mo>
					<mml:mi>β</mml:mi>
					<mml:mi>·</mml:mi>
					<mml:mi>f</mml:mi>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:msubsup>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:mi>n</mml:mi>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:msubsup>
					<mml:mo>,</mml:mo>
					<mml:mi>λ</mml:mi>
					<mml:mo stretchy="false">)</mml:mo>
				</mml:mrow>
			</mml:math>
			<p>Здесь </p>
			<p>Эмпирический вид функции:</p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:mi>f</mml:mi>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:msub>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
					</mml:msub>
					<mml:mo>,</mml:mo>
					<mml:mi>λ</mml:mi>
					<mml:mo stretchy="false">)</mml:mo>
					<mml:mo>=</mml:mo>
					<mml:mfrac>
						<mml:mrow>
							<mml:mn>1</mml:mn>
							<mml:mo>−</mml:mo>
							<mml:msub>
								<mml:mi>p</mml:mi>
								<mml:mi>s</mml:mi>
							</mml:msub>
						</mml:mrow>
						<mml:mrow>
							<mml:mi>λ</mml:mi>
						</mml:mrow>
					</mml:mfrac>
				</mml:mrow>
			</mml:math>
			<p>был выбран, исходя из следующих соображений. Во-первых, если вероятность успеха мала, разумно увеличить задержку, чтобы избежать перегрузки ресурса и накопления «штормов» повторных задач. С другой стороны, чем выше текущая интенсивность поступления новых задач, тем короче должны быть задержки между повторными попытками, чтобы поддерживать общую пропускную способность системы и избегать простоя.</p>
			<p>Строгая математическая мотивация заключается в том, что </p>
			<p>1. </p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:msub>
						<mml:mi>f</mml:mi>
						<mml:mn>1</mml:mn>
					</mml:msub>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:msub>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
					</mml:msub>
					<mml:mo>,</mml:mo>
					<mml:mi>λ</mml:mi>
					<mml:mo stretchy="false">)</mml:mo>
					<mml:mo>=</mml:mo>
					<mml:mfrac>
						<mml:mrow>
							<mml:mi>C</mml:mi>
						</mml:mrow>
						<mml:mrow>
							<mml:mo stretchy="false">(</mml:mo>
							<mml:msub>
								<mml:mi>p</mml:mi>
								<mml:mi>s</mml:mi>
							</mml:msub>
							<mml:mi>·</mml:mi>
							<mml:mi>λ</mml:mi>
							<mml:mo>+</mml:mo>
							<mml:mi>ϵ</mml:mi>
							<mml:mo stretchy="false">)</mml:mo>
						</mml:mrow>
					</mml:mfrac>
				</mml:mrow>
			</mml:math>
			<p>2. </p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:msub>
						<mml:mi>f</mml:mi>
						<mml:mn>2</mml:mn>
					</mml:msub>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:msub>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
					</mml:msub>
					<mml:mo>,</mml:mo>
					<mml:mi>λ</mml:mi>
					<mml:mo stretchy="false">)</mml:mo>
					<mml:mo>=</mml:mo>
					<mml:mtext>softmax</mml:mtext>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:mi>a</mml:mi>
					<mml:mi>·</mml:mi>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:mn>1</mml:mn>
					<mml:mo>−</mml:mo>
					<mml:msub>
						<mml:mi>p</mml:mi>
						<mml:mi>s</mml:mi>
					</mml:msub>
					<mml:mo stretchy="false">)</mml:mo>
					<mml:mo>,</mml:mo>
					<mml:mi>b</mml:mi>
					<mml:mi>·</mml:mi>
					<mml:mi>λ</mml:mi>
					<mml:mo stretchy="false">)</mml:mo>
				</mml:mrow>
			</mml:math>
			<p>Однако они либо приводили к переусложнению вычислений, либо к меньшей устойчивости при экстремальных изменениях входных параметров. Эмпирические сравнения показали, что выбранная форма функции даёт наилучший компромисс между эффективностью и простотой реализации.</p>
			<p>Итоговая гибридная стратегия:</p>
			<mml:math display="inline">
				<mml:mrow>
					<mml:mi>Δ</mml:mi>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mrow>
							<mml:mi>n</mml:mi>
							<mml:mo>+</mml:mo>
							<mml:mn>1</mml:mn>
						</mml:mrow>
					</mml:msub>
					<mml:mo>=</mml:mo>
					<mml:mi>m</mml:mi>
					<mml:mi>a</mml:mi>
					<mml:mi>x</mml:mi>
					<mml:mo minsize="2.047em" maxsize="2.047em">(</mml:mo>
					<mml:mi>Δ</mml:mi>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mn>0</mml:mn>
					</mml:msub>
					<mml:mo>,</mml:mo>
					<mml:mi>γ</mml:mi>
					<mml:mi>·</mml:mi>
					<mml:mi>Δ</mml:mi>
					<mml:msub>
						<mml:mi>t</mml:mi>
						<mml:mi>n</mml:mi>
					</mml:msub>
					<mml:mo>+</mml:mo>
					<mml:mo stretchy="false">(</mml:mo>
					<mml:mn>1</mml:mn>
					<mml:mo>−</mml:mo>
					<mml:mi>γ</mml:mi>
					<mml:mo stretchy="false">)</mml:mo>
					<mml:mi>·</mml:mi>
					<mml:mfrac>
						<mml:mrow>
							<mml:mn>1</mml:mn>
							<mml:mo>−</mml:mo>
							<mml:msubsup>
								<mml:mi>p</mml:mi>
								<mml:mi>s</mml:mi>
								<mml:mrow>
									<mml:mo stretchy="false">(</mml:mo>
									<mml:mi>n</mml:mi>
									<mml:mo stretchy="false">)</mml:mo>
								</mml:mrow>
							</mml:msubsup>
						</mml:mrow>
						<mml:mrow>
							<mml:mi>λ</mml:mi>
						</mml:mrow>
					</mml:mfrac>
					<mml:mo minsize="2.047em" maxsize="2.047em">)</mml:mo>
				</mml:mrow>
			</mml:math>
			<p>где </p>
			<p>5. Реализация
в Celery и собрание статистики</p>
			<p>Для экспериментальной проверки алгоритма была разработана надстройка над Celery, позволяющая в реальном времени получать и анализировать временные метки поступления и завершения задач, а также вычислять скользящие оценки вероятностей успеха и отказа.</p>
			<p>Архитектура включает следующие модули:</p>
			<p>1) мониторинг статуса задач;</p>
			<p>2) подсистема вычисления приоритетов и оценки вероятностей успеха;</p>
			<p>3) блок динамической коррекции задержек между попытками;</p>
			<p>4) интеграция с брокером сообщений для контроля интенсивности потока задач [6].</p>
			<p>Система позволяет реализовать оба режима: статический и динамический, а также собирать детальные логи и статистику для последующего анализа результатов.</p>
			<p>6. Вычислительные
эксперименты и анализ результатов</p>
			<p>Моделирование проводилось на основе генерации случайных последовательностей задач с заданными интенсивностями поступления и вероятностями отказов, а также на реальных данных сервисов проверки валидности JSON в распределённом микросервисном окружении (общее количество задач </p>
			<p>—</p>
			<p>Показатели эффективности сравнивались по двум метрикам: математическое ожидание времени выполнения задачи (</p>
			<p>Результаты показали, что динамическая стратегия позволила снизить среднее время ожидания результата на 12–18% по сравнению с экспоненциальным подходом. При этом количество попыток оставалось сопоставимо, а «хвостовое» распределение задержек значительно сузилось. Скачки нагрузки моделировались путём увеличения интенсивности поступления задач на 30–50% в течение 5–10 минут, после чего интенсивность восстанавливалась до исходного уровня. В условиях резких скачков нагрузки и периодических деградаций показано, что динамическая схема быстрее адаптируется и предотвращает «шторм» повторных запросов во время восстановления сервисов.</p>
			<p>Полученные результаты демонстрируют эффективность алгоритмов динамической адаптации стратегий retry для практической эксплуатации в Celery и других схожих системах организации очередей задач. Использование анализа временных меток и вероятностных оценок актуальных характеристик среды позволяет существенно повысить производительность без увеличения нагрузки на отказоустойчивые ресурсы.</p>
			<p>Дальнейшее развитие работы может осуществляться за счёт интеграции более сложных предиктивных моделей, использующих методы машинного обучения для прогнозирования временных окон деградации, а также за счёт оптимизации алгоритмов обработки задач с различными приоритетами. Кроме того, перспективой является унификация адаптивных стратегий для разных типов задач и различных схем балансировки нагрузки.</p>
			<p>7. Заключение</p>
			<p>В статье рассмотрены современные подходы к реализации механизмов повторного выполнения задач retry в Celery с акцентом на динамическое управление задержками между попытками. Показано, что традиционные схемы не всегда эффективны при высокодинамичной нагрузке и могут приводить к росту времени отклика или возникновению повторных «штормов» запросов при деградации сервисов. Для решения этих проблем предложена стохастическая модель функционирования сервиса, учитывающая вероятности успеха и неудач на основе анализа истории выполнения задач и состояния очереди.</p>
			<p>Разработанная архитектура позволяет реализовать адаптивную стратегию retry с коррекцией параметров задержки между попытками на основе анализа временных меток, вероятностей успеха и интенсивности потока задач. Модель интегрируется в существующую инфраструктуру Celery, что упрощает её внедрение в реальные производственные решения.</p>
			<p>Экспериментальные испытания подтвердили, что применение динамических стратегий позволяет снизить среднее время ожидания выполнения задачи на 12–18% по сравнению с классическими схемами, а также сократить долю задач с превышением допустимого времени обработки. Система демонстрирует устойчивость при пиковых нагрузках и быстро адаптируется к резким изменениям в работе сервисов.</p>
			<p>Полученные результаты свидетельствуют о перспективности дальнейшего развития работы в направлении использования предиктивных моделей машинного обучения для прогноза временных окон деградаций и оптимизации обработки задач с разными приоритетами. Унификация адаптивных алгоритмов для различных типов задач и схем балансировки нагрузки позволит повысить надёжность и эффективность распределённых систем в целом.</p>
		</sec>
		<sec sec-type="supplementary-material">
			<title>Additional File</title>
			<p>The additional file for this article can be found as follows:</p>
			<supplementary-material xmlns:xlink="http://www.w3.org/1999/xlink" id="S1" xlink:href="https://doi.org/10.5334/cpsy.78.s1">
				<!--[<inline-supplementary-material xlink:title="local_file" xlink:href="https://research-journal.org/media/articles/22303.docx">22303.docx</inline-supplementary-material>]-->
				<!--[<inline-supplementary-material xlink:title="local_file" xlink:href="https://research-journal.org/media/articles/22303.pdf">22303.pdf</inline-supplementary-material>]-->
				<label>Online Supplementary Material</label>
				<caption>
					<p>
						Further description of analytic pipeline and patient demographic information. DOI:
						<italic>
							<uri>https://doi.org/10.60797/IRJ.2025.162.91</uri>
						</italic>
					</p>
				</caption>
			</supplementary-material>
		</sec>
	</body>
	<back>
		<ack>
			<title>Acknowledgements</title>
			<p/>
		</ack>
		<sec>
			<title>Competing Interests</title>
			<p/>
		</sec>
		<ref-list>
			<ref id="B1">
				<label>1</label>
				<mixed-citation publication-type="confproc">Вулф Г. Микросервисы. Паттерны разработки и рефакторинга / Г. Вулф. — Москва: Эксмо, 2022. — 416 с.</mixed-citation>
			</ref>
			<ref id="B2">
				<label>2</label>
				<mixed-citation publication-type="confproc">Фаулер М. Проектирование корпоративных приложений. Архитектура, паттерны и решения / М. Фаулер. — Москва: Вильямс, 2020. — 576 с.</mixed-citation>
			</ref>
			<ref id="B3">
				<label>3</label>
				<mixed-citation publication-type="confproc">Эндерс К. Распределенные, масштабируемые и отказоустойчивые приложения / К. Эндерс. — Москва: ДМК Пресс, 2019. — 448 с.</mixed-citation>
			</ref>
			<ref id="B4">
				<label>4</label>
				<mixed-citation publication-type="confproc">Burns B. Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services / B. Burns. — O'Reilly Media, 2018.</mixed-citation>
			</ref>
			<ref id="B5">
				<label>5</label>
				<mixed-citation publication-type="confproc">Dudzic S. Retry Patterns in Distributed Messaging / S. Dudzic // Medium. — 2020. — URL: https://medium.com/swlh/retry-patterns-in-distributed-messaging-8be1a4d6f1af (accessed: 03.10.2025).</mixed-citation>
			</ref>
			<ref id="B6">
				<label>6</label>
				<mixed-citation publication-type="confproc">Celery Documentation: Retrying Tasks. — URL: https://docs.celeryq.dev/en/stable/userguide/tasks.html#retrying (accessed: 03.10.2025).</mixed-citation>
			</ref>
			<ref id="B7">
				<label>7</label>
				<mixed-citation publication-type="confproc">Littlewood B. Software Reliability: Principles and Practice / B. Littlewood, L. Strigini. — Berlin; Heidelberg: Springer, 2012. — 290 p.</mixed-citation>
			</ref>
			<ref id="B8">
				<label>8</label>
				<mixed-citation publication-type="confproc">Laaber C. An evaluation of open-source software microbenchmark suites for continuous performance assessment / C. Laaber, P. Leitner // Proceedings of the 2020 IEEE/ACM 42nd Int. Conf. on Software Engineering. — 2020. — P. 325–336.</mixed-citation>
			</ref>
			<ref id="B9">
				<label>9</label>
				<mixed-citation publication-type="confproc">Таненбаум Э. Распределенные системы. Принципы и парадигмы / Э. Таненбаум, М. ван Стеен. — Москва: Техносфера, 2017. — 832 с.</mixed-citation>
			</ref>
			<ref id="B10">
				<label>10</label>
				<mixed-citation publication-type="confproc">Бейер Дж. Надежные распределенные системы: проектирование и внедрение / Дж. Бейер, К. Джонс, Т. Петтерсон [и др.]. — Москва: ДМК Пресс, 2022. — 512 с.</mixed-citation>
			</ref>
			<ref id="B11">
				<label>11</label>
				<mixed-citation publication-type="confproc">Хеллэнд П. Архитектура масштабируемых распределённых систем / П. Хеллэнд. — Москва: ДМК Пресс, 2020. — 320 с.</mixed-citation>
			</ref>
			<ref id="B12">
				<label>12</label>
				<mixed-citation publication-type="confproc">Kleinrock L. Queueing Systems / L. Kleinrock. — New York: Wiley, 1976. — Vol. 2: Computer Applications. — 576 p.</mixed-citation>
			</ref>
			<ref id="B13">
				<label>13</label>
				<mixed-citation publication-type="confproc">Tanenbaum A.S. Distributed Systems / A.S. Tanenbaum, M. van Steen. — Boca Raton: CRC Press, 2017. — 586 p.</mixed-citation>
			</ref>
			<ref id="B14">
				<label>14</label>
				<mixed-citation publication-type="confproc">Kleppmann M. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems / M. Kleppmann. — Sebastopol, CA: O’Reilly Media, 2017.</mixed-citation>
			</ref>
			<ref id="B15">
				<label>15</label>
				<mixed-citation publication-type="confproc">Trivedi K.S. Probability and Statistics with Reliability, Queuing, and Computer Science Applications / K.S. Trivedi. — Hoboken, NJ: Wiley, 2002. — 880 p.</mixed-citation>
			</ref>
			<ref id="B16">
				<label>16</label>
				<mixed-citation publication-type="confproc">Murphy N.R. Site Reliability Engineering: How Google Runs Production Systems / N.R. Murphy, B. Beyer, C. Jones [et al.]. — Sebastopol, CA: O’Reilly Media, 2016.</mixed-citation>
			</ref>
			<ref id="B17">
				<label>17</label>
				<mixed-citation publication-type="confproc">Heath M.T. Probability and Statistics for Computer Science / M.T. Heath. — Boca Raton, FL: Chapman &amp;amp; Hall/CRC, 2011.</mixed-citation>
			</ref>
			<ref id="B18">
				<label>18</label>
				<mixed-citation publication-type="confproc">Newman S. Building Microservices / S. Newman. — Sebastopol, CA: O’Reilly Media, 2021.</mixed-citation>
			</ref>
			<ref id="B19">
				<label>19</label>
				<mixed-citation publication-type="confproc">Gregg B. Systems Performance: Enterprise and the Cloud / B. Gregg. — Boston, MA: Addison‑Wesley, 2020.</mixed-citation>
			</ref>
			<ref id="B20">
				<label>20</label>
				<mixed-citation publication-type="confproc">Jain R. The Art of Computer Systems Performance Analysis / R. Jain. — New York: Wiley, 1991.</mixed-citation>
			</ref>
		</ref-list>
	</back>
	<fundings/>
</article>