Меню
Публикации
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
2001
Главный редактор
НИКИФОРОВ
Владимир Олегович
д.т.н., профессор
Партнеры
doi: 10.17586/2226-1494-2021-21-4-473-481
УДК 004.413.5
Оценка применимости методов асинхронного программирования при решении проблемы согласованности данных в микросервисной среде
Читать статью полностью
Ссылка для цитирования:
Аннотация
Малюга К.В., Перл И.А., Слапогузов А.П. Оценка применимости методов асинхронного программирования при решении проблемы согласованности данных в микросервисной среде // Научно-технический вестник информационных технологий, механики и оптики. 2021. Т. 21, № 4. С. 473–481. doi: 10.17586/2226-1494-2021-21-4-473-481
Аннотация
Предмет исследования. Рассмотрена проблема организации эффективного взаимодействия микросервисов в отказоустойчивых системах с высокой нагрузкой для обеспечения согласованности данных. В качестве способа организации управления микросервисами выбран шаблон управления Сага (Saga) в оркестрационной форме. Проанализирована целесообразность использования принципов асинхронного программирования при проектировании координатора Саг. Метод. Выполнена симуляция процессов работы координатора Саг, которая учитывает специфику синхронных и асинхронных конфигураций управления распределенными транзакциями (Сагами). Представленные синхронные конфигурации включают в себя координатор, управляющий фиксированным набором потоков и координатор, формирующий новый поток для каждой Саги. В группу асинхронных конфигураций входят координатор, управляющий корутинами и координатор, использующий планировщик ядра Linux. Основные результаты. Рассмотрены симуляции при различных значениях количества обрабатываемых Саг и доступных координатору процессоров. Показано, что при использовании асинхронных подходов имеет место значительное увеличение скорости выполнения набора Саг (до 9,74 раз) и скорости утилизации процессорного времени (до 88 %). Это подтверждает целесообразность их использования при проектировании координатора Саг. Показано, что различие в эффективности рассмотренных асинхронных подходов незначительно. Практическая значимость. Построение оркестратора Саг с применением асинхронных подходов позволит обрабатывать большую нагрузку и эффективнее распределять доступное процессорное время. Результаты исследования могут быть применены при проектировании высоконагруженных распределенных отказоустойчивых вычислительных систем. Оценка, выполненная в работе, будет полезна IT-специалистам и исследователям для решения проблем распределенных вычислений.
Ключевые слова: микросервисы, координатор Саг, оркестрация, асинхронное программирование, программная симуляция, корутины, пул потоков
Список литературы
Список литературы
-
Brown K., Woolf B. Implementation patterns for microservices architecture // Proc. 23rd Conference on Pattern Languages of Programs (PLoP '16). 2016. P 1–35.
-
Dürr K., Lichtenthäler R., Wirtz G. An evaluation of saga pattern implementation technologies // CEUR Workshop Proceedings. 2021. V. 2839. P. 74–82.
-
Štefanko M., Chaloupka O., Rossi B. The saga pattern in a reactive microservices environment // Proc. 14th International Conference on Software Technologies (ICSOFT). 2019. P. 483–490. https://doi.org/10.5220/0007918704830490
-
Rudrabhatla C. Comparison of event choreography and orchestration techniques in microservice architecture // International Journal of Advanced Computer Science and Applications. 2018. V. 9. N 8. P. 18–22. https://doi.org/10.14569/IJACSA.2018.090804
-
Richardson C. Microservices Patterns: With examples in Java. NY: Manning Publications, 2018. 520 p.
-
Knoche H. Improving batch performance when migrating to microservices with chunking and coroutines // Softwaretechnik-Trends. 2019. V. 39. N 4. P. 20–22.
-
Stadler L., Würthinger T., Wimmer C. Efficient coroutines for the Java platform // Proc. 8th International Conference on the Principles and Practice of Programming in Java, (PPPJ 2010). Vienna, Austria. 2010. P. 20–28. https://doi.org/10.1145/1852761.1852765
-
Belson B., Holdsworth J., Xiang W., Philippa B. A Survey of asynchronous programming using coroutines in the Internet of Things and embedded systems // ACM Transactions on Embedded Computing Systems. 2019. V. 18. N 3. P. 21. https://doi.org/10.1145/3319618
-
Lee G., Shin S., Song W., Ham T., Lee J., Jeong J. Asynchronous I/O stack: a low-latency kernel I/O stack for ultra-low latency SSDs // Proc. of the 2019 USENIX Annual Technical Conference. 2019. P. 603–616.
-
Malyuga K., Perl O., Slapoguzov A., Perl I. Fault tolerant central saga orchestrator in RESTful architecture // Proc. 26th Conference of Open Innovations Association (FRUCT). Yaroslavl, Russia. 2020. P. 278–283. https://doi.org/10.23919/FRUCT48808.2020.9087389
-
Psaropoulos G., Legler T., May N., Ailamaki A. Interleaving with coroutines: a systematic and practical approach to hide memory latency in index joins // VLDB Journal. 2019. V. 28. N 4. P. 451–471. https://doi.org/10.1007/s00778-018-0533-6
-
Sung M., Kim S., Park S., Chang N., Shin H. Comparative performance evaluation of Java threads for embedded applications: Linux Thread vs. Green Thread // Information Processing Letters. 2002. V. 84. N 4. P. 221–225. https://doi.org/10.1016/S0020-0190(02)00286-7
-
Lozi J.-P., Lepers B., Funston J., Gaud F., Quéma V., Fedorova A. The Linux scheduler: a decade of wasted cores // Proc. 11th European Conference on Computer Systems (EuroSys'16). 2016. P. 2901326. https://doi.org/10.1145/2901318.2901326
-
David F., Carlyle J., Campbell R. Context switch overheads for Linux on ARM platforms // Proc. of the 2007 Workshop on Experimental Computer Science. 2007. P. 3. https://doi.org/10.1145/1281700.1281703
-
Ling Y., Mullen T., Lin X. Analysis of optimal thread pool size // ACM SIGOPS Operating Systems Review. 2000. V. 34. N 2. P. 42–55. https://doi.org/10.1145/346152.346320
-
Nadgowda S., Suneja S., Isci C. Paracloud: Bringing Application Insight into Cloud Operations // Proc. 9th USENIX Workshop on Hot Topics in Cloud Computing, HotCloud 2017, co-located with USENIX ATC 2017. 2017. P. 1–8.