Processing requests with hierarchical nature of shared resources

Cover Page

Cite item

Full Text

Abstract

The subject of this research is the development and analysis of a data structure and algorithm for managing parallel message execution in a microservice architecture without a message broker. In the context of the transition to a microservice architecture and asynchronous messaging, especially in the absence of a centralized broker, there is a need for effective methods to ensure the order of processing messages that affect shared resources. The problem lies in the fact that traditional methods, such as segmentation, do not guarantee compliance with the order of message processing during parallel execution and become more complicated when it is necessary to synchronize access to resources. As an alternative to traditional approaches, a method using a shared queue and a thread pool is being considered. The paper explores and proposes a data structure that provides the possibility of parallel message processing provided there are no lock conflicts, thereby ensuring the correct order of operations related to shared resources and avoiding mutual locks. The main goal is to create resource access control mechanisms adapted to the microservice architecture, without complicating the message processing logic and avoiding problems associated with multithreading. The paper uses an analytical approach to the development of a data structure and algorithm based on the formalization of the synchronization problem, as well as a theoretical analysis of the algorithmic complexity and correctness of the proposed solution. The scientific novelty of the work lies in the proposal of a new data structure using ordered sets and waiting lists for effective management of parallel processing of asynchronous messages in microservice architectures, especially where there is no message broker. The proposed algorithm allows to dynamically determine the locks associated with messages, as well as separate blocking and non-blocking messages, which makes it possible to execute them in parallel. The proposed data structure and algorithm make it possible to change the granularity of blocked resources without complicating message processing procedures, and simplify multithreaded programming by allowing each message processing procedure to be considered as single-threaded. The algorithm does not have the problem of mutual blocking of resources, which increases the overall fault tolerance of the system. The identified shortcomings related to resource blocking are proposed to be eliminated in further research.

References

  1. Asynchronous Request-Reply pattern. URL: https://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply
  2. Microservices: Asynchronous Request Response Pattern. URL: https://medium.com/@pulkitswarup/microservices-asynchronous-request-response-pattern-6d00ab78abb6
  3. Request/Response Pattern with Spring AMQP. URL: https://reflectoring.io/amqp-request-response/
  4. Richardson C. Microcervices Patterns. – 2019.
  5. Hohpe G., Woolf B. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. – 20.
  6. Fowler M., Rice D., Foemmel M., Hieatt E., Mee R., Stafford R. Patterns of Enterprise Application Architecture. – 2004.
  7. Sadalage P., Fowler M. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. – 2012.
  8. Wang G., Shi Zhijie J., Nixon M., Han S. SoK: Sharding on Blockchain. // AFT '19: Proceedings of the 1st ACM Conference on Advances in Financial Technologies. – 2019. – С. 41-61. URL: https://dl.acm.org/doi/abs/10.1145/3318041.3355457
  9. Introducing Elastic Scale preview for Azure SQL Database. URL: https://azure.microsoft.com/en-us/blog/introducing-elastic-scale-preview-for-azure-sql-database
  10. Tasks and Parallelism: The New Wave of Multithreading. // [Электронный ресурс] URL: https://www.codemag.com/article/1211071/Tasks-and-Parallelism-TheNew-Wave-of-Multithreadin
  11. Coroutine Is a New Thread. URL: https://medium.com/globant/coroutine-is-a-new-thread-934d9956ce2e
  12. Threads vs Coroutines in Kotlin. URL: https://www.baeldung.com/kotlin/threads-coroutines
  13. Christudas B. Query by Slice, Parallel Execute, and Join: A Thread Pool Pattern in Java. URL: https://web.archive.org/web/20080207124322/http://today.java.net/pub/a/today/2008/01/31/query-by-slice-parallel-execute-join-thread-pool-pattern.html
  14. Programming the Thread Pool in the .NET Framework. URL: https://learn.microsoft.com/en-us/previous-versions/dotnet/articles/ms973903(v=msdn.10)?redirectedfrom=MSDN
  15. Introduction to Thread Pools in Java. URL: https://www.baeldung.com/thread-pool-java-and-guava
  16. O'Neil P. et al. ORDPATHs: Insert-friendly XML node labels // Proceedings of the 2004 ACM SIGMOD international conference on Management of data. – 2004. – С. 903-908. URL: http://www.cse.iitb.ac.in/infolab/Data/Courses/CS632/2014/2007/Papers/ordpath.pdf
  17. PostgreSQL index-ltree. URL: http://www.sai.msu.su/~megera/postgres/gist
  18. Кириллов В.С. Бинарное кодирование иерархических структур // Вестник КРАУНЦ. Физико-математические науки. – 2023. – Т. 43, № 2. – С. 44-54. https://doi.org/10.26117/20796641-2023-43-2-44-54 ISSN 2079-664 EDN: XUMKPG

Supplementary files

Supplementary Files
Action
1. JATS XML

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

8. Субъект персональных данных вправе запретить своему оборудованию прием этих данных или ограничить прием этих данных. При отказе от получения таких данных или при ограничении приема данных некоторые функции Сайта могут работать некорректно. Субъект персональных данных обязуется сам настроить свое оборудование таким способом, чтобы оно обеспечивало адекватный его желаниям режим работы и уровень защиты данных файлов «cookie», Оператор не предоставляет технологических и правовых консультаций на темы подобного характера.

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

10. Я согласен/согласна квалифицировать в качестве своей простой электронной подписи под настоящим Согласием и под Политикой обработки персональных данных выполнение мною следующего действия на сайте: https://journals.rcsi.science/ нажатие мною на интерфейсе с текстом: «Сайт использует сервис «Яндекс.Метрика» (который использует файлы «cookie») на элемент с текстом «Принять и продолжить».