APPROACH TO DEVELOPING ARCHITECTURE OF A HETEROGENEOUS MULTICOMPUTER TASK PLANNING SYSTEM
DOI:
https://doi.org/10.32782/KNTU2618-0340/2021.4.2.1.29Анотація
When developing the architecture of a distributed task scheduling system, developers inevitably face the problem of ensuring the operation of the system as a whole unit. Despite the scalability advantage of heterogeneous multicomputer systems based on nodes with network operating systems, developers face challenges in ensuring the security and transparency of the system. The correct architectural approach in the development of such systems will help to level their shortcomings, as well as ensure fault tolerance and data consistency. When designing distributed task planning systems, it is necessary to consider the problem of load balancing at the nodes that participate in the execution of tasks, so the literature on this topic was considered. The article also analyzes other modern literature on the development of distributed systems in general. The design of a distributed system is considered from the standpoint of analysis of interaction models, message brokers, different types of architecture and consensus algorithms. Different models of interaction in distributed systems are also considered – remote procedure call (RPC), remote method invocation (RMI), message-oriented middleware (MOM), streams (streaming) - and the most flexible for building a distributed task scheduling system is identified. The article compares different brokers ( RabbitMQ, Apache Kafka, ZeroMQ) for routing messages within a distributed system with an emphasis on the reliability of message delivery. In addition, such architectures as grid and cluster are considered, their key features are generalized, and the characteristics of the developed system are presented. Methods for ensuring data consistency in distributed systems Paxos and Raft are also described. The failover model is presented to simplify system development and startup. In addition, the BPMN scheme of running the task within the developed distributed system, as well as the scheme of the architecture of the developed system are presented. The article presents the results of an experiment to determine the scalability of the developed system, as well as analyzes the features of the Golang programming language on which the developed system is written.
При розробці архітектури розподіленої системи планування задач розробники неминуче стикаються з проблемою забезпечення роботи системи як єдиного цілого. Хоча гетерогенні мультикомп’ютерні системи, які будуються на основі вузлів з мережевими операційними системами, і мають перевагу в гнучкості масштабування системи, їх розробники стикаються з проблемами при забезпеченні безпеки та прозорості функціонування системи. Правильний архітектурний підхід при розробці таких систем допоможе нівелювати їхні недоліки, а також забезпечити відмовостійкість і консистентність даних. При проектуванні розподілених систем планування задач потрібно зважати на проблему збалансування навантаження на вузлах, які беруть участь у виконанні задач, тому була розглянута література, присвячена цій тематиці. У статті також проаналізовано іншу сучасну літературу, присвячену розробці розподілених систем в цілому. Проектування розподіленої системи розглянуто з позиції аналізу моделей взаємодії, брокерів повідомлень, різних типів архітектури та алгоритмів консенсусу. Виділено різні моделі взаємодії в розподілених системах: виклик відділених процедур (RPC), віддалений виклик методів (RMI), обмін повідомленнями (MOM), використання потоків (streaming) і визначено найбільш гнучкі з них для побудови розподіленої системи планування задач. В статті зроблено порівняння різних брокерів (RabbitMQ, Apache Kafka, ZeroMQ) для маршрутизації повідомлень в межах розподіленої системи з акцентом на надійність доставки повідомлень. Крім цього, розглянуті такі архітектури як: грід та кластер, узагальнено їх ключові особливості і представлено характеристики розробленої системи. Також, охарактеризовані методи забезпечення узгодженості даних в розподілених системах Paxos і Raft. Запропоновано використовувати failover модель для спрощення розробки і запуску системи. Крім цього, представлено BPMN схему запуску задачі в межах розробленої розподіленої системи, а також схему архітектури розробленої системи. В статті представлені результати проведеного експерименту з визначення можливості масштабування розробленої системи, а також проаналізовано особливості роботи мови програмування Golang, якою написана розроблена система.
Посилання
Steen, M., & Tanenbaum, E. (2003). Raspredelennyie sistemyi. Printsipyi i paradigmyi: uch. posob. Sankt-Peterburg: Piter.
Vucha, M. (2015). A Case Study: Task Scheduling Methodologies for High Speed Computing Systems. International Journal of Embedded Systems and Applications. URL: https://www.researchgate.net/publication/270593930_A_Case_Study_Task_Scheduling_Methodologies_for_High_Speed_Computing_Systems.
Shakirat Haroon-Sulyman. (2014). Client-Server Model. IOSR Journal of Computer Engineering. 16, 57-71. URL: https://www.researchgate.net/publication/271295146_Client-Server_Model.
Berry, D., Djaoui, A., & Grimshaw, A. (2006). The Open Grid Services Architecture, Version 1.5. URL: https://ogf.org/documents/GFD.80.pdf .
Communication in a microservice architecture. URL: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-microservice-architecture.
Baboia, M., Iftene, A., & Gîfu D. (2019) Dynamic Microservices to Create Scalable and Fault Tolerance Architecture. Procedia Computer Science. 159. URL: https://www.sciencedirect.com/science/article/pii/S187705091931467X.
Chee Shin Yeo, Rajkumar Buyya, & Hossein Pourreza. (2006). Cluster Computing: High-Performance, High-Availability, and High-Throughput Processing on a Network of Computers Handbook of Nature-Inspired and Innovative Computing. 521-551. URL: https://www.researchgate.net/publication/226533607_Cluster_Computing_High-Performance_High-Availability_and_High-Throughput_Processing_on_a_Network_of_Computers.
Barkallah, H. (2017). Evolution of the Distributed Computing Paradigms: Brief Road Map. IJCDS Journal. 6(5). URL: https://www.researchgate.net/publication/319352828_Evolution_of_the_Distributed_Computing_Paradigms_a_Brief_Road_Map.
Java RMI. URL: https://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmiTOC.html.
Lecture 3: RPC and RMI. URL: https://cseweb.ucsd.edu/classes/sp16/cse291-e/applications/ln/lecture3.html.
RabbitMQ Tutorials. URL: https://www.rabbitmq.com/getstarted.html.
Curry, E. (2005). Message-Oriented Middleware. Middleware for Communications. 1-28. URL: https://www.researchgate.net/publication/220035284_Message-Oriented_Middleware.
Vineet, J, & Xia Liu. (2017). A Survey of Distributed Message Broker Queues. URL: https://www.researchgate.net/publication/315764651_A_Survey_of_Distributed_Message_Broker_Queues.
Guo Fu., Yanfeng Zhang, & Ge Yu. (2020). A Fair Comparison of Message Queuing Systems. URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9303425.
ZeroMQ Documentation URL: https://zeromq.org/.
Kamburugamuve, S. (2016). Survey of Distributed Stream Processing. URL: https://www.researchgate.net/publication/299411481_Survey_of_Distributed_Stream_Processing
Isah, H., Abughofa, T., Mahfuz, S., & Ajerla, D. (2019). A Survey of Distributed Data Stream Processing Frameworks IEEE Access. 7. URL: https://www.researchgate.net/publication/336430459_A_Survey_of_Distributed_Data_Stream_Processing_Frameworks.
Kumari, P., & Kaur, P. (2018). A survey of fault tolerance in cloud. Journal of King Saud University Computer and Information Sciences. URL: https://www.sciencedirect.com/science/article/pii/S1319157818306438.
Lamport, L. (2001). Paxos Made Simple. URL: https://www.microsoft.com/en-us/research/uploads/prod/2016/12/paxos-simple-Copy.pdf.
Santos, N., & Schiper, A. (2013). Optimizing Paxos with batching and pipelining. Theoretical Computer Science. 496. URL: https://www.sciencedirect.com/science/article/pii/S0304397512009097.
Ongaro, D. (2014). Consensus: bridging theory and practice / Stanford University.
Kleppmann, M. How to do distributed locking. URL: https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html.
Golang. Frequently Asked Questions. URL: https://golang.org/doc/faq
Chto takoe gorutinyi i kakov ih razmer? URL: https://habr.com/ru/company/otus/blog/527748/
Ants. URL: https://github.com/panjf2000/ants
Rozroblena rozpodilena systema upravlinnia zadachamy. URL: https://github.com/dev-renshark/demo_taskdealer