KR20140063279A - A concurrent and parallel processing system based on synchronized messages - Google Patents
A concurrent and parallel processing system based on synchronized messages Download PDFInfo
- Publication number
- KR20140063279A KR20140063279A KR1020120130456A KR20120130456A KR20140063279A KR 20140063279 A KR20140063279 A KR 20140063279A KR 1020120130456 A KR1020120130456 A KR 1020120130456A KR 20120130456 A KR20120130456 A KR 20120130456A KR 20140063279 A KR20140063279 A KR 20140063279A
- Authority
- KR
- South Korea
- Prior art keywords
- message
- component
- processing system
- parallel processing
- requested
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Abstract
Description
본 발명은 다수의 클라이언트와 연결되어 상기 클라이언트가 요청하는 다수의 작업을 동시에 병렬적으로 처리하되, 메시지 큐를 이용하여 동시성 프로그래밍에서 상호 배제하여 처리하는 동기적 메시지 기반 대량 병렬처리 시스템에 관한 것이다.
The present invention relates to a synchronous message-based massively parallel processing system, which is connected to a plurality of clients to simultaneously process a plurality of tasks requested by the client in parallel and to exclude them from each other in concurrent programming using a message queue.
일반적으로, 병렬(parallel) 프로그래밍 또는 동시성(concurrent) 프로그래밍은 다수의 프로세스(또는 프로그램)가 동시에 수행하여 작업을 처리하는 프로그래밍을 말한다. 병렬 프로그램은 서로 다른 작업들이 동시에 수행되는 경우도 있고, 하나의 작업을 다수의 단위 작업으로 나누어 다수의 단위 작업들을 동시에 수행시키는 경우도 있다.In general, parallel programming or concurrent programming refers to programming in which a plurality of processes (or programs) execute at the same time to process a job. In parallel programs, different tasks may be executed at the same time, or a task may be divided into a plurality of unit tasks to perform a plurality of unit tasks simultaneously.
병렬 프로그래밍의 일례로서, 직렬 알고리즘을 병렬화하는 예가 도 1에 도시되고 있다. 도 1은 직렬 알고리즘을 병렬화 할 때 발생하는 극단적인 예로서, 도 1의 프로그램은 1부터 100까지의 정수들의 합을 구하는 프로그램이다. 만약 명령어가 스레드 1이 끝나기 전에 실행되어, 스레드 2가 가져가는 값은 스레드 1의 결과가 아닌 스레드 1에 입력된 값 1을 가져간다. 따라서 스레드 2는 변수 Sum의 값을 2로 변경하게 되므로, 잘못된 결과를 만들게 된다. 이를 경쟁상태라고 한다.As an example of parallel programming, an example of parallelizing a serial algorithm is shown in FIG. 1 is an example of an extreme case occurring when a serial algorithm is parallelized. The program of FIG. 1 is a program for obtaining a sum of integers from 1 to 100. If the instruction is executed before thread 1 ends, the value taken by thread 2 takes the value 1 entered in thread 1, not the result of thread 1. Therefore, thread 2 changes the value of the variable Sum to 2, which results in an incorrect result. This is called competition.
알고리즘을 병렬화하지 않는 경우, 프로그래머는 이를 막기 위해 락(Lock)을 사용하여 상호배제를 하게 되는데 상호배제된 상태에서는 다른 스레드가 사용 중인 변수에 접근하지 못하도록 막게 되며, 작업이 끝나면 락(Lock)을 풀고 다른 스레드가 접근할 수 있게 한다. When the algorithm is not parallelized, the programmer uses locks to prevent mutual exclusion. In the mutually excluded state, other threads are prevented from accessing the variables in use, and locks Unlock and allow other threads to access.
상호배제는 프로그램이 반드시 정상적으로 실행될 수 있게 하지만, 다른 스레드들이 대기하는 동안 오버헤드가 발생하여 수행 속도를 느리게 만들 수 있다. Mutual exclusion allows the program to run normally, but it can slow down the execution time due to overhead while other threads are waiting.
또한 스레드간의 의사소통, 스레드 생성 해제에 따른 자원관리의 문제로 실행시간이 늘어날 수 있는 문제점이 있다.
In addition, there is a problem that execution time is increased due to a problem of resource management due to communication between threads and release of thread creation.
또 다른 병렬 프로그래밍의 예로서, 도 2는 웹 어플리케이션 서버에서의 병렬처리 프로그래밍을 나타내고 있다. 웹 어플리케이션 서버는 웹 환경을 구현하는 것에 최적의 솔루션이 되어왔다. 전통적인 기존의 웹 환경은 여러 개의 페이지가 있고, 많은 양의 페이지 데이터를 받아와, 한 페이지를 이동할 때마다 적은 카운트, 큰 크기의 명령 및 트랜잭션을 발생시킨다.As another example of parallel programming, Figure 2 illustrates parallel programming in a web application server. Web application servers have become the optimal solution for implementing the web environment. Traditional traditional web environments have multiple pages, receive large amounts of page data, and each time a page is moved, it generates fewer counts, larger orders, and transactions.
적은 카운트의 트랜잭션을 가지므로 같은 데이터 공간을 공유하는 것이 문제가 되지 않으며, 어플리케이션 서버 상에서의 공유메모리에 대한 상호배제도 충분히 수용할 수 있다. Since there are few count transactions, sharing the same data space is not a problem, and mutual exclusion of shared memory on the application server can be sufficiently accommodated.
하지만, 이를 SNG(Social Network Game, 쇼셜 네트워크 게임) 등에 적용시키면 문제가 달라진다. SNG는 처음 한 번에 페이지와 각종 필요한 데이터를 로드한 뒤, 적은 양의 데이터를 자주 요청한다. 이는 많은 카운트, 적은 크기의 명령 및 트랜잭션을 발생시키는 것을 의미하고, 본래 웹 어플리케이션 서버가 의도한 것과는 정 반대의 상황이 일어나게 된다. However, if you apply it to SNG (Social Network Game, social network game), the problem is different. The SNG loads the page and all the necessary data the first time, then requests a small amount of data frequently. This means generating a large number of counts, a small amount of instructions and transactions, and the opposite situation to what the web application server originally intended to be.
어플리케이션 서버는 공유된 메모리상에서 요청된 명령을 처리하면서 많은 양의 병목현상을 발생시키게 되고, 이보다 심각한 것은 데이터베이스와의 트랜잭션에서 대량의 읽기 쓰기 연산으로 인한 병목현상이다. 파일시스템은 메모리보다 수행시간이 훨씬 느리므로 많은 양의 데이터가 아님에도 접근속도로 인한 병목현상으로 시스템에 큰 부하를 가져오게 된다. The application server processes a requested command on the shared memory and causes a large amount of bottlenecks, and more serious is the bottleneck caused by a large amount of read / write operations in the transaction with the database. The file system is much slower to execute than memory, so even though it is not a large amount of data, the bottleneck caused by access speed causes a heavy load on the system.
실제로 많은 수의 SNG(쇼셜 네트워크 게임)들이 아직도 이러한 웹 서비스 형태로 구현되어있어 잘 운영이 되는 것 같은 서비스들도 사용자 수가 증가함에 따라 많은 서비스 장애를 발생시키고 있다.
In fact, a large number of SNG (social network games) are still implemented in this type of web service, and services that seem to be operating well cause many service failures as the number of users increases.
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 다수의 클라이언트와 연결되어 상기 클라이언트가 요청하는 다수의 작업을 동시에 병렬적으로 처리하되, 메시지 큐를 이용하여 동시성 프로그래밍에서 상호 배제하여 처리하는 동기적 메시지 기반 대량 병렬처리 시스템을 제공하는 것이다.The object of the present invention is to solve the above-mentioned problems, and it is an object of the present invention to provide a method and system for processing a plurality of jobs concurrently requested by a client, Based mass-parallel processing system.
특히, 본 발명의 목적은 각각의 요청된 작업을 객체 단위로 독립하게 하고, 각 객체는 요청 작업을 수행하기 위한 단위작업들을 각각 컴포넌트로 구성하고, 컴포넌트가 메시지 기반으로 상호 배제되어 처리하도록 하는 동기적 메시지 기반 대량 병렬처리 시스템을 제공하는 것이다.
In particular, it is an object of the present invention to provide a method and apparatus for making each requested task independent on an object-by-object basis, each object comprising unit operations for performing a request operation, And to provide a massively parallel processing system based on a miracle message.
상기 목적을 달성하기 위해 본 발명은 다수의 클라이언트와 연결되어 상기 클라이언트가 요청하는 다수의 작업(이하 요청 작업)을 동시에 병렬적으로 처리하는 동기적 메시지 기반 대량 병렬처리 시스템에 관한 것으로서, 상기 요청 작업을 단위 작업으로 나누어 수행하되, 상기 단위 작업을 독립적으로 수행하는 컴포넌트를 생성하여 수행시키는 다수의 객체; 및, 상기 컴포넌트에서 요청하는 메시지들을 수신하여 저장하는 적어도 2개의 저장소로 구성된 메시지 큐를 포함하고, 상기 컴포넌트는 상기 저장소 중 어느 하나(이하 제1 저장소)에 저장된 메시지를 처리하고, 새로 발생되는 메시지를 상기 제1 저장소와 다른 저장소(이하 제2 저장소)에 저장하는 것을 특징으로 한다.In order to achieve the above object, the present invention is a synchronous message-based massively parallel processing system connected to a plurality of clients and simultaneously processing a plurality of jobs requested by the clients (hereinafter referred to as a request task) in parallel, A plurality of objects to be executed by dividing the unit work into a unit work and generating and executing a component that performs the unit work independently; And a message queue configured with at least two repositories for receiving and storing messages requested by the component, the component processes a message stored in one of the repositories (hereinafter referred to as a first repository) (Hereinafter referred to as " second storage ").
또, 본 발명은 동기적 메시지 기반 대량 병렬처리 시스템에 있어서, 상기 컴포넌트는 해당 단위 작업을 수행하기 위한 데이터 및 기능을 처리하는 프로세스로 구성되는 것을 특징으로 한다.According to another aspect of the present invention, there is provided a synchronous message-based massively parallel processing system, wherein the component comprises a process for processing data and functions for performing a corresponding unit task.
또, 본 발명은 동기적 메시지 기반 대량 병렬처리 시스템에 있어서, 상기 시스템은, 컴포넌트 클래스를 저장하는 컴포넌트 클래스를 더 포함하고, 상기 컴포넌트는 상기 컴포넌트 클래스로부터 인터페이스 객체를 상속함으로써 생성되는 것을 특징으로 한다.The present invention also provides a synchronous message-based massively parallel processing system, wherein the system further comprises a component class for storing a component class, and the component is generated by inheriting an interface object from the component class .
또, 본 발명은 동기적 메시지 기반 대량 병렬처리 시스템에 있어서, 상기 제1 저장소에 저장된 메시지가 모두 처리되면, 상기 컴포넌트는 상기 제2 저장소에 저장된 메시지를 처리하고, 새로 발생하는 메시지는 상기 제1 저장소에 저장되는 것을 특징으로 한다.According to another aspect of the present invention, there is provided a synchronous message-based massively parallel processing system, wherein when a message stored in the first storage is processed, the component processes a message stored in the second storage, And is stored in a storage.
또, 본 발명은 동기적 메시지 기반 대량 병렬처리 시스템에 있어서, 상기 메시지는 사용자의 입력에 의해 발생되거나, 상기 컴포넌트에 의해 발생되는 것을 특징으로 한다.The present invention also relates to a synchronous message-based massively parallel processing system, wherein the message is generated by a user's input or generated by the component.
또, 본 발명은 동기적 메시지 기반 대량 병렬처리 시스템에 있어서, 상기 메시지는 메시지를 생성한 컴포넌트, 발생된 이벤트, 메시지를 수신할 컴포넌트를 포함하는 것을 특징으로 한다.
According to another aspect of the present invention, there is provided a synchronous message-based massively parallel processing system, wherein the message includes a component for generating a message, a generated event, and a component for receiving a message.
상술한 바와 같이, 본 발명에 따른 동기적 메시지 기반 대량 병렬처리 시스템에 의하면, 각각의 컴포넌트들로 작업을 분할하여 다른 작업 등에 영향을 받지 않도록 독립시킴으로써, 동시성 프로그래밍에서 상호배제에 의한 성능저하를 피하고, 다중 코어 환경에서 작업들을 쉽게 분배할 수 있는 효과가 얻어진다.As described above, according to the synchronous message-based massively parallel processing system according to the present invention, by dividing tasks into respective components and isolating them from being influenced by other tasks, performance degradation due to mutual exclusion in synchronous programming is avoided , It is possible to easily distribute tasks in a multi-core environment.
본 발명에 따른 동기적 메시지 기반 대량 병렬처리 시스템에 의하면, 메시지 큐에서의 원자적 연산은 현대의 멀티코어 프로세서에서는 별도의 원자적 연산을 위한 별도의 명령어를 탑재하고 있으므로, 스레드 간에 교착상태(deadlock) 방지를 해결을 위한 상호배제가 없는 프로그래밍이 가능하게 되어, 멀티코어 환경에서의 처리효율이 높아지는 효과가 얻어진다.According to the synchronous message-based massively parallel processing system according to the present invention, since the atomic operation in the message queue includes separate instructions for separate atomic operations in modern multicore processors, deadlocks ), It is possible to perform programming without mutual exclusion for solving the problem that the processing efficiency in the multicore environment is increased.
본 발명에 따른 동기적 메시지 기반 대량 병렬처리 시스템에 의하면, 각각의 작업이 객체 단위로 독립되므로 여러 대의 장비로 분산처리시스템을 구성하기에도 용이하고, 구성후 운영중 시스템에 부하가 많이 걸린다면 새로운 장비를 추가(Scale-Out)할 수 있는 효과가 얻어진다.
According to the synchronous message-based massively parallel processing system according to the present invention, since each task is independent on an object basis, it is easy to construct a distributed processing system with a plurality of equipments, It is possible to add a device (scale-out).
도 1 및 도 2는 종래 기술에 의한 병렬 처리 프로그래밍의 예들이다.
도 3은 본 발명을 실시하기 위한 전체 시스템의 구성을 도시한 도면이다.
도 4 및 도 5는 본 발명의 일실시예에 따라 동기적 메시지 기반 대량 병렬처리 시스템의 구성에 대한 블록도이다.
도 6은 본 발명의 일실시예에 따른 컴포넌트 클래스로부터 속성을 상속받아 컴포넌트를 생성하는 예시이다.
도 7은 본 발명의 일실시예에 따른 메시지의 구조이다.Figures 1 and 2 are examples of parallel processing programming according to the prior art.
3 is a diagram showing a configuration of an overall system for carrying out the present invention.
4 and 5 are block diagrams of a configuration of a synchronous message-based massively parallel processing system according to an embodiment of the present invention.
FIG. 6 is an example of generating a component by inheriting an attribute from a component class according to an embodiment of the present invention.
7 is a structure of a message according to an embodiment of the present invention.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the drawings.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
In the description of the present invention, the same parts are denoted by the same reference numerals, and repetitive description thereof will be omitted.
먼저, 본 발명의 일실시예에 따른 동기적 메시지 기반 대량 병렬처리 시스템을 실시하기 위한 전체 시스템의 구성에 대하여 도 3을 참조하여 설명한다.First, a configuration of an overall system for implementing a synchronous message-based massively parallel processing system according to an embodiment of the present invention will be described with reference to FIG.
도 3에서 보는 바와 같이, 본 발명을 실시하기 위한 전체 시스템은 클라이언트(10) 및, 서버(30)로 구성된다. 클라이언트(10) 및 서버(30)는 네트워크(20)를 통해 서로 연결되어 구성된다. 추가적으로, 문서 등 데이터를 저장하기 위한 데이터베이스(40)를 더 포함하여 구성될 수 있다.As shown in FIG. 3, the overall system for implementing the present invention comprises a
클라이언트(10)는 사용자가 이용하는 PC, 노트북, 넷북, 태블릿PC, PDA, 모바일, 스마트폰 등 통상의 컴퓨팅 단말기이다. 클라이언트(10)는 서버(30)에 특정한 작업을 요청하고, 요청된 결과를 수신한다.The
서버(30)는 통상의 서버로서, 클라이언트(10)로부터 작업을 요청받아, 해당 작업을 처리한다. 또한, 서버(30)는 처리 결과를 클라이언트(10)에 전송한다. 이때, 서버(30)는 클라이언트(10)의 작업 처리를 위해 클라이언트(10)와 세션을 설정하여 유지한다.The
한편, 다수의 클라이언트(10)가 서버(30)에 동시에 접속하여 다수의 작업을 동시에 요청할 수 있고, 서버(30)는 이와 같이 요청받은 다수의 작업들을 동시에 처리한다.Meanwhile, a plurality of
즉, 서버(30)는 본 발명에 따른 동기적 메시지 기반 대량 병렬처리 시스템의 기능을 수행한다. 이하에서 서버(30)를 대량 병렬처리 시스템이라 한다.
That is, the
다음으로, 본 발명의 일실시예에 따른 동기적 메시지 기반 대량 병렬처리 시스템을 도 4 및 도 5를 참조하여 보다 구체적으로 설명한다.Next, a synchronous message-based massively parallel processing system according to an embodiment of the present invention will be described in more detail with reference to FIGS. 4 and 5. FIG.
도 4 및 도 5에서 보는 바와 같이, 본 발명에 따른 동기적 메시지 기반 대량 병렬처리 시스템(30)은 다수의 객체(112), 및, 메시지 큐(113)로 구성된다. 추가적으로, 클래스 저장부(18)를 더 포함하여 구성될 수 있다.4 and 5, the synchronous message-based massively
앞서 본 바와 같이, 병렬처리 시스템(30)은 다수의 클라이언트(10)와 연결되어 클라이언트(10)가 요청하는 다수의 작업을 동시에 병렬적으로 처리한다. 이때, 요청하는 작업을 요청 작업이라 부르기로 한다.As described above, the
객체(112)는 상기 요청 작업을 단위 작업으로 나누어 수행한다. 특히, 객체(112)는 상기 단위 작업을 독립적으로 수행하는 컴포넌트(110)로 생성하여 수행시킨다.The
컴포넌트(110)는 어떠한 임의의 기능(또는 임의의 단위 작업)을 수행하기 위한 하나의 모듈이다. 컴포넌트(110)는 해당 기능을 수행하기 위한 데이터들과 매 처리 동작마다 각자의 기능을 처리하는 가상함수(또는 프로세스, Process)로 구성되어있다.The
클래스 저장부(118)는 컴포넌트 클래스(111)를 별도로 저장해둔다. 도 6에서 보는 바와 같이, 각각의 컴포넌트(110)들은 컴포넌트 클래스 IComponent(111)의 인터페이스 객체를 상속함으로써, 본 시스템에 대한 호환성을 보장받을 수 있다.The
객체(112)는 이러한 컴포넌트(110)들을 포함하여 하나의 유기적인 기능을 수행하기 위한 모듈이다. 각각의 객체(112)들은 0개 이상의 컴포넌트(110)와 해당 객체를 정의하기 위한 데이터들로 이루어진다. 컴포넌트(110)들은 시스템이 수행되는 도중에 추가되거나 제거될 수 있다.The
컴포넌트(110) 또는 객체(112)는 적어도 2개의 저장소를 가지고, 상기 저장소에 데이터들을 저장한다. 이때, 하나의 저장소가 표시되는 동안은 다른 하나의 저장소는 임시저장을 위한 버퍼로 사용된다.The
메시지 큐(113)는 시스템 외/내부에서 발생하는 다양한 이벤트들에 의해 생성되는 메시지들을 매 처리동작마다 원자적 연산으로 추가한다. 메시지 큐(113)는 2개의 저장소(113a, 113b)를 가지고 있다. 하나의 저장소 113a가 처리되는 동안 다른 하나의 저장소 113b는 입력을 받게 된다. 저장소 113a의 메시지를 모두 처리가 되면, 저장소 113b에 저장된 메시지를 처리하고, 저장소 113a에는 입력을 받게 된다. The
즉, 어느 시점에서, 현재 처리되는 메시지들은 어느 하나의 저장소에 저장된 메시지들이고, 이 메시지들이 처리될 때 새로 발생하는 메시지들은 다른 하나의 저장소에 저장된다. 이때, 처리되는 메시지를 저장하는 저장소를 "제1 저장소"라고 하고, 메시지가 입력되는 저장소를 "제2 저장소"라 부르기로 한다.That is, at some point, currently processed messages are messages stored in any one of the repositories, and when these messages are processed, newly generated messages are stored in another repository. At this time, the storage for storing the processed message is referred to as a "first storage ", and the storage for inputting a message is referred to as a" second storage ".
도 7에서 보는 바와 같이, 메시지(114)는 해당 메시지가 생성된 객체(112)의 주소, 발생된 이벤트, 해당 메시지를 수신할 객체 등으로 구성되며, 수신할 객체는 모든 객체 혹은, 특정 컴포넌트일 수 있다.7, the
사용자 입력(115)이나 시스템 내 컴포넌트(110)에서 특정한 이벤트가 발생되면 각각의 컴포넌트(110)나 객체(112)의 정보를 변경시키지 않고 해당 이벤트를 메시지(114) 형태로 메시지 큐(113)에 저장한다. 특히 이때 발생된 메시지는 메시지 큐(113)의 제2 저장소에 저장된다.When a specific event occurs in the
현재의 정보가 사용자에게 보여지고 있는 동안(메시지가 처리되어 그 결과를 보여주는 동안), 객체(112)는 각 컴포넌트(110)의 프로세스(Process) 함수를 실행시켜 각각의 기능들을 수행한다. 이때 발생하는 메시지(114)는 메시지 큐(113)(또는 제2 저장소)에 전달된다. 각각의 프로세스는 변경되지 않는 상수 값들(현재 데이터)을 참조하여 수행된다. 따라서 수행 순서와 상관없이 결과 값이 보장된다.While the current information is being shown to the user (while the message is being processed and showing the result), the
각 프로세스(Process)가 수행되는 동안, 메시지 큐(113)를 탐색하며 해당 컴포넌트나 객체에게 영향을 주는 메시지(110)인지 판단한다. 수신객체조건과 일치할 경우 메시지(110) 내용에 따라 각각의 임의의 처리를 수행한다.During each process, the
모든 컴포넌트(110) 및 객체(112)의 처리가 종료되면, 처리가 끝난 메시지 큐(113)(또는 제1 저장소)의 내용을 소거하고, 표시 데이터와 버퍼 데이터의 저장소를 교환한다. 이후 앞서의 동작을 반복적으로 수행하여 시스템 기능이 수행된다. 즉, 제2 저장소가 제1 저장소 역할을 하고, 제1 저장소가 제2 저장소 역할을 한다.When the processing of all the
본원발명은 상호배제가 필요한 모듈만 메시지로 처리하는 것이 아니다. 기존의 순차적인 방식으로 프로그램 동작을 구성했을 때는 서로 공통된 부분이나 우선적으로 처리해야할 부분 때문에 임계영역이 발생할 수밖에 없다. 그래서 전체 시스템의 기능들을 다양한 컴포넌트로 나누고, 해당 기능이 필요한 객체에 각 컴포넌트를 등록해서 시스템을 구성한 것이다. 즉, 각각의 데이터를 처리하는 처리 모듈은 각각의 컴포넌트에 정의되어있고, 이러한 컴포넌트들의 기능을 실행하기 위한 인터페이스가 준비된다. 그리고 처리과정에서는 각 컴포넌트를 프로세서들끼리 나누고, 단순하게 해당 인터페이스를 호출하여 처리 프로세스가 동작하는 것이다. The present invention does not process only the modules that need mutual exclusion. When a program operation is configured in an existing sequential manner, a critical region is inevitably generated due to a common portion or a portion to be preferentially processed. Thus, the functions of the whole system are divided into various components, and the system is configured by registering each component in the object requiring the corresponding function. That is, a processing module for processing each data is defined in each component, and an interface for executing functions of these components is prepared. In the process, each component is divided into processors, and the process is called by simply calling the corresponding interface.
다만, 처리나 사용자 입력에 대해서 곧 바로 해당 객체나 컴포넌트의 데이터에 손을 대면 임계영역을 지정할 수밖에 없다. 따라서 이에 대한 처리를 뒤로 미루어서, 메시지형태로 만들어 큐에 저장하는 것이다. 즉, 추가 발생하는 메시지들을 제2 저장소에 별도로 저장하여 당장 처리하지 않고, 제1 저장소의 메시지가 모두 처리된 후 추가 발생한 메시지들이 처리된다. 즉, 큐는 현재 처리과정 중에 발생한 메시지를 저장하는 큐와 앞서 발생한 메시지를 처리중인 큐로 두 가지로 구성되어있는 것이다.
However, if you touch the data of the object or the component immediately about the processing or the user input, you have to specify the critical area. Therefore, we postpone the process for it and make it into a message form and store it in the queue. That is, additional generated messages are separately stored in the second storage and are not immediately processed, and additional generated messages are processed after all the messages in the first storage are processed. In other words, the queue consists of two queues: a queue that stores messages that occur during the current process, and a queue that processes messages that are generated earlier.
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
Although the present invention has been described in detail with reference to the above embodiments, it is needless to say that the present invention is not limited to the above-described embodiments, and various modifications may be made without departing from the spirit of the present invention.
10 : 클라이언트 20 : 네트워크
30 : 병렬처리 시스템, 서버 40 : 데이터베이스
110 : 컴포넌트 112 : 객체
113 : 메시지 큐 114 : 메시지
115 : 사용자 단말 118 : 클래스 저장부10: Client 20: Network
30: parallel processing system, server 40: database
110: component 112: object
113: Message Queue 114: Message
115: user terminal 118: class storage unit
Claims (6)
상기 요청 작업을 단위 작업으로 나누어 수행하되, 상기 단위 작업을 독립적으로 수행하는 컴포넌트를 생성하여 수행시키는 다수의 객체; 및,
상기 컴포넌트에서 요청하는 메시지들을 수신하여 저장하는 적어도 2개의 저장소로 구성된 메시지 큐를 포함하고,
상기 컴포넌트는 상기 저장소 중 어느 하나(이하 제1 저장소)에 저장된 메시지를 처리하고, 새로 발생되는 메시지를 상기 제1 저장소와 다른 저장소(이하 제2 저장소)에 저장하는 것을 특징으로 하는 동기적 메시지 기반 대량 병렬처리 시스템.
1. A synchronous message-based massively parallel processing system connected to a plurality of clients and concurrently processing a plurality of jobs (hereinafter referred to as requests) requested by the clients,
A plurality of objects to be executed by dividing the request task into unit tasks and generating and executing a component that performs the unit tasks independently; And
And a message queue configured by at least two repositories for receiving and storing the messages requested by the component,
Wherein the component processes a message stored in one of the repositories (hereinafter referred to as a first repository) and stores a newly generated message in a repository (hereinafter referred to as a second repository) different from the first repository Massively parallel processing system.
상기 컴포넌트는 해당 단위 작업을 수행하기 위한 데이터 및 기능을 처리하는 프로세스로 구성되는 것을 특징으로 하는 동기적 메시지 기반 대량 병렬처리 시스템.
The method according to claim 1,
Wherein the component comprises a process for processing data and functions for performing a corresponding unit operation.
상기 시스템은, 컴포넌트 클래스를 저장하는 컴포넌트 클래스를 더 포함하고,
상기 컴포넌트는 상기 컴포넌트 클래스로부터 인터페이스 객체를 상속함으로써 생성되는 것을 특징으로 하는 동기적 메시지 기반 대량 병렬처리 시스템.
The method according to claim 1,
The system further comprises a component class for storing a component class,
Wherein the component is created by inheriting an interface object from the component class.
상기 제1 저장소에 저장된 메시지가 모두 처리되면, 상기 컴포넌트는 상기 제2 저장소에 저장된 메시지를 처리하고, 새로 발생하는 메시지는 상기 제1 저장소에 저장되는 것을 특징으로 하는 동기적 메시지 기반 대량 병렬처리 시스템.
The method according to claim 1,
Characterized in that when a message stored in the first storage is processed, the component processes the message stored in the second storage and the newly generated message is stored in the first storage. .
상기 메시지는 사용자의 입력에 의해 발생되거나, 상기 컴포넌트에 의해 발생되는 것을 특징으로 하는 동기적 메시지 기반 대량 병렬처리 시스템.
The method according to claim 1,
Wherein the message is generated by a user's input or is generated by the component.
상기 메시지는 메시지를 생성한 컴포넌트, 발생된 이벤트, 메시지를 수신할 컴포넌트를 포함하는 것을 특징으로 하는 동기적 메시지 기반 대량 병렬처리 시스템.
The method according to claim 1,
Wherein the message comprises a component for generating a message, a generated event, and a component for receiving a message.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120130456A KR101448861B1 (en) | 2012-11-16 | 2012-11-16 | A concurrent and parallel processing system based on synchronized messages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120130456A KR101448861B1 (en) | 2012-11-16 | 2012-11-16 | A concurrent and parallel processing system based on synchronized messages |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140063279A true KR20140063279A (en) | 2014-05-27 |
KR101448861B1 KR101448861B1 (en) | 2014-10-13 |
Family
ID=50891324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120130456A KR101448861B1 (en) | 2012-11-16 | 2012-11-16 | A concurrent and parallel processing system based on synchronized messages |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101448861B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453625A (en) * | 2016-11-17 | 2017-02-22 | 东软集团股份有限公司 | Information synchronization method and high-availability cluster system |
KR102460845B1 (en) * | 2022-02-28 | 2022-10-31 | (주)성창 | Distributed processing-based real-time data change history management system for SCADA implementation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07141180A (en) * | 1993-11-19 | 1995-06-02 | Oki Electric Ind Co Ltd | Parallel execution method for object |
KR100378444B1 (en) * | 2001-03-14 | 2003-04-10 | 지아이에스소프트 주식회사 | Server system and method for managing client's demand of the server system |
-
2012
- 2012-11-16 KR KR1020120130456A patent/KR101448861B1/en active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453625A (en) * | 2016-11-17 | 2017-02-22 | 东软集团股份有限公司 | Information synchronization method and high-availability cluster system |
CN106453625B (en) * | 2016-11-17 | 2019-05-17 | 东软集团股份有限公司 | Information synchronization method and high availability cluster system |
KR102460845B1 (en) * | 2022-02-28 | 2022-10-31 | (주)성창 | Distributed processing-based real-time data change history management system for SCADA implementation |
Also Published As
Publication number | Publication date |
---|---|
KR101448861B1 (en) | 2014-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tang et al. | A MapReduce task scheduling algorithm for deadline constraints | |
Kulkarni et al. | Survey on Hadoop and Introduction to YARN. | |
Lelli et al. | An efficient and scalable implementation of global EDF in Linux | |
US8776077B2 (en) | Method for multithreading an application using partitioning to allocate work to threads | |
Ma et al. | The limitation of MapReduce: A probing case and a lightweight solution | |
US11269692B2 (en) | Efficient sequencer for multiple concurrently-executing threads of execution | |
JP2012160014A (en) | Data analysis and machine learning processing unit, method, and program | |
Liang et al. | Accelerating iterative big data computing through MPI | |
Miceli et al. | Programming abstractions for data intensive computing on clouds and grids | |
Yang et al. | PK-OMLP: An OMLP based k-exclusion real-time locking protocol for multi-GPU sharing under partitioned scheduling | |
US20170371713A1 (en) | Intelligent resource management system | |
US20150160973A1 (en) | Domain based resource isolation in multi-core systems | |
KR101448861B1 (en) | A concurrent and parallel processing system based on synchronized messages | |
Yankovitch et al. | Hypersonic: A hybrid parallelization approach for scalable complex event processing | |
Shrivastava et al. | Supporting transaction predictability in replicated DRTDBS | |
Tiwari et al. | Modeling and analyzing key performance factors of shared memory mapreduce | |
Sadooghi et al. | Albatross: An efficient cloud-enabled task scheduling and execution framework using distributed message queues | |
Liu et al. | BSPCloud: A hybrid distributed-memory and shared-memory programming model | |
Lusk et al. | Asynchronous dynamic load balancing | |
Son et al. | Parallel Job Processing Technique for Real-time Big-Data Processing Framework | |
Perarnau et al. | Argo | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
Kovoor et al. | Building a Java mapreduce framework for multi-core architectures | |
Shah et al. | Performance analysis of scheduling algorithms in Apache Hadoop | |
Mühe et al. | The mainframe strikes back: elastic multi-tenancy using main memory database systems on a many-core server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170908 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180921 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190906 Year of fee payment: 6 |