Menu
Publications
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
2001
Editor-in-Chief
Nikiforov
Vladimir O.
D.Sc., Prof.
Partners
doi: 10.17586/2226-1494-2021-21-4-473-481
Evaluation of the applicability of asynchronous programming methods to the data consistency problem in a microservices environment
Read the full article ';
Article in Russian
For citation:
Abstract
For citation:
Malyuga K.V., Perl I.A., Slapoguzov A.P. Evaluation of the applicability of asynchronous programming methods to the data consistency problem in a microservices environment. Scientific and Technical Journal of Information Technologies, Mechanics and Optics, 2021, vol. 21, no. 4, pp. 473–481 (in Russian). doi: 10.17586/2226-1494-2021-21-4-473-481
Abstract
The paper considers the problem of an effective microservices interaction and its organization to support data consistency in fault tolerant and high load systems. The “Saga” microservices orchestration template was used for microservices management. The authors assessed the expediency of asynchronous programming principles usage for designing the Saga coordinator. The simulation of processes in the Saga coordinator was conducted; it considers different specifics of asynchronous and synchronous configurations of distributed transactions (Sagas) management. Synchronous configuration group includes a coordinator with a fixed pool of threads and a coordinator that generates a new thread for each new Saga. Asynchronous configuration group consists of a coroutines based coordinator and a coordinator that uses Linux core scheduler. The set of simulations with different numbers of Sagas and available coordinator processors was executed. It was shown that the use of asynchronous approaches significantly reduces the Saga’s execution duration up to 9.74 times and improves the processor time utilisation value up to 88 %. The obtained data proves the efficiency of asynchronous programming principles applied to the design of the Saga coordinator. The difference in efficiency between the asynchronous algorithms that were implemented in this paper was insignificant. Asynchronous programming principles used to build the Saga coordinator allow it to handle bigger load and to use processor resources in a more efficient way. The outcome of this research can be applied during the design of fault tolerant and high load systems. The paper might be interesting to IT-specialists and researchers focusing on distributed computing.
Keywords: microservices, Saga coordinator, orchestration, asynchronous programming, programme simulation, coroutines, thread pool
References
References
-
Brown K., Woolf B. Implementation patterns for microservices architecture. Proc. 23rd Conference on Pattern Languages of Programs (PLoP '16), 2016, pp. 1–35.
-
Dürr K., Lichtenthäler R., Wirtz G. An evaluation of saga pattern implementation technologies. CEUR Workshop Proceedings, 2021, vol. 2839, pp. 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, pp. 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, vol. 9, no. 8, pp. 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, vol. 39, no. 4, pp. 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, pp. 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, vol. 18, no. 3, pp. 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, pp. 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, pp. 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, vol. 28, no. 4, pp. 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, vol. 84, no. 4, pp. 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, pp. 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, pp. 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, vol. 34, no. 2, pp. 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, pp. 1–8.