KR101648568B1 - 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템 - Google Patents

분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템 Download PDF

Info

Publication number
KR101648568B1
KR101648568B1 KR1020160028529A KR20160028529A KR101648568B1 KR 101648568 B1 KR101648568 B1 KR 101648568B1 KR 1020160028529 A KR1020160028529 A KR 1020160028529A KR 20160028529 A KR20160028529 A KR 20160028529A KR 101648568 B1 KR101648568 B1 KR 101648568B1
Authority
KR
South Korea
Prior art keywords
server
client
specific
communication
cluster
Prior art date
Application number
KR1020160028529A
Other languages
English (en)
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 주식회사 티맥스 소프트
Priority to KR1020160028529A priority Critical patent/KR101648568B1/ko
Priority to US15/140,823 priority patent/US10158704B2/en
Application granted granted Critical
Publication of KR101648568B1 publication Critical patent/KR101648568B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer

Abstract

본 발명은 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 분산 시스템에 관한 것이다. 본 발명의 일 태양에 따르면, 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법에 있어서, (a) 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버가, 상기 클라이언트와 상기 특정 서버 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하는 단계; 및 (b) 상기 특정 서버는, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 단계; 를 포함하는 방법이 제공된다.

Description

분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템{METHOD FOR USING DISTRIBUTED OBJECTS BY CLUSTERING THEM AND SYSTEM USING THE SAME}
본 발명은 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 분산 시스템에 관한 것이다. 보다 상세하게는, Java에서 여러 기기 또는 VM(Virtual Machine)에 분산되어 있는 객체들을 클러스터링하여 마치 하나의 객체처럼 활용하기 위한 방법 및 시스템에 관한 것이다.
웹이 발전하면서 서버에 접속하는 사용자 수도 급속도로 증가했으며. 하나의 서버만으로는 기하급수적으로 증가하는 사용자를 감당할 수 없기 때문에 동일한 서비스를 여러 개의 서버에서 구동시켜 부하를 분산시키는 기술이 필요하게 되었다. 이렇게 동일한 서비스를 제공하는 여러 개 서버의 묶음을 통해 부하를 분산시키는 기술을 클러스터링 기술이라 한다.
분산 객체는 여러 기기 또는 VM에 분산되어 있는 객체를 말하는데, 일반적으로 분산객체는 클라이언트(사용자) 입장에서는 하나의 객체로 보이지만, 실제로는 여러 서버에서 동작하는 객체이며, 클라이언트가 서버의 자원을 활용할 수 있도록 지원한다.
이러한 분산 객체를 사용하는 도중, 기기 또는 소프트웨어 로직의 결함으로 인하여 분산 객체가 사용 불능 상태가 되면, 사용 가능한 다른 객체를 사용하는 것을 장애 극복(failover)이라고 하며, 부하가 하나의 객체에 집중되지 않도록 분산시켜 주는 것을 부하 분산(Load balancing)이라고 하는데, 장애 극복과 부하 분산은 클러스터링 기술을 통해 구현될 수 있다.
RMI(Remote Method Invocation)는 서로 다른 가상 기계에 존재하는 객체를 호출하고 객체를 활용할 수 있게 하는 기술이나, RMI는 1:1 상황에서의 서비스만을 명시하고 있으며 클러스터링과 관련된 기술에 대한 명시는 없으므로, 분산 객체에 활용하기에는 충분치 않다. 또한, CORBA(Common Object Request Broker Architecture)는 분산 객체 환경에서 객체 간의 통신을 처리하는 기술로, 자바를 벗어나 다양한 언어들 간의 객체 통신을 명시하고 있으나, 장애 극복이나 부하 분산에 대한 구체적인 사항을 명시하고 있지는 않다.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 분산 객체를 활용할 때 필요한 통신 객체 및 최소한의 자원만을 활용할 수 있도록 필요한 동작 로직만 클라이언트에게 제공하여 분산 객체 시스템을 구축함으로써, 네트워크 부하를 감소시키는 것을 다른 목적으로 한다.
또한, 본 발명은 목적은 자바 서버에서 분산 객체를 활용함에 있어서, 장애 복구와 부하 분산을 지원하면서, 클라이언트가 서비스를 사용할 때 클러스터링된 서버의 내부 로직을 전혀 모르는 상태에서 마치 하나의 객체를 사용하고 있는 것처럼 서비스가 가능하도록 하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법에 있어서, (a) 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버가, 상기 클라이언트와 상기 특정 서버 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하는 단계; 및 (b) 상기 특정 서버는, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 단계; 를 포함하는 방법이 제공된다.
본 발명의 다른 태양에 따르면, 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 서버 시스템에 있어서, 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버와 상기 클라이언트의 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하고, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 상기 특정 서버의 통신부; 및 상기 특정 서버의 프로세서; 를 포함하는 서버 시스템이 제공된다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법에 있어서, (a) 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버가, 상기 클라이언트와 상기 특정 서버 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하는 단계; 및 (b) 상기 특정 서버는, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 단계; 를 포함하는 방법이 제공된다.
본 발명의 다른 태양에 따르면, 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 서버 시스템에 있어서, 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버와 상기 클라이언트의 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하고, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 상기 특정 서버의 통신부; 및 상기 특정 서버의 프로세서; 를 포함하는 서버 시스템이 제공된다.
도 1은 본 발명의 일 실시예에 따라 분산된 객체를 하나의 객체처럼 사용하기 위한 전체 시스템의 개략적인 구성을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 분산 시스템의 구성을 예시적으로 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따라 동일 서버에 분산 객체가 있을 때 분산 객체를 활용하는 것을 예시적으로 설명하기 위한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따라 분산된 객체를 하나의 객체처럼 사용하기 위한 전체 시스템의 개략적인 구성을 나타내는 도면이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 전체 시스템은 클라이언트(100), 서버(200) 및 통신망(300)을 포함하여 구성될 수 있다.
먼저, 본 발명의 일 실시예에 따른 클라이언트(100)는 서버(200)에 접속한 후 통신할 수 있는 기능을 포함하는 디지털 기기로서, 데스크탑 컴퓨터, 노트북 컴퓨터, 워크스테이션, PDA, 웹 패드, 이동 전화기 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 디지털 기기라면 얼마든지 본 발명에 따른 클라이언트(100)로서 채택될 수 있다. 특히, 클라이언트(100)는 서버(200)에 존재하는 분산 객체(원격 객체)를 이용하기 위한 통신 객체를 서버(200)로부터 획득할 수 있는데, 분산 객체란 클라이언트(100)가 원격으로 접근 가능한 객체로 서버(200)에 존재하는 객체를 의미한다.
다음으로, 본 발명의 일 실시예에 따른 서버(200)는 클라이언트(100)가 접근하여 사용하고자 하는 분산 객체를 적어도 하나 이상 포함할 수 있으며, 본 발명의 일 실시예에 따른 클러스터에는 서버(200)가 복수 개 포함될 수 있다. 클러스터 내의 복수의 서버는 유사한 기능을 수행하는 분산 객체를 각각 포함할 수 있어, 클러스터 내의 어느 한 서버에 장애가 발생하는 경우 정상적으로 작동하는 다른 서버를 통해 서비스를 계속적으로 제공할 수 있다.
본 발명에 따른 서버(200)의 구성과 기능에 관하여는 아래의 상세한 설명을 통하여 자세하게 알아보기로 한다.
한편, 본 발명의 일 실시예에 따른 통신망(300)은 유선 또는 무선 통신의 양태로 구성될 수 있으며 WAN(Wide Area Network), LAN(Local Area Network), 이동 통신망, 인공 위성 통신망 등 다양한 통신망으로 구성될 수 있다. 보다 구체적으로, 본 발명에서 말하는 통신망(300)은 IEEE 802.11, CDMA(Code Division Multiple Access), WCDMA(Wideband Code Division Multiple Access), GSM(Global System for Mobile communications), LTE(Long Term Evolution) 등의 기술에 의하여 구현되는 무선 통신망을 포함할 수도 있다. 그러나, 통신망(300)은, 굳이 이에 국한될 필요 없이, 공지의 유무선 통신망 등을 적어도 일부에 있어서 포함할 수도 있다.
도 2는 본 발명의 일 실시예에 따른 분산 시스템의 구성을 예시적으로 나타내는 도면이다. 도 2에서는 제1 서버(S1, 200a), 제2 서버(S2, 200b), 제3 서버(S3, 200c)이 클러스터에 포함되는 것을 예시적으로 나타내었다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 클러스터에는 복수 개의 서버(S1, S2, S3)가 포함될 수 있으며, 각각의 서버(S1, S2, S3)는 통신부(210a, 210b, 210c) 및 프로세서(220a, 220b, 220c)를 포함하여 구성될 수 있다. 여기서, 통신부 및 프로세서가 전부 분산 시스템에 물리적으로 포함되어 있어야 하는 것은 아니며, 분산 시스템과 연동하는 외부에 위치할 수도 있을 것이다. 한편, 본 발명의 일 실시예에 따르면, 통신부 및 프로세서는 그 중 적어도 일부가 클라이언트(100)와 통신하는 프로그램 모듈일 수 있다. 이러한 프로그램 모듈은 운영 시스템, 응용 프로그램 모듈 또는 기타 프로그램 모듈의 형태로 서버(200)에 포함될 수 있고, 물리적으로는 여러 가지 공지의 기억 장치에 저장될 수도 있다.  한편, 이러한 프로그램 모듈은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포괄하지만, 이에 제한되지는 않는다.
먼저, 본 발명의 일 실시예에 따른 특정 서버(200)의 통신부는, 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트(100)로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버(200)와 클라이언트(100)의 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러(110)를 클라이언트(100)로 전송할 수 있다. 이때, 특정 서버(200)의 통신부는, 보안 정보 및 트랜잭션 정보를 리모트컨트롤러(110)와 같이 전송할 수도 있다.
여기서, 특정 서버(200)는, 소정의 클러스터에 포함되는 복수의 서버 중 우선 클라이언트(100)에게 서비스를 제공하는 서버로, 클러스터 내에서 랜덤하게 선택되거나 라운드 로빈 방식 등에 의해 선택됨으로써 클라이언트(100)에게 서비스를 제공할 수 있을 것이다.
특정 서버(200)의 통신부는, 또한, 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 특정 서버(200)를 제외한 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 클라이언트(100)에게 제공함으로써, 클라이언트(100)로 하여금 적어도 하나의 통신 객체를 리모트컨트롤러(110)에 포함하도록 지원하여 클러스터 내의 모든 서버와 통신 가능하도록 지원할 수 있다. 이를 위해, 소정의 클러스터 내의 복수의 서버는 각각의 서버에 대응되는 통신 객체를 서로 공유할 수 있으며, 통신 객체를 공유하는 시점은 클라이언트(100)로부터 소정의 분산 객체를 사용하고자 하는 요청 신호가 발생했을 때일 수 있으며, 클라이언트(100)와 상관 없이 주기적으로 통신 객체를 공유하고 있을 수도 있을 것이다.
여기서, 특정 서버(200)의 통신부는, 클라이언트(100)로부터 특정 서버(200)를 제외한 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 요청하는 신호가 발생되면, 적어도 하나의 통신 객체를 전송할 수도 있고, 클라이언트(100)로부터 적어도 하나의 통신 객체를 요청하는 신호가 발생하지 않아도 리모트컨트롤러(110)를 전송한 후 소정 시간 내에 자동적으로 전송할 수도 있을 것이다.
도 2를 참조하여 설명하면, 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트(100)로부터 발생되었을 때, 클라이언트(100)가 클러스터에 포함되는 복수의 서버(S1, S2, S3) 중 제1 서버(S1, 200a)에 포함된 분산 객체를 사용하게 되는 경우, 제1 서버(200a)의 통신부(210a)는 제1 서버(200a)와 클라이언트(100)의 사이의 통신을 지원하는 제1 통신 객체를 포함하고 있는 리모트컨트롤러(110)를 클라이언트(100)로 전송할 수 있다. 또한, 제1 서버(200a)의 통신부(210a)는 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 클러스터 내의 제2 서버(S2, 200b), 제3 서버(S3, 200c) 각각과 통신할 수 있도록 지원하는 제2 통신 객체, 제3 통신 객체를 획득할 수 있으며, 이를 클라이언트(100)에게 제공하여, 클라이언트(100)가 제2 통신 객체, 제3 통신 객체를 리모트컨트롤러(110)에 포함하도록 지원할 수 있다.
한편, 특정 서버(200)의 통신부가 클라이언트(100)로 전송하는 리모트컨트롤러(110)에는 클러스터링 핸들러가 포함될 수 있는데, 만약, 클라이언트(100)가 사용하고자 하는 특정 분산 객체가 특정 서버(200)에서 사용 불가능한 상태이거나 특정 서버(200)의 부하(load)가 많은 것으로 판단되면, 클러스터링 핸들러는 특정 서버(200)를 제외한 클러스터 내의 적어도 하나의 서버에서 특정 분산 객체와 동일한 기능을 수행하는 다른 분산 객체를 클라이언트(100)가 사용하도록 지원할 수 있다.
여기서, 특정 서버(200)의 동작 상태 또는 부하 상태를 판단하는 것은 클러스터링 핸들러일 수도 있고 클러스터 내의 다른 서버일 수도 있으며, 클러스터링 핸들러는 리모트컨트롤러(110)에 포함된 복수의 통신 객체를 통해 특정 서버(200)를 제외한 클러스터 내의 적어도 하나의 서버와 통신함으로써, 특정 분산 객체와 동일한 기능을 수행하는 다른 분산 객체를 클라이언트(100)가 사용하도록 지원할 수 있을 것이다.
또한, 클라이언트(100)로부터 특정 분산 객체를 사용하고자 하는 요청 신호가 발생되면, 클러스터링 핸들러는 복수의 서버 중 어느 하나의 서버와 클라이언트(100)가 통신하도록 지원하여 특정 분산 객체를 사용하도록 할 수도 있는데, 복수의 서버 중 임의의 서버가 랜덤하게 선택되는 옵션, 라운드 로빈 방식 등에 의해 선택되는 옵션 중 어느 하나에 따라 소정의 서버가 결정되면, 소정의 서버와 클라이언트(100)가 통신하도록 지원할 수 있을 것이다. 여기서, 소정의 서버를 선택하는 것은 클러스터링 핸들러일 수도 있고 클러스터 내의 다른 관리자일 수도 있다.
한편, 클라이언트(100)가 특정 서버(200)에 존재하는 특정 분산 객체를 사용하고자 할 때 특정 분산 객체가 추가 분산 객체를 호출하는 경우, 특정 서버(200)의 통신부는, 특정 분산 객체로 하여금 특정 서버(200)에 존재하는 추가 분산 객체를 우선적으로 호출하도록 지원할 수도 있다.
도 3을 참조하여 설명하면, 클라이언트(100)가 리모트컨트롤러(110)를 이용하여 제1 서버(200a)로 객체 h1을 호출했을 때 객체 h1은 객체 h2를 호출하고, 객체 h2는 제1 서버(200a) 및 제2 서버(200b)에 존재하는 경우, 제1 서버(200a)의 통신부(210a)는 객체 h1이 제1 서버(200a)의 객체 h2를 호출하도록 지원할 수 있을 것이며, 이를 통해 제1 서버(200a)의 통신부(210a)는 네트워크 통신을 통해 제2 서버(200b)의 객체 h2를 호출하지 않으므로 네트워크 부하를 줄일 수 있게 된다. 다만, 제1 서버(200a)의 부하가 많다면, 제1 서버(200a)의 통신부는 제2 서버(200b)의 객체 h2를 호출할 수도 있을 것이다.
한편, 본 발명의 일 실시예에 따른 특정 서버(200)의 프로세서는, 소정의 클러스터 내의 서버가 정상적으로 작동하는지에 대한 서버 작동 상태를 주기적으로 확인하고, 서버 작동 상태의 변화가 감지되면 이를 리스너에 등록할 수 있다. 또한, 특정 서버(200)의 프로세서는 특정 서버(200)를 제외한 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 리스너에 등록할 수도 있다.
특정 서버(200)의 통신부는 이와 같은 정보(가령, 서버 작동 상태 또는 이러한 상태의 변화 정보)를 클라이언트(100)에 제공할 수 있으며, 클라이언트(100)는 이를 통해 소정의 클러스터 내에서 정상적으로 작동하고 있는 서버를 파악할 수 있다. 여기서, 특정 서버(200)의 프로세서는 주기적으로 리스너에 등록된 정보를 갱신시킬 수도 있으며, 이를 통해 클라이언트(100)는 클러스터 내의 서버의 현재 상태를 계속적으로 확인 가능하게 된다.
만약, 특정 서버(200)에 장애가 발생되면, 특정 서버(200)의 통신부는, 특정 서버(200) 외의 소정의 클러스터에 속하는 다른 서버로 하여금 리스너에 클러스터의 모든 서버에 관한 정보를 등록한 후 이에 대한 정보를 클라이언트(100)에게 제공하도록 지원할 수 있을 것이다. 가령, 제1 서버(200a)가 클라이언트(100)에게 모든 서버에 관한 정보를 제공한 상태에서 제1 서버(200a)에 장애가 발생하면, 클라이언트(100)의 리모트컨트롤러(110)는 리스너에 등록되어 있는 서버 중 어느 하나의 서버를 선별하여, 제1 서버(200a)가 아닌 다른 서버와 통신하도록 할 수 있으며, 다른 서버로부터 현재 클러스터에서 정상적으로 작동하는 모든 서버에 관한 정보를 리스너를 통해 획득할 수 있다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 클라이언트
200: 서버
300: 통신망

Claims (20)

  1. 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법에 있어서,
    (a) 소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 중 특정 서버가, 상기 클라이언트와 상기 특정 서버 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하는 단계; 및
    (b) 상기 특정 서버는, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 단계;
    를 포함하고,
    상기 리모트컨트롤러에는 클러스터링 핸들러가 포함되며,
    상기 클라이언트가 사용하고자 하는 특정 분산 객체가 상기 특정 서버에서 사용 불가능한 상태이거나 상기 특정 서버의 부하(load)가 많은 것으로 판단되면, 상기 클러스터링 핸들러는, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버에서 상기 특정 분산 객체와 동일한 기능을 수행하는 다른 분산 객체를 상기 클라이언트가 사용하도록 지원하고,
    상기 특정 서버는, 상기 소정의 클러스터 내의 서버가 정상적으로 작동하는지에 대한 서버 작동 상태를 주기적으로 확인하고, 상기 서버 작동 상태의 변화가 감지되면, 이를 리스너에 등록한 후 상기 리스너를 통해 상기 작동 상태의 변화를 상기 클라이언트에 제공하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 리모트컨트롤러에는 클러스터링 핸들러가 포함되며,
    상기 클라이언트로부터 특정 분산 객체를 사용하고자 하는 요청 신호가 발생되면, 상기 클러스터링 핸들러는, 상기 복수의 서버 중 어느 하나의 서버와 상기 클라이언트가 통신하도록 지원하여 상기 특정 분산 객체를 사용하도록 하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 클러스터링 핸들러는, (i) 상기 복수의 서버 중 임의의 서버가 랜덤하게 선택되는 옵션, (ii) 라운드 로빈 방식에 의해 선택되는 옵션 중 어느 하나에 따라 결정되는 소정 서버와 상기 클라이언트와 통신하도록 지원하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 클라이언트가 상기 특정 서버에 존재하는 특정 분산 객체를 사용하고자 할 때 상기 특정 분산 객체가 추가 분산 객체를 호출하는 경우, 상기 특정 서버는, 상기 특정 분산 객체로 하여금 상기 특정 서버에 존재하는 상기 추가 분산 객체를 우선적으로 호출하도록 지원하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 (b) 단계는,
    상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 요청하는 신호가 상기 클라이언트로부터 발생되면, 상기 특정 서버가 상기 적어도 하나의 통신 객체를 전송하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 특정 서버는, 상기 클라이언트에게 상기 리모트컨트롤러를 전송할 때 보안 정보 및 트랜잭션 정보를 같이 전송하는 것을 특징으로 하는 방법.
  8. 삭제
  9. 제1항에 있어서,
    상기 특정 서버가, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 리스너에 등록한 후 상기 리스너를 상기 클라이언트에게 제공하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 특정 서버에 장애가 발생하는 경우, 상기 특정 서버는, 상기 특정 서버 외의 상기 소정의 클러스터에 속하는 다른 서버로 하여금 리스너에 상기 클러스터의 모든 서버에 관한 정보를 등록한 후 상기 리스너를 상기 클라이언트에게 제공하도록 지원하는 것을 특징으로 하는 방법.
  11. 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 서버 시스템에 있어서,
    소정의 분산 객체를 사용하고자 하는 요청 신호가 클라이언트로부터 발생되면, 소정의 클러스터에 포함되는 것으로 판단되는 복수의 서버 - 상기 복수의 서버는 상기 서버 시스템에 포함됨 - 중 특정 서버와 상기 클라이언트의 사이의 통신을 지원하는 특정 통신 객체를 포함하고 있는 리모트컨트롤러를 상기 클라이언트로 전송하고, 상기 소정의 클러스터 내의 모든 서버에 관한 정보를 참조로 하여, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 상기 클라이언트에게 제공함으로써, 상기 클라이언트로 하여금 상기 적어도 하나의 통신 객체를 상기 리모트컨트롤러에 포함하도록 지원하여 상기 클러스터 내의 모든 서버와 통신 가능하도록 지원하는 상기 특정 서버의 통신부; 및
    상기 특정 서버의 프로세서;
    를 포함하고,
    상기 리모트컨트롤러에는 클러스터링 핸들러가 포함되며,
    상기 클라이언트가 사용하고자 하는 특정 분산 객체가 상기 특정 서버에서 사용 불가능한 상태이거나 상기 특정 서버의 부하가 많은 것으로 판단되면, 상기 클러스터링 핸들러는 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버에서 상기 특정 분산 객체와 동일한 기능을 수행하는 다른 분산 객체를 상기 클라이언트가 사용하도록 지원하고,
    상기 특정 서버의 프로세서는, 상기 소정의 클러스터 내의 서버가 정상적으로 작동하는지에 대한 서버 작동 상태를 주기적으로 확인하고, 상기 서버 작동 상태의 변화가 감지되면 이를 리스너에 등록하고, 상기 특정 서버의 통신부는, 상기 리스너를 통해 상기 작동 상태의 변화를 상기 클라이언트에 제공하는 것을 특징으로 하는 서버 시스템.
  12. 삭제
  13. 제11항에 있어서,
    상기 리모트컨트롤러에는 클러스터링 핸들러가 포함되며,
    상기 클라이언트로부터 특정 분산 객체를 사용하고자 하는 요청 신호가 발생되면, 상기 클러스터링 핸들러는, 상기 복수의 서버 중 어느 하나의 서버와 상기 클라이언트가 통신하도록 지원하여 상기 특정 분산 객체를 사용하도록 하는 것을 특징으로 하는 서버 시스템.
  14. 제13항에 있어서,
    상기 클러스터링 핸들러는, (i) 상기 복수의 서버 중 임의의 서버가 랜덤하게 선택되는 옵션, (ii) 라운드 로빈 방식에 의해 선택되는 옵션 중 어느 하나에 따라 결정되는 소정 서버와 상기 클라이언트와 통신하도록 지원하는 것을 특징으로 하는 서버 시스템.
  15. 제11항에 있어서,
    상기 클라이언트가 상기 특정 서버에 존재하는 특정 분산 객체를 사용하고자 할 때 상기 특정 분산 객체가 추가 분산 객체를 호출하는 경우, 상기 특정 서버의 통신부는, 상기 특정 분산 객체로 하여금 상기 특정 서버에 존재하는 상기 추가 분산 객체를 우선적으로 호출하도록 지원하는 것을 특징으로 하는 서버 시스템.
  16. 제11항에 있어서,
    상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 요청하는 신호가 상기 클라이언트로부터 발생되면, 상기 특정 서버의 통신부가 상기 적어도 하나의 통신 객체를 전송하는 것을 특징으로 하는 서버 시스템.
  17. 제11항에 있어서,
    상기 특정 서버의 통신부는, 상기 클라이언트에게 상기 리모트컨트롤러를 전송할 때 보안 정보 및 트랜잭션 정보를 같이 전송하는 것을 특징으로 하는 서버 시스템.
  18. 삭제
  19. 제11항에 있어서,
    상기 특정 서버의 프로세서가, 상기 특정 서버를 제외한 상기 클러스터 내의 적어도 하나의 서버와 각각 통신할 수 있는 적어도 하나의 통신 객체를 획득하여 리스너에 등록하고, 상기 특정 서버의 통신부는, 상기 리스너를 상기 클라이언트에게 제공하는 것을 특징으로 하는 서버 시스템.
  20. 제11항에 있어서,
    상기 특정 서버에 장애가 발생하는 경우, 상기 특정 서버의 통신부는, 상기 특정 서버 외의 상기 소정의 클러스터에 속하는 다른 서버로 하여금 리스너에 상기 클러스터의 모든 서버에 관한 정보를 등록한 후 상기 리스너를 상기 클라이언트에게 제공하도록 지원하는 것을 특징으로 하는 서버 시스템.
KR1020160028529A 2016-03-09 2016-03-09 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템 KR101648568B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160028529A KR101648568B1 (ko) 2016-03-09 2016-03-09 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템
US15/140,823 US10158704B2 (en) 2016-03-09 2016-04-28 Method and system for clustering distributed objects to use them as if they were one object

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160028529A KR101648568B1 (ko) 2016-03-09 2016-03-09 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템

Publications (1)

Publication Number Publication Date
KR101648568B1 true KR101648568B1 (ko) 2016-08-16

Family

ID=56854644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160028529A KR101648568B1 (ko) 2016-03-09 2016-03-09 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템

Country Status (2)

Country Link
US (1) US10158704B2 (ko)
KR (1) KR101648568B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102428587B1 (ko) * 2022-04-13 2022-08-03 주식회사 비투엔 마이크로 서비스 아키텍처 기반의 트랜잭션 가용성과 성능 보장 처리 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172654A (ja) * 1998-12-11 2000-06-23 Hitachi Software Eng Co Ltd 分散オブジェクト管理システム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393497B1 (en) * 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US20020055972A1 (en) * 2000-05-08 2002-05-09 Weinman Joseph Bernard Dynamic content distribution and data continuity architecture
US7313619B2 (en) * 2003-03-21 2007-12-25 Intel Corporation System and method for managing distributed objects as a single representation
US8315636B2 (en) * 2005-02-24 2012-11-20 Cisco Technology, Inc. Techniques for distributing data among nodes based on dynamic spatial/organizational state of a mobile node
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8589471B2 (en) * 2011-03-29 2013-11-19 Bmc Software, Inc. Dynamic dispatch for distributed object-oriented software systems
US9703647B2 (en) * 2011-12-30 2017-07-11 Veritas Technologies Llc Automated policy management in a virtual machine environment
US8694575B2 (en) * 2012-06-11 2014-04-08 The Johns Hopkins University Data-intensive computer architecture
US9176769B2 (en) * 2012-06-29 2015-11-03 Microsoft Technology Licensing, Llc Partitioned array objects in a distributed runtime
US9680692B2 (en) 2013-01-23 2017-06-13 Facebook, Inc. Method and system for using a recursive event listener on a node in hierarchical data structure
US9274828B2 (en) * 2013-11-03 2016-03-01 Maestrano Pty Ltd. Systems and methods for event driven object management and distribution among multiple client applications
US10110676B2 (en) * 2014-08-22 2018-10-23 Nexenta Systems, Inc. Parallel transparent restructuring of immutable content in a distributed object storage system
WO2016033180A1 (en) * 2014-08-26 2016-03-03 rift.IO, Inc. Distributed transaction subsystem

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172654A (ja) * 1998-12-11 2000-06-23 Hitachi Software Eng Co Ltd 分散オブジェクト管理システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문1:1998* *
논문2:2006* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102428587B1 (ko) * 2022-04-13 2022-08-03 주식회사 비투엔 마이크로 서비스 아키텍처 기반의 트랜잭션 가용성과 성능 보장 처리 장치 및 방법

Also Published As

Publication number Publication date
US20170264678A1 (en) 2017-09-14
US10158704B2 (en) 2018-12-18

Similar Documents

Publication Publication Date Title
US7185096B2 (en) System and method for cluster-sensitive sticky load balancing
US8073952B2 (en) Proactive load balancing
US9485323B1 (en) Managing pooled client-premise resources via provider-defined interfaces
US8032780B2 (en) Virtualization based high availability cluster system and method for managing failure in virtualization based high availability cluster system
US9854045B2 (en) Generic cloud enabling of stateful applications
US7225356B2 (en) System for managing operational failure occurrences in processing devices
CN106663033B (zh) 在事务中间件机器环境支持绕域和代理模型并更新服务信息以跨域消息传送的系统和方法
US20170171304A1 (en) Service updating method and system for server cluster
US10771318B1 (en) High availability on a distributed networking platform
CN102187315A (zh) 在虚拟环境中获取用于服务器负载均衡的反馈信息的方法和装置
US10826977B2 (en) System and method for supporting asynchronous request/response in a network environment
CN102420820B (zh) 一种集群系统中的隔离方法和装置
CN110442610A (zh) 负载均衡的方法、装置、计算设备以及介质
US10120779B1 (en) Debugging of hosted computer programs
CN108063813B (zh) 一种集群环境下密码服务网络并行化的方法与系统
US20170293500A1 (en) Method for optimal vm selection for multi data center virtual network function deployment
US10498617B1 (en) System, method, and computer program for highly available and scalable application monitoring
US8972802B2 (en) Providing high availability to a hybrid application server environment containing non-java containers
KR101648568B1 (ko) 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템
CN113326100A (zh) 一种集群管理方法、装置、设备及计算机存储介质
US11595471B1 (en) Method and system for electing a master in a cloud based distributed system using a serverless framework
US11340969B2 (en) Processing system for data distribution and program thereof
CN113535402A (zh) 基于5g mec的负载均衡处理方法、装置及电子设备
CN113760447A (zh) 服务管理方法、装置、设备、存储介质及程序产品
CN107508760B (zh) 一种基于线路源ip进行负载分发的方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190613

Year of fee payment: 4