KR102335687B1 - 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템 - Google Patents

클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템 Download PDF

Info

Publication number
KR102335687B1
KR102335687B1 KR1020200034906A KR20200034906A KR102335687B1 KR 102335687 B1 KR102335687 B1 KR 102335687B1 KR 1020200034906 A KR1020200034906 A KR 1020200034906A KR 20200034906 A KR20200034906 A KR 20200034906A KR 102335687 B1 KR102335687 B1 KR 102335687B1
Authority
KR
South Korea
Prior art keywords
scheduler
server
manager
job
agent
Prior art date
Application number
KR1020200034906A
Other languages
English (en)
Other versions
KR20210086391A (ko
Inventor
황유진
허두녕
양윤모
최석진
Original Assignee
주식회사 포스코아이씨티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 포스코아이씨티 filed Critical 주식회사 포스코아이씨티
Publication of KR20210086391A publication Critical patent/KR20210086391A/ko
Application granted granted Critical
Publication of KR102335687B1 publication Critical patent/KR102335687B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • H04L67/16
    • H04L67/32
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Abstract

스케줄러 서버가 작업 처리에만 집중할 수 있고 시스템 효율성을 향상시킬 수 있는 본 발명의 일 측면에 따른 스케줄러 서버 시스템은, 클러스터링 구조로 구성된 복수의 스케줄러 서버들, 복수의 스케줄러 서버들 중 적어도 하나에 대한 제어 정보를 제공하고, 복수의 스케줄러 서버들 중 적어도 하나에 대한 상태 정보를 요청하는 스케줄러 매니저, 및 스케줄러 매니저로부터 제어 정보 제공이 요청되면 제어 정보를 해당 스케줄러 서버에 제공하고, 스케줄러 매니저로부터 적어도 하나의 스케줄러 서버에 대한 상태 정보가 요청되면 적어도 하나의 스케줄러 서버로부터 수집한 상태 정보를 상기 스케줄러 매니저에 제공하는 스케줄러 에이전트를 포함한다.

Description

클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템{Schedule Server System for Remote Control and Clusting Configuration}
본 발명은 스케줄러 서버 시스템에 관한 것이다.
종래의 스케줄러 서버 시스템은 단일 서버가 실행되는 단일 인터페이스 형태를 가진다. 종래의 스케줄러 서버 시스템은 동시에 처리할 수 있는 작업량이 제한되어 있기 때문에 동시에 많은 작업이 요청이 되는 경우 쓰레드(thread) 및 트랜잭션(transaction) 처리시 오류로 인한 문제가 발생될 수 있다. 예를 들면, 특정시간에 처리되어야 하는 작업이 많은 경우, 쓰레드를 할당 받지 못하여 처리되지 않는 문제가 발생할 수 있다. 또한, 특정 업무의 작업량이 많은 경우 새로운 서버를 설치하고, 별도로 운영 및 관리해야 한다.
본 발명은 상술한 문제점을 해결하기 위한 것으로서, 스케줄러 서버가 작업 처리에만 집중할 수 있고 시스템 효율성을 향상시킬 수 있는 스케줄러 서버 시스템을 제공하는 것을 기술적 과제로 한다.
또한, 본 발명은 동시 처리되는 쓰레드의 수를 효율적으로 관리할 수 있는 스케줄러 서버 시스템을 제공하는 것을 다른 기술적 과제로 한다.
또한, 본 발명은 서버 확장이 용이한 스케줄러 서버 시스템을 제공하는 것을 또 다른 기술적 과제로 한다.
상기 목적을 달성하기 위한 본 발명의 일 측면에 따른 스케줄러 서버 시스템은, 작업을 처리하는 복수의 스케줄러 서버들, 복수의 스케줄러 서버들 중 적어도 하나에 대한 상태 정보를 요청하는 스케줄러 매니저, 및 스케줄러 매니저 및 복수의 스케줄러 서버들과 연결되어, 복수의 스케줄러 서버들 각각으로부터 주기적으로 상태 정보를 수집하여 메모리에 저장하고, 스케줄러 매니저로부터 적어도 하나의 스케줄러 서버에 대한 상태 정보를 요청하는 요청메시지가 수신되면, 메모리에 저장된 적어도 하나의 스케줄러 서버에 대한 상태 정보를 상기 스케줄러 매니저에 제공하는 스케줄러 에이전트를 포함한다.
본 발명에 따르면, 스케줄러 매니저가 복수의 스케줄러 서버들에 각각 연결되는 것이 아니라, 스케줄러 에이전트를 통해 복수의 스케줄러 서버들을 모니터링 및 제어할 수 있다. 본 발명은 스케줄러 매니저가 복수의 스케줄러 서버들 각각에 상태 정보를 요청할 필요가 없으며, 스케줄러 에이전트를 통해 복수의 스케줄러 서버들의 통합 관리가 가능하다. 또한, 본 발명은 복수의 스케줄러 서버들이 스케줄러 매니저로부터의 상태 정보 요청 또는 작업 실행 정보 요청에 응답할 필요가 없으며, 작업 처리에만 집중할 수 있다. 이에 따라, 본 발명은 시스템의 효율성이 향상될 수 있다.
또한, 본 발명에 따르면, 복수의 스케줄러 서버들 중 적어도 일부를 클러스터로 구성할 수 있다. 이에 따라, 본 발명은 머신의 CPU 및 메모리가 증가되는 효과를 가질 수 있다. 더 나아가, 본 발명은 작업량이 기준치 이상이 되는 경우 스케줄러 매니저에 새로운 스케줄러 서버를 간단하게 등록할 수 있으므로, 서버 확장이 용이하다.
또한, 본 발명에 따르면, 동시 처리되는 쓰레드의 수를 효율적으로 관리함으로써, 스케줄에 따른 작업이 쓰레드를 할당 받지 못하고 건너 뛰는(misfire) 것을 방지할 수 있다.
도 1은 본 발명에 따른 스케줄러 서버 시스템을 보여주는 도면이다.
도 2는 도 1의 스케줄러 매니저의 구성을 보여주는 블록도이다.
도 3은 스케줄러 매니저에서 작업을 등록하는 과정을 설명하기 위한 도면이다.
도 4는 도 1의 스케줄러 에이전트의 구성을 보여주는 블록도이다.
도 5는 도 4의 에이전트 컨트롤러에서 REST API 처리 예를 보여주는 도면이다.
도 6은 도 1의 스케줄러 서버의 구성을 보여주는 블록도이다.
도 7은 도 6의 서버 컨트롤러에서 REST API 처리 예를 보여주는 도면이다.
도 8은 도 6의 스케줄러 및 작업 실행부의 구성을 보여주는 블록도이다.
이하, 첨부되는 도면을 참고하여 본 발명의 실시예들에 대해 상세히 설명한다.
본 명세서에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 정의하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다.
"포함하다" 또는 "가지다" 등의 용어는 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
"적어도 하나"의 용어는 하나 이상의 관련 항목으로부터 제시 가능한 모든 조합을 포함하는 것으로 이해되어야 한다. 예를 들어, "제1 항목, 제2 항목 및 제 3항목 중에서 적어도 하나"의 의미는 제1 항목, 제2 항목 또는 제3 항목 각각 뿐만 아니라 제1 항목, 제2 항목 및 제3 항목 중에서 2개 이상으로부터 제시될 수 있는 모든 항목의 조합을 의미한다.
본 발명에 따른 스케줄러 서버 시스템은 대규모 업무 시스템에서 특정 이벤트 또는 정해진 시간에 발생해야 하는 복잡한 업무를 스케줄로 등록하고, 작업의 순서와 트랜잭션을 보장하는 안정적인 스케줄러 서버를 제공한다.
기존 스케줄러 서버 시스템의 경우, 단일 서버로 구성되어 수많은 작업을 처리하기에는 동시 처리 쓰레드 및 트랜잭션 처리시 오류가 발생될 수 있다. 예를 들면, 특정시간에 처리되어야 하는 작업이 많은 경우 쓰레드를 할당받지 못해 처리되지 않는 경우가 발생될 수 있다. 또한 서버의 용량 에 따라 작업의 처리량이 제한되기 때문에 특정 업무에서 작업량이 많은 경우는 서버를 별도로 설치하여 스케줄러 서버도 따로 운영 관리해야 하는 문제점이 발생할 수 있다.
이를 해결하기 위하여, 본 발명에 따른 스케줄러 서버 시스템은 매니저(Manager), 에이전트(Agent), 서버(Sever)로 구성된다.
도 1은 본 발명에 따른 스케줄러 서버 시스템을 보여주는 도면이다.
도 1에 도시된 바와 같이, 본 발명에 따른 스케줄러 서버 시스템(100)은 스케줄러 매니저(100), 사용자 클라이언트(200), 스케줄러 에이전트(300), 복수의 스케줄러 서버들(500), 메타데이터베이스(410) 및 작업 스토어(420)를 포함할 수 있다.
스케줄러 매니저(100)는 화면을 통해 사용자에게 스케줄러 서버(500a, 500b, 500c)에 대한 상태 정보 및 제어 결과를 제공한다. 구체적으로, 스케줄러 매니저(100)는 스케줄러 에이전트(300)에 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보를 요청할 수 있다. 스케줄러 매니저(100)는 스케줄러 에이전트(300)로부터 요청한 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보를 제공받고, 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보를 화면에 표시할 수 있다.
또한, 스케줄러 매니저(100)는 스케줄러 에이전트(300)에 적어도 하나의 스케줄러 서버(500)에 대한 제어 정보를 송신할 수 있다. 스케줄러 매니저(100)는 스케줄러 에이전트(300)로부터 적어도 하나의 스케줄러 서버(500)에 대한 제어 결과를 제공받고, 적어도 하나의 스케줄러 서버(500)에 대한 제어 결과를 화면에 표시할 수 있다. 여기서, 제어 결과는 상기 제어 정보에 따라 적어도 하나의 스케줄러 서버(500)를 제어한 결과를 포함할 수 있다.
스케줄러 매니저(100)는 작업, 스케줄러 에이전트(300), 및 복수의 스케줄러 서버들(500a, 500b, 500c)을 관리한다. 사용자는 스케줄러 매니저(100)가 제공하는 화면을 통해 새로운 작업을 생성하고, 새로운 스케줄러 에이전트(300)와 새로운 스케줄러 서버(500)를 등록할 수 있다. 또한, 사용자는 스케줄러 매니저(100)가 제공하는 화면을 통해 기존의 작업, 스케줄러 에이전트(300) 및 스케줄러 서버(500)의 설정을 변경할 수 있다.
스케줄러 매니저(100)는 새롭게 생성된 정보 또는 변경된 정보들을 메타데이터베이스(410)에 저장할 수 있다. 스케줄러 매니저(100)는 새롭게 생성된 정보 또는 변경된 정보가 작업과 관련되는 경우 작업 스토어(420)에도 저장할 수 있다.
스케줄러 에이전트(300)는 스케줄러 매니저(100) 및 복수의 스케줄러 서버들(500a, 500b, 500c)과 연결되어, 스케줄러 매니저(100)에 복수의 스케줄러 서버들(500a, 500b, 500c)의 상태 정보 및 제어 결과를 제공한다.
구체적으로, 스케줄러 에이전트(300)는 복수의 스케줄러 서버들(500a, 500b, 500c) 각각의 상태 정보를 복수의 스케줄러 서버들(500a, 500b, 500c) 각각으로부터 수신하고, 수신된 상태 정보를 저장할 수 있다. 스케줄러 에이전트(300)는 스케줄러 매니저(100)로부터 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보 요청 메시지가 수신되면, 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보를 스케줄러 매니저(100)에 송신할 수 있다.
또한, 스케줄러 에이전트(300)는 스케줄러 매니저(100)로부터 적어도 하나의 스케줄러 서버(500)에 대한 제어 정보가 수신되면, 적어도 하나의 스케줄러 서버(500)에 제어 정보를 전달할 수 있다. 그리고, 스케줄러 에이전트(300)는 적어도 하나의 스케줄러 서버(500)로부터 제어 정보에 따른 제어 결과 수신되면, 수신된 제어 결과를 스케줄러 매니저(100)에 송신할 수 있다.
복수의 스케줄러 서버들(500a, 500b, 500c)은 사용자 요청 또는 스케줄에 따라 작업(job)을 실행한다. 여기서, 작업은 단일 작업뿐만 아니라 일련의 작업들을 하나의 작업 단위로 묶어 연속적으로 일괄 처리하는 배치(batch) 작업도 포함될 수 있다. 이러한 작업은 머신의 별도 프로세스로 실행되며, 프로세스 유형으로 자바(java) 프로세스 또는 echo, Shell, Script 등과 같은 네이티브(native) 프로세스를 포함할 수 있다.
구체적으로, 복수의 스케줄러 서버들(500a, 500b, 500c)은 스케줄러 에이전트(300)를 통해 스케줄러 매니저(100) 또는 사용자 클라이언트(200)의 특정 작업에 대한 실행요청 메시지를 수신할 수 있다. 이러한 경우, 복수의 스케줄러 서버들(500a, 500b, 500c)은 실행 요청된 특정 작업을 실행할 수 있다. 또한, 복수의 스케줄러 서버들(500a, 500b, 500c)은 미리 설정된 시간이나 주기에 따라 작업을 실행할 수 있다.
이러한 복수의 스케줄러 서버들(500a, 500b, 500c)은 물리적으로 2개 이상의 머신에 각각 하나씩 설치될 수 있으며, 이중 적어도 둘 이상의 스케줄러 서버들(500a, 500b)이 클러스터링(clustering)으로 구성될 수 있으나, 반드시 이에 한정되지는 않는다. 한 개의 머신에 2개 이상의 스케줄러 서버들(500a, 500b, 500c)이 설치될 수도 있다.
한편, 도 1에서는 하나의 스케줄러 에이전트(300)만을 도시하고 있으나, 반드시 이에 한정되지는 않는다. 스케줄러 에이전트(300)는 복수개일 수도 있다. 이러한 경우, 복수의 스케줄러 에이전트들(300)은 스케줄러 매니저(100)와 연결될 수 있다. 복수의 스케줄러 에이전트들(300) 각각은 적어도 하나의 스케줄러 서버(500)와 연결될 수 있다. 즉, 복수의 스케줄러 서버들(500) 각각은 복수의 스케줄러 에이전트들(300) 중 어느 하나와 연결될 수 있다.
이하에서는 도 2 및 도 3을 참조하여 스케줄러 매니저(100)에 대하여 보다 구체적으로 살펴보도록 한다.
도 2는 도 1의 스케줄러 매니저의 구성을 보여주는 블록도이고, 도 3은 스케줄러 매니저에서 작업을 등록하는 과정을 설명하기 위한 도면이다.
도 2 및 도 3을 참조하면, 스케줄러 매니저(100)는 대시보드 관리부(110), 자원 관리부(120), 이력 관리부(130) 및 권한 관리부(140)를 포함한다.
대시보드 관리부(110)는 복수의 스케줄러 서버들(500a, 500b, 500c) 각각의 상태 정보를 제공한다. 대시보드 관리부(110)는 사용자에 의하여 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 하나의 스케줄러 서버가 선택되면, 선택된 적어도 하나의 스케줄러 서버의 상태 정보를 화면에 표시할 수 있다. 또한, 대시보드 관리부(110)는 스케줄러 에이전트(300)가 복수개인 경우, 사용자가 선택한 스케줄러 에이전트(300)와 연결된 적어도 하나의 스케줄러 서버(500)의 상태 정보를 화면에 표시할 수 있다. 이때, 스케줄러 서버(500a, 500b, 500c)의 상태 정보는 서버명, 식별정보, CPU 및 메모리의 상태, 작업의 수, 및 실행된 작업의 수 중 적어도 하나를 포함할 수 있다.
또한, 대시보드 관리부(110)는 스케줄러 서버(500a, 500b, 500c)별로 등록된 작업의 상세 정보를 제공할 수 있다. 작업의 상세 정보는 실행주기, 작업명, 저장위치, 파라미터, 실행여부 및 실행시점 중 적어도 하나를 포함할 수 있다.
대시보드 관리부(110)는 사용자에 의하여 적어도 하나의 스케줄러 서버들(500)에 대한 상태 정보 제공 요청이 발생되면, 스케줄러 에이전트(300)에 적어도 하나의 스케줄러 서버들(500)에 대한 상태정보 요청 메시지를 송신할 수 있다. 그리고, 대시보드 관리부(110)는 스케줄러 에이전트(300)로부터 적어도 하나의 스케줄러 서버들(500)에 대한 상태 정보가 수신하고, 이를 화면에 표시할 수 있다.
또한, 대시보드 관리부(110)는 화면을 통해 사용자가 작업의 스케줄 처리여부, 작업의 실행여부를 제어할 수 있도록 한다. 예를 들어, 사용자는 대시보드 관리부(110)가 제공하는 화면을 통해 특정 스케줄러 에이전트(300)에 연결된 적어도 하나의 스케줄러 서버(500)에 할당된 모든 작업을 스케줄 처리하도록 제어하거나 스케줄 처리하지 않도록 제어할 수 있다. 다른 예를 들어, 사용자는 대시보드 관리부(110)가 제공하는 화면을 통해 특정 스케줄러 서버(500)에 할당된 모든 작업을 스케줄 처리하도록 제어하거나 스케줄 처리하지 않도록 제어할 수 있다. 또 다른 예를 들어, 사용자는 대시보드 관리부(110)가 제공하는 화면을 통해 특정 작업을 시작하거나 정지할 수 있다.
대시보드 관리부(110)는 사용자에 의하여 스케줄러 서버(500)에 대한 제어 명령이 발생되면, 스케줄러 에이전트(300)를 통해 스케줄러 서버(500)를 제어할 수 있다. 대시보드 관리부(110)는 스케줄러 에이전트(300)에 제어 메시지를 송신할 수 있다.
자원 관리부(120)는 스케줄러 에이전트(300), 스케줄러 서버(500a, 500b, 500c) 및 작업을 등록 및 관리한다.
자원 관리부(120)는 새로운 스케줄러 에이전트(300)를 등록할 수 있다. 그리고, 자원 관리부(120)는 등록된 스케줄러 에이전트(300)를 관리할 수 있다. 이때, 등록된 스케줄러 에이전트(300)는 하나일 수 있고, 복수개일 수도 있다.
자원 관리부(120)는 새로운 스케줄러 서버(500)를 등록할 수 있다. 자원 관리부(120)는 새로운 스케줄러 서버(500)를 스케줄러 에이전트(300)에 할당할 수 있다. 이때, 스케줄러 에이전트(300)가 복수개인 경우, 자원 관리부(120)는 새로운 스케줄러 서버(500)를 복수의 스케줄러 에이전트들(300) 중 하나에 할당할 수 있다.
자원 관리부(120)는 등록된 스케줄러 서버들(500a, 500b, 500c)을 관리할 수 있다. 자원 관리부(120)는 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 둘 이상의 스케줄러 서버들(500a, 500b)을 클러스터(C)로 구성할 수 있다.
자원 관리부(120)는 새로운 작업을 생성하고, 생성된 작업을 등록할 수 있다. 자원 관리부(120)는 생성된 작업을 복수의 스케줄러 서버들(500) 중 하나에 할당하여 관리할 수 있다.
작업은 정의, 결합, 체인 잡(chain job), 할당 순으로 등록될 수 있다. 보다 구체적으로, 자원 관리부(120)는 도 3에 도시된 바와 같이 작업(Job), 트리거(Trigger), 데이터(Data)를 정의할 수 있다(S121). 여기서, 트리거(Trigger)는 작업(Job)이 언제 실행될지를 나타내는 데이터에 해당한다.
다음, 자원 관리부(120)는 작업(Job)에 적어도 하나의 트리거(Trigger) 및 적어도 하나의 데이터(Data)를 결합할 수 있다(S122). 즉, 자원 관리부(120)는 적어도 하나의 트리거(Trigger) 및 적어도 하나의 데이터(Data)를 특정 작업(Job)에 등록함으로써, 작업(Job)을 생성할 수 있다. 하나의 작업(Job)에는 적어도 하나의 트리거(Trigger) 및 적어도 하나의 데이터(Data)가 포함될 수 있다.
다음, 자원 관리부(120)는 복수의 작업(Job)들을 체인으로 연결할 수 있다(S123). 자원 관리부(120)는 복수의 작업(Job)들을 하나의 작업 단위로 묶어 연속적으로 일괄 처리하는 배치 작업을 생성할 수 있다. 복수의 작업(Job)들을 체인으로 연결하는 과정은 생략될 수 있다.
다음, 자원 관리부(120)는 작업(Job)을 복수의 스케줄러 서버들(500a, 500b, 500c) 중 하나에 할당할 수 있다(S124).
한편, 자원 관리부(120)는 등록된 스케줄러 에이전트(300), 스케줄러 서버(500a, 500b, 500c) 및 작업에 관련된 정보를 메타데이터베이스(410) 및 작업 스토어(420)에 저장할 수 있다. 자원 관리부(120)는 메타데이터베이스(410) 또는 작업 스토어(420)에 저장된 스케줄러 에이전트(300), 스케줄러 서버(500a, 500b, 500c) 및 작업에 관련된 정보를 조회하거나 수정 또는 삭제할 수 있다.
이력 관리부(130)는 복수의 스케줄러 서버들(500a, 500b, 500c) 각각의 실행 이력을 관리할 수 있다. 또한, 이력 관리부(130)는 스케줄러 서버(500a, 500b, 500c)에 포함된 적어도 하나의 작업의 실행 이력 및 실행 로그를 관리할 수 있다.
권한 관리부(140)는 사용자 그룹을 등록하고 권한을 부여한다. 권한 관리부(140)는 새로운 사용자를 생성하고, 생성된 사용자를 복수의 그룹들 중 하나에 할당할 수 있다. 권한 관리부(140)는 그룹 별로 권한을 부여하여 관리할 수 있다.
이하에서는 도 4 및 도 5를 참조하여 스케줄러 에이전트(300)에 대하여 보다 구체적으로 살펴보도록 한다.
도 4는 도 1의 스케줄러 에이전트의 구성을 보여주는 블록도이고, 도 5는 도 4의 에이전트 컨트롤러에서 REST API 처리 예를 보여주는 도면이다.
스케줄러 에이전트(300)는 스케줄러 매니저(100) 및 복수의 스케줄러 서버들(500a, 500b, 500c) 간에 통신하며, 스케줄러 매니저(100)가 복수의 스케줄러 서버들(500a, 500b, 500c)의 상태를 모니터링할 수 있도록 한다. 또한, 스케줄러 에이전트(300)는 스케줄러 매니저(100)가 복수의 스케줄러 서버들(500a, 500b, 500c)를 제어할 수 있도록 한다.
이러한 스케줄러 에이전트(300)는 스케줄러 서버 관리, 작업 실행 요청 처리, 스케줄러 매니저 요청 처리, 데이터 캐시 및 접근 제어를 한다. 구체적으로, 스케줄러 에이전트(300)는 스케줄러 매니저(100)와 스케줄러 서버(500) 사이에서, 스케줄러 매니저(100)의 요청에 따라 스케줄러 서버(500) 관리를 대행하고, 필요한 정보를 스케줄러 매니저(100)에게 제공할 수 있다.
스케줄러 에이전트(300)는 사용자 클라이언트(200)로부터 작업 실행 요청을 수신할 수 있다. 작업 실행 요청이 수신되면, 스케줄러 에이전트(300)는 해당 작업이 실행될 수 있도록 스케줄러 서버(500)에 작업 실행 요청을 전달할 수 있다.
스케줄러 에이전트(300)는 스케줄러 매니저(100)로부터 스케줄러 서버(500) 제어 또는 작업 관리에 대한 요청을 수신할 수 있다. 스케줄러 에이전트(300)는 스케줄러 매니저(100)의 요청에 따라 스케줄러 서버(500)를 제어할 수 있다.
도 4 및 도 5를 참조하면, 스케줄러 에이전트(300)는 IP 필터부(310), 에이전트 컨트롤러(320), 서버 매니저(330), 메타데이터 DAO(340), 캐시 매니저(350) 및 TCP 서버(360)을 포함할 수 있다.
IP 필터부(310)는 스케줄러 매니저(100) 또는 사용자 클라이언트(200)로부터의 접근을 제어한다. 구체적으로, IP 필터부(310)는 스케줄러 매니저(100)로부터의 접근이 정당한 접근인지를 판단할 수 있다. IP 필터부(310)는 스케줄러 매니저(100)가 제공하는 화면에서 로그인을 통하여 정당한 사용자임이 인증되면, 해당 사용자에 의한 접근이 정당한 접근이라 판단할 수 있다.
IP 필터부(310)는 인증된 사용자가 요청한 메시지가 처리될 수 있도록 에이전트 컨트롤러(320)에 전달할 수 있다. 이때, 스케줄러 매니저(100)로부터 수신되는 메시지는 스케줄러 서버(500)에 대한 상태 정보 요청 메시지, 스케줄러 서버(500)에 대한 제어 메시지, 작업에 대한 상태 정보 요청 메시지, 작업 관리에 관한 메시지 중 하나일 수 있으며, 스케줄러 서버(500)를 식별할 수 있는 식별정보 또는 작업을 식별할 수 있는 작업 키 정보를 포함할 수 있다.
또한, IP 필터부(310)는 사용자 클라이언트(200)로부터의 접근이 정당한 접근인지를 판단할 수 있다. IP 필터부(310)는 사용자 클라이언트(200)로부터 메시지가 수신되면, 수신된 요청 메시지의 IP를 확인하여 정당한 접근인지를 판단할 수 있다. IP 필터부(310)는 정당한 접근이라 판단되면, 사용자 클라이언트(200)가 요청한 메시지가 처리될 수 있도록 에이전트 컨트롤러(320)에 전달할 수 있다. 이때, 사용자 클라이언트(200)로부터 수신되는 메시지는 특정 작업에 대한 실행을 요청하는 메시지일 수 있으며, 작업을 식별할 수 있는 작업 키 정보를 포함할 수 있다.
스케줄러 에이전트(300)는 IP 필터부(310)를 통해 스케줄러 매니저(100)와 지정된 사용자 클라이언트(200)에 한하여 연결을 허용할 수 있다.
에이전트 컨트롤러(320)는 스케줄러 매니저(100) 또는 사용자 클라이언트(200)로부터 수신된 메시지에 대응되는 요청을 특정한다. 일 예로, 스케줄러 매니저(100) 또는 사용자 클라이언트(200)로부터 수신된 메시지는 REST(Representational State Transfer) API 방식일 수 있으며, 인터넷 식별자(URI)와 HTTP 프로토콜을 포함할 수 있다. 이러한 경우, 에이전트 컨트롤러(320)는 도 5에 도시된 바와 같이 REST API를 처리할 수 있다. 에이전트 컨트롤러(320)는 메시지가 스케줄러 서버(500)에 전달될 수 있도록 서버 매니저(330)로 전달할 수 있다.서버 매니저(330)는 복수의 스케줄러 서버들(500a, 500b, 500c)과 연결되어, 연결된 복수의 스케줄러 서버들(500a, 500b, 500c)을 관리한다.
서버 매니저(330)는 스케줄러 매니저(100) 또는 사용자 클라이언트(200)로부터 수신된 메시지가 제어 정보 제공 요청인 경우, 메시지에 포함된 제어 정보를 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 하나의 스케줄 서버(500)에 제공할 수 있다.
일 예로, 서버 매니저(330)는 메시지에 포함된 작업 키 정보를 기초로 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 하나의 스케줄러 서버(500)를 선정할 수 있다. 서버 매니저(330)는 작업 키 정보에 대응되는 작업이 할당된 스케줄러 서버(500)를 선정할 수 있다.
다른 예로, 서버 매니저(330)는 요청 메시지에 포함된 스케줄러 서버의 식별정보를 기초로 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 하나의 스케줄러 서버(500)를 선정할 수 있다. 서버 매니저(330)는 스케줄러 서버의 식별정보 대응되는 스케줄러 서버(500)를 선정할 수 있다.
서버 매니저(330)는 선정된 스케줄러 서버(500)에 해당 요청 메시지를 전달할 수 있다.
한편, 서버 매니저(330)는 스케줄러 매니저(100)로부터 수신된 요청 메시지가 특정 작업에 대한 스케줄 등록을 요청하는 메시지인 경우, 메타데이터 DAO(340)를 통하여 메타데이터베이스(410)에 저장된 작업 정보를 읽어올 수 있다. 서버 매니저(330)는 메타데이터 DAO(340)를 통하여 읽어온 작업 정보를 기초로 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 하나의 스케줄러 서버(500)를 선정할 수 있다. 서버 매니저(330)는 선정된 스케줄 서버(500)에 해당 요청 메시지를 전달할 수 있다.
한편, 서버 매니저(330)는 스케줄러 매니저(100)로부터 수신된 요청 메시지가 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보를 요청하거나 적어도 하나의 작업에 대한 상태 정보를 요청하는 메시지인 경우 해당 요청 메시지를 스케줄러 서버(500)에 전달하지 않을 수도 있다. 서버 매니저(330)는 캐시 매니저(350)에 저장된 적어도 하나의 스케줄러 서버(500)에 대한 상태 정보 또는 적어도 하나의 작업에 대한 상태 정보를 스케줄러 매니저(100)에게 제공할 수 있다.
캐시 매니저(350)는 복수의 스케줄러 서버들(500a, 500b, 500c) 각각의 상태 정보 및 작업 정보를 캐시(cache) 처리한다. 캐시 매니저(350)는 TCP 서버(360)를 통하여 복수의 스케줄러 서버들(500a, 500b, 500c)과 연결될 수 있다. 캐시 매니저(350)는 주기적으로 복수의 스케줄러 서버들(500a, 500b, 500c) 각각으로부터 상태 정보 및 작업 정보를 수집하고, 이를 캐시 메모리(cache memory)에 저장할 수 있다. 또한, 캐시 매니저(350)는 메타데이터베이스(410)에 저장된 메타데이터를 조회하여 캐시 처리할 수도 있다.
이하에서는 도 6 내지 도 8을 참조하여 스케줄러 서버(500)에 대하여 보다 구체적으로 살펴보도록 한다.
도 6은 도 1의 스케줄러 서버의 구성을 보여주는 블록도이고, 도 7은 도 6의 서버 컨트롤러에서 REST API 처리 예를 보여주는 도면이며, 도 8은 도 6의 스케줄러 및 작업 실행부의 구성을 보여주는 블록도이다.
스케줄러 서버(500)는 트리거(Trigger)에 의한 요청 또는 사용자 클라이언트(200)로부터의 작업 실행 요청에 의하여 작업을 실행한다.
구체적으로, 스케줄러 서버(500)는 스케줄러 에이전트(300)에 연결되어, 스케줄러 에이전트(300)를 통해 사용자 클라이언트(200)로부터 특정 작업에 대한 실행을 요청하는 메시지를 수신할 수 있다. 작업 실행 요청 메시지가 수신되면, 스케줄러 서버(500)는 해당 작업을 실행할 수 있다. 또한, 스케줄러 서버(500)는 작업에 등록된 트리거(Trigger)에 상응하는 시간에 해당 작업을 실행할 수 있다.
한편, 스케줄러 서버(500)는 주기적으로 서버의 상태 정보 및 작업 실행 정보를 스케줄러 에이전트(300)에 제공한다. 서버의 상태 정보는 서버명, 식별정보, CPU 및 메모리의 상태, 작업의 수, 실행된 작업의 수를 포함할 수 있으며, 작업 실행 정보는 등록된 작업에 대한 정보 및 실행된 작업에 대한 정보를 포함할 수 있다.
본 발명의 일 실시예에 따른 스케줄 서버 시스템(100)은 스케줄러 서버(500)가 복수개일 수 있으며, 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 둘 이상의 스케줄러 서버(500a, 500b)를 클러스터(C)로 구성할 수 있다. 이를 통해, 본 발명의 일 실시예에 따른 스케줄 서버 시스템(100)은 머신의 CPU 및 메모리가 증가되는 효과를 가질 수 있다.
각각의 스케줄러 서버(500)는 도 6에 도시된 바와 같이 접근 필터부(510), 서버 컨트롤러(520), 스케줄러(530), 작업 실행부(540), 상태 모니터링부(550) 및 저장소(560)를 포함할 수 있다.
접근 필터부(510)는 스케줄러 에이전트(300)로부터의 접근을 제어한다. 구체적으로, 접근 필터부(510)는 스케줄러 에이전트(300)로부터의 접근이 정당한 접근인지를 판단할 수 있다.
일 예로, 접근 필터부(510)는 연결 토큰(connection token)을 이용하여 스케줄러 에이전트(300)로부터의 접근이 정당한 접근인지를 판단할 수 있다. 스케줄러 에이전트(300)와 스케줄러 서버(500)는 Netty 엔진을 사용하고, REST API를 통해 통신이 이루어질 수 있다. 이러한 경우, 스케줄러 에이전트(300)는 스케줄러 매니저(100) 또는 사용자 클라이언트(200)로부터 메시지가 수신되면, 연결 토큰과 함께 REST API 호출을 통해 메시지를 전달할 수 있다. 이때, 스케줄러 서버(500)의 접근 필터부(510)는 연결 토큰이 유효한지 판단하고, 유효하다면 정당한 접근이라 판단할 수 있다. 접근 필터부(510)는 스케줄러 매니저(100) 또는 사용자 클라이언트(200)로부터 수신된 메시지가 처리될 수 있도록 서버 컨트롤러(520)에 전달할 수 있다.
서버 컨트롤러(520)는 스케줄러 에이전트(300)로부터 수신된 메시지에 대응되는 요청을 특정한다. 일 예로, 스케줄러 에이전트(300)로부터 수신된 메시지는 REST(Representational State Transfer) API 방식일 수 있으며, 인터넷 식별자(URI)와 HTTP 프로토콜을 포함할 수 있다. 이러한 경우, 서버 컨트롤러(520)는 도 7에 도시된 바와 같이 REST API를 처리할 수 있다. 서버 컨트롤러(520)는 메시지를 스케줄러(530)에게 전달할 수 있다.
서버 컨트롤러(520)는 스케줄러 에이전트(300)로부터 제어 정보가 포함된 제어 메시지가 수신되면, 제어 메시지의 제어 정보를 기초로 적어도 하나의 작업에 대한 제어 요청을 특정할 수 있다. 서버 컨트롤러(520)는 적어도 하나의 작업에 대한 제어 요청에 상응하는 제어 명령을 스케줄러(530)에 전달할 수 있다.
스케줄러(530)는 스케줄러 서버(500)에 할당된 작업을 처리한다. 스케줄러(530)는 정해진 시간이 도래하거나 작업 실행 요청이 발생되면 해당 작업을 처리한다.
구체적으로, 스케줄러(530)는 작업에 등록된 트리거(Trigger)에 상응하는 시간이 도래하면, 저장소(260)을 통하여 메타데이터베이스(410)에서 해당 작업과 관련된 메타 데이터를 가져오고 작업 스토어(420)에서 해당 작업에 대한 상세 정보를 가져올 수 있다. 스케줄러(530)는 해당 작업과 관련된 메타 데이터 및 해당 작업에 대한 상세 정보를 이용하여 작업프로세스를 생성할 수 있다. 스케줄러(530)는 생성된 작업프로세스를 작업 실행부(540)로 보낼 수 있다.
또한, 스케줄러(530)는 스케줄러 에이전트(300)로부터 특정 작업에 대한 실행을 요청하는 메시지가 수신되면, 특정 작업을 즉시 실행할지 여부를 판단할 수 있다. 즉시 실행될 경우, 스케줄러(530)는 저장소(260)을 통하여 메타데이터베이스(410)에서 해당 작업과 관련된 메타 데이터를 가져오고 작업 스토어(420)에서 해당 작업에 대한 상세 정보를 가져올 수 있다. 스케줄러(530)는 해당 작업과 관련된 메타 데이터 및 해당 작업에 대한 상세 정보를 이용하여 작업 프로세스를 생성할 수 있다. 스케줄러(530)는 생성된 작업 프로세스를 작업 실행부(540)로 보낼 수 있다.
작업 실행부(540)는 스케줄러(530)로부터 입력된 순서대로 작업을 실행한다. 이를 위하여, 작업 실행부(540)는 TaskDecorator(541), 작업큐(542) 및 쓰레드 풀(Thread Pool, 543)을 포함하며, 쓰레드 풀(543)은 복수의 쓰레드들(543a, 543b, 543c, 543d)를 포함할 수 있다.
스케줄러(530)는 작업을 실행하기 위한 작업 프로세스를 TaskDecorator(541)를 통하여 작업큐(542)에 입력할 수 있다. 작업큐(542)에 입력된 작업 프로세스들은 입력된 순서대로 쓰레드 풀(543)에 포함된 쓰레드 (543a, 543b, 543c, 543d)에 할당될 수 있다. 작업 프로세스가 입력된 쓰레드 (543a, 543b, 543c, 543d)는 작업 유형에 따라 실행환경을 설정하고 해당 작업을 실행할 수 있다. 작업 유형은 Java job이거나 Native Job일 수 있다. 한편, 쓰레드 풀(543)에 들어가지 못한 작업 프로세스들은 작업큐(542)에서 대기할 수 있다.
작업 실행부(540)는 작업큐(542)에서 대기하는 작업 프로세스의 수가 임계값을 초과하면, 쓰레드 풀(543)의 사이즈를 증가시킬 수 있다. 예를 들면, 쓰레드 풀(543)은 도 8에 도시된 바와 같이 4개의 쓰레드들(543a, 543b, 543c, 543d)을 포함하는 사이즈(A)를 가질 수 있다. 작업큐(542)은 최대 3개의 작업 프로세스가 입력될 수 있다. 이때, 쓰레드 풀(543)의 4개의 쓰레드들(543a, 543b, 543c, 543d) 모두에서 작업 프로세스들이 실행되고 있으며, 작업큐(542)에 3개의 작업 프로세스가 대기하는 경우, 작업 실행부(540)는 쓰레드 풀(543)의 사이즈를 증가시킬 수 있다. 작업 실행부(540)는 2개의 쓰레드 풀(543)에 쓰레드들(543e, 543f)을 추가할 수 있다. 이에 따라, 쓰레드 풀(543)은 6개의 쓰레드들(543a, 543b, 543c, 543d, 543e, 543f)을 포함하는 사이즈(B)를 가질 수 있다. 그리고, 작업 실행부(540)는 작업큐(542)에서 대기 중인 2개의 작업 프로세스를 추가된 쓰레드들(543e, 543f)에서 실행시킬 수 있다.
작업 실행부(540)는 실행이 완료된 작업 프로세스를 삭제함으로써, 작업큐(542)에서 대기 중인 작업 프로세스가 쓰레드 풀(543)에서 실행될 수 있도록 한다.
상태 모니터링부(550)는 해당 스케줄러 서버(500)의 상태를 모니터링한다. 구체적으로, 상태 모니터링부(550)는 해당 스케줄러 서버(500)의 상태를 주기적으로 모니터링하고, 해당 스케줄러 서버(500)에 대한 상태 정보를 생성할 수 있다. 해당 스케줄러 서버(500)에 대한 상태 정보는 CPU 및 메모리의 상태, 작업의 수, 및 실행된 작업의 수 중 적어도 하나를 포함할 수 있다. 상태 모니터링부(550)는 해당 스케줄러 서버(500)에 대한 상태 정보를 저장소(560)에 저장할 수 있다. 저장소(560)는 수집된 상태 정보를 서버명, 식별정보와 함께 메타데이터베이스(410)에 저장할 수 있다.
상태 모니터링부(550)는 스케줄러(530)를 모니터링하고, 스케줄러(530)에서 처리되는 작업의 실행 정보를 생성할 수 있다. 상태 모니터링부(550)는 작업의 실행 정보를 저장소(560)를 통해 메타데이터베이스(410)에 저장할 수 있다.
본 발명에 따른 스케줄 서버 시스템(100)은 스케줄러 매니저(100), 스케줄러 에이전트(300) 및 복수의 스케줄러 서버들(500a, 500b, 500c)로 구성되는 것을 특징으로 한다. 본 발명에 따른 스케줄 서버 시스템(100)은 스케줄러 매니저(100)가 복수의 스케줄러 서버들(500a, 500b, 500c)에 각각 연결되는 것이 아니라, 스케줄러 에이전트(300)를 통해 복수의 스케줄러 서버들(500a, 500b, 500c)를 모니터링 및 제어할 수 있다.
본 발명에 따른 스케줄 서버 시스템(100)은 스케줄러 에이전트(300)가 복수의 스케줄러 서버들(500a, 500b, 500c)에 연결되어 복수의 스케줄러 서버들(500a, 500b, 500c)의 상태 및 작업 실행여부를 모니터링할 수 있다. 스케줄러 에이전트(300)는 스케줄러 매니저(100)과 연결되어 스케줄러 매니저(100)의 요청에 따라 복수의 스케줄러 서버들(500a, 500b, 500c)의 상태 정보를 제공할 수 있다. 본 발명에 따른 스케줄 서버 시스템(100)은 스케줄러 매니저(100)가 복수의 스케줄러 서버들(500a, 500b, 500c) 각각에 상태 정보를 요청할 필요가 없다. 본 발명에 따른 스케줄 서버 시스템(100)은 스케줄러 에이전트(300)를 통해 복수의 스케줄러 서버들(500a, 500b, 500c)의 통합 관리가 가능하므로, 시스템의 효율성이 향상될 수 있다.
또한, 본 발명에 따른 스케줄 서버 시스템(100)은 복수의 스케줄러 서버들(500a, 500b, 500c)이 스케줄러 매니저(100)로부터의 상태 정보 요청 또는 작업 실행 정보 요청에 응답할 필요가 없다. 스케줄러 에이전트(300)는 스케줄러 매니저(100)로부터의 상태 정보 요청 또는 작업 실행 정보 요청을 스케줄러 서버(500)에 전달하지 않을 수 있다. 스케줄러 에이전트(300)는 캐시 매니저(350)에 의하여 저장된 스케줄러 서버(500)에 대한 상태 정보 및 작업 실행 정보를 스케줄러 매니저(100)에게 제공할 수 있다. 이에 따라, 본 발명에 따른 스케줄 서버 시스템(100)은 복수의 스케줄러 서버들(500a, 500b, 500c)이 작업 처리에만 집중할 수 있도록 한다.
또한, 본 발명에 따른 스케줄 서버 시스템(100)은 복수의 스케줄러 서버들(500a, 500b, 500c) 중 적어도 일부를 클러스터로 구성할 수 있다. 이에 따라, 본 발명에 따른 스케줄 서버 시스템(100)은 머신의 CPU 및 메모리가 증가되는 효과를 가질 수 있다. 더 나아가, 본 발명에 따른 스케줄 서버 시스템(100)은 작업량이 기준치 이상이 되는 경우 스케줄러 매니저(100)에 새로운 스케줄러 서버를 간단하게 등록할 수 있다. 즉, 본 발명에 따른 스케줄 서버 시스템(100)은 서버 확장이 용이하다.
또한, 본 발명에 따른 스케줄 서버 시스템(100)은 동시 처리되는 쓰레드의 수를 효율적으로 관리함으로써, 스케줄에 따른 작업이 쓰레드를 할당 받지 못하고 건너 뛰는(misfire) 것을 방지할 수 있다.
본 발명이 속하는 기술분야의 당업자는 상술한 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.
그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 스케줄 서버 시스템 100: 스케줄러 매니저
200: 사용자 클라이언트 300: 스케줄러 에이전트
410: 메타데이터베이스 420: 작업 스토어
500: 스케줄러 서버

Claims (11)

  1. 클러스터링 구조로 구성된 복수의 스케줄러 서버들;
    상기 복수의 스케줄러 서버들 중 적어도 하나에 대한 제어정보를 제공하고, 상기 복수의 스케줄러 서버들 중 적어도 하나에 대한 상태 정보를 요청하는 스케줄러 매니저; 및
    상기 스케줄러 매니저로부터 제어 정보 제공이 요청되면 상기 제어 정보를 해당 스케줄러 서버에 제공하고, 상기 스케줄러 매니저로부터 적어도 하나의 스케줄러 서버에 대한 상태 정보가 요청되면 상기 적어도 하나의 스케줄러 서버로부터 수집한 상태 정보를 상기 스케줄러 매니저에 제공하는 스케줄러 에이전트를 포함하고,
    상기 복수의 스케줄러 서버들 각각은,
    상기 스케줄러 에이전트로부터 상기 제어 정보가 포함된 메시지가 수신되면, 상기 수신된 메시지에 포함된 연결 토큰이 유효한지 확인하여 상기 스케줄러 에이전트의 접근을 인가하는 접근 필터부;
    상기 접근 인가된 스케줄러 에이전트로부터 수신된 메시지의 제어 정보를 기초로 적어도 하나의 작업에 대한 제어 명령을 생성하는 서버 컨트롤러;
    정해진 시간이 도래하거나 상기 제어 명령에 따라 적어도 하나의 작업에 대한 작업 프로세스를 생성하는 스케줄러; 및
    상기 스케줄러로부터 상기 적어도 하나의 작업 프로세스가 입력되면, 상기 적어도 하나의 작업 프로세스를 입력된 순서로 실행하는 작업 실행부를 포함하는 스케줄러 서버 시스템.
  2. 제1항에 있어서,
    상기 스케줄러 에이전트는 복수개이고,
    상기 복수의 스케줄러 서버들 각각은 상기 복수의 스케줄러 에이전트들 중 어느 하나와 연결되고, 연결된 스케줄러 에이전트에 주기적으로 상태 정보 및 작업 실행 정보를 제공하는 스케줄러 서버 시스템.
  3. 제2항에 있어서,
    상기 스케줄러 매니저는 새로운 스케줄러 서버가 등록되면 등록된 스케줄러 서버를 상기 복수의 스케줄러 에이전트들 중 어느 하나에 할당하는 스케줄러 서버 시스템.
  4. 제1항에 있어서,
    상기 스케줄러 에이전트는,
    상기 스케줄러 매니저로부터 메시지가 수신되면, 상기 수신된 메시지에 포함된 IP 또는 로그인 정보를 기초로 정당한 접근인지를 확인하고, 정당한 접근이면 상기 스케줄러 매니저의 접근을 인가하는 IP 필터부;
    상기 접근이 인가된 스케줄러 매니저로부터 수신된 메시지에 대응되는 요청을 특정하는 에이전트 컨트롤러; 및
    상기 에이전트 컨트롤러에 의하여 제어 정보 제공 요청이 특정되면, 상기 수신된 메시지에 포함된 제어 정보를 상기 복수의 스케줄러 서버들 중 적어도 하나에 제공하는 서버 매니저를 포함하는 스케줄러 서버 시스템.
  5. 제4항에 있어서,
    상기 메시지는 작업을 식별하기 위한 작업 키 정보를 포함하고,
    상기 서버 매니저는 상기 작업 키 정보에 대응되는 작업이 할당된 스케줄러 서버에 상기 제어 정보를 제공하는 스케줄러 서버 시스템.
  6. 제4항에 있어서,
    상기 스케줄러 에이전트는,
    상기 복수의 스케줄러 서버들 각각의 상태 정보를 캐시 처리하는 캐시 매니저를 더 포함하고,
    상기 서버 매니저는 상기 에이전트 컨트롤러에 의하여 상기 적어도 하나의 스케줄러 서버에 대한 상태 정보 요청이 특정되면, 상기 캐시 매니저에 저장된 상기 적어도 하나의 스케줄러 서버에 대한 상태 정보를 상기 스케줄러 매니저에 제공하는 스케줄러 서버 시스템.
  7. 제1항에 있어서,
    특정 작업에 대한 작업 실행 정보를 상기 스케줄러 에이전트에 제공하는 사용자 클라이언트를 더 포함하고,
    상기 스케줄러 에이전트는 상기 사용자 클라이언트로부터 특정 작업에 대한 작업 실행 정보 제공이 요청되면, 상기 특정 작업이 할당된 스케줄러 서버를 선정하고, 상기 선정된 스케줄러 서버에 상기 특정 작업에 대한 작업 실행 정보를 제공하는 스케줄러 서버 시스템.
  8. 제1항에 있어서,
    상기 스케줄러 에이전트는 새로운 작업에 대한 스케줄 등록이 요청되면, 상기 새로운 작업이 할당된 스케줄러 서버에 상기 새로운 작업에 대한 스케줄 등록을 요청하는 스케줄러 서버 시스템.
  9. 삭제
  10. 제1항에 있어서,
    상기 작업 실행부는,
    상기 스케줄러로부터 입력되는 작업 프로세스를 저장하는 작업큐; 및
    상기 작업 프로세스를 실행하기 위한 복수의 쓰레드들을 포함하고, 상기 작업큐에 포함된 작업 프로세스를 입력된 순서대로 읽어와서 상기 복수의 쓰레드들 중 적어도 하나에 할당하는 쓰레드 풀을 포함하고,
    상기 작업 실행부는 상기 작업큐에 대기 중인 작업 프로세스의 수가 임계값을 초과하면, 상기 쓰레드 풀에 포함된 쓰레드의 수를 증가시키는 스케줄러 서버 시스템.
  11. 제1항에 있어서,
    상기 복수의 스케줄러 서버들 각각은,
    해당 스케줄러 서버의 상태를 모니터링하여 상태 정보를 생성하고, 상기 생성된 상태 정보를 메타데이터베이스에 저장하는 상태 모니터링부를 더 포함하고,
    상기 스케줄러 에이전트는 상기 스케줄러 매니저로부터 상기 적어도 하나의 스케줄러 서버에 대한 상태 정보가 요청되면, 상기 메타데이터베이스에 저장된 상기 적어도 하나의 스케줄러 서버에 대한 상태 정보를 상기 스케줄러 매니저에 제공하는 스케줄러 서버 시스템.
KR1020200034906A 2019-12-31 2020-03-23 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템 KR102335687B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190179766 2019-12-31
KR20190179766 2019-12-31

Publications (2)

Publication Number Publication Date
KR20210086391A KR20210086391A (ko) 2021-07-08
KR102335687B1 true KR102335687B1 (ko) 2021-12-06

Family

ID=76894165

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200034906A KR102335687B1 (ko) 2019-12-31 2020-03-23 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템

Country Status (1)

Country Link
KR (1) KR102335687B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018018171A (ja) 2016-07-25 2018-02-01 富士通株式会社 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101796409B1 (ko) * 2013-12-13 2017-11-09 후아웨이 테크놀러지 컴퍼니 리미티드 스케줄링 방법, 장치 및 시스템
KR20150085309A (ko) * 2014-01-15 2015-07-23 한국전자통신연구원 서버 가상 머신 제공 방법 및 시스템과 이를 지원하는 서버 장치
CN112118216A (zh) * 2015-01-16 2020-12-22 三星电子株式会社 无线通信系统中的控制信息传输方法和装置
KR101953906B1 (ko) * 2016-04-11 2019-06-12 한국전자통신연구원 태스크 스케줄링 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018018171A (ja) 2016-07-25 2018-02-01 富士通株式会社 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム

Also Published As

Publication number Publication date
KR20210086391A (ko) 2021-07-08

Similar Documents

Publication Publication Date Title
US10430332B2 (en) System and method for performance tuning of garbage collection algorithms
US8566463B2 (en) Concurrent web based multi-task support for control management system
US7779416B2 (en) Load balance control method and load balance control apparatus in data-processing system
CN101533417B (zh) 一种实现etl调度的方法及系统
US5870604A (en) Job execution processor changing method and system, for load distribution among processors
US8112526B2 (en) Process migration based on service availability in a multi-node environment
US7085831B2 (en) Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client
CN110069329A (zh) 一种任务处理方法、装置、服务器及存储介质
CN106557369A (zh) 一种多线程的管理方法及系统
JP2010517198A (ja) 分散タスクシステムおよび分散タスク管理方法
JP2011176814A (ja) 構成可能な実行可能アプリケーションを用いた遠隔技術サポート
CN102497453A (zh) 远端程序的调用装置和调用方法
CN110458468A (zh) 一种任务处理方法、装置、电子设备及存储介质
CN110795241A (zh) 一种作业调度管理方法、调度中心和系统
US9104486B2 (en) Apparatuses, systems, and methods for distributed workload serialization
CN112052068A (zh) 一种Kubernetes容器平台CPU绑核的方法与装置
JP2004110318A (ja) 階層的分散処理システムおよび階層的分散処理方法
US20090319662A1 (en) Process Migration Based on Exception Handling in a Multi-Node Environment
KR101090890B1 (ko) 분산 서버 기반의 그리드 시스템 및 동작 방법
KR102335687B1 (ko) 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템
JP2012022555A (ja) サーバ構成管理システム
JP5879117B2 (ja) 情報処理システムおよび運用管理方法
JP5287623B2 (ja) 仮想サーバ管理システム、画像処理システム、仮想サーバ管理装置及び制御プログラム
US11275621B2 (en) Device and method for selecting tasks and/or processor cores to execute processing jobs that run a machine
EP1611523A2 (en) Controlling usage of system resources by a network manager

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant