KR101671549B1 - 스마트 라우팅 - Google Patents

스마트 라우팅 Download PDF

Info

Publication number
KR101671549B1
KR101671549B1 KR1020117022956A KR20117022956A KR101671549B1 KR 101671549 B1 KR101671549 B1 KR 101671549B1 KR 1020117022956 A KR1020117022956 A KR 1020117022956A KR 20117022956 A KR20117022956 A KR 20117022956A KR 101671549 B1 KR101671549 B1 KR 101671549B1
Authority
KR
South Korea
Prior art keywords
computer
module
server module
server
router
Prior art date
Application number
KR1020117022956A
Other languages
English (en)
Other versions
KR20120004433A (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 KR20120004433A publication Critical patent/KR20120004433A/ko
Application granted granted Critical
Publication of KR101671549B1 publication Critical patent/KR101671549B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

라우터 모듈은 클라이언트 요청을 수신한다. 그 요청을 수신하는 것에 응답하여, 라우터 모듈은 그 요청을 충족시키는 서버 모듈의 네트워크 주소를 획득한다. 그런 다음, 라우터 모듈은 라우터 모듈이 서버 모듈과 동일한 물리적 컴퓨터 상에서 실행 중인지 여부를 판단한다. 서버 모듈이 동일한 물리적 컴퓨터 상에서 실행 중이 아니라고 라우터 모듈이 판단하면, 라우터 모듈은 표준 네트워크 이송을 이용하여 클라이언트 요청을 서버 모듈로 전달한다. 서버 모듈이 동일한 컴퓨터 상에서 실행 중이라고 라우터 모듈이 판단하면, 라우터 모듈은 최적 로컬-머신-전용 이송과 같은 최적 이송을 사용하여 클라이언트 요청을 서버 모듈로 전달한다.

Description

스마트 라우팅{SMART ROUTING}
본 발명은 스마트 라우팅 기술에 관한 것이다.
많은 유형의 클라이언트-서버 아키텍처에서, 클라이언트에 의해 생성된 요청이 그 요청을 충족시키는 서버에 도달할 때까지 클라이언트에 의해 생성된 요청에 대한 한 형태의 라우팅이 수행된다. 이러한 유형의 라우팅은 보다 높은 품질의 서비스를 소정의 카테고리의 클라이언트로 제공하거나 한 그룹의 서버 컴퓨터들 사이에서 부하를 분산시키는 것과 같은 많은 이유를 위해 발생할 수 있다.
일부의 경우에, 라우팅을 수행하는 서버와 클라이언트 요청을 충족시키는 서버는 동일한 물리적 서버이다. 이들의 경우에, 서버는 대개 클라이언트 요청을 네트워크를 거쳐 라우팅하며 처리를 위해 동일한 물리적 서버로 다시 라우팅한다. 이러한 유형의 라우팅은 비효율적일 수 있다.
본 명세서의 개시 내용은 이들 및 다른 고려 사항에 관해 제시된다.
본 명세서에서는 스마트 라우팅에 대한 기술이 설명된다. 특히, 본 명세서에서 제시된 개념 및 기술의 구현을 통해, 충족시키는 서버와 라우터가 동일한 물리적 컴퓨터 시스템 상에 존재하는 경우에, 클라이언트 요청을 라우터로부터 서버로 운반하기 위해 그리고 응답을 다시 운반하기 위해 최적 이송이 이용된다. 예를 들어, 최적 이송은 클라이언트 요청이 네트워크를 거쳐 라우팅될 필요가 없는 로컬-머신-전용 이송(local-machine-only transport)일 수 있다. 오히려, 로컬-머신-전용 이송은 네트워크 스택(network stack)을 이용하지 않으면서 클라이언트 요청을 라우팅하기 위한 최적 메커니즘을 제공한다.
일 실시예에 따라, 라우터 모듈은 클라이언트 요청을 수신한다. 그러한 요청을 수신하는 것에 응답하여, 라우터 모듈은 그 요청을 충족시키는 서버 모듈의 네트워크 주소를 획득한다. 예를 들어, 라우터 모듈은 서버 모듈의 네트워크 주소를 획득하기 위해 부하 분산 장치(load balancer)에게 질의할 수 있다. 그런 다음, 라우터 모듈은 서버 모듈의 네트워크 주소를 기초로 라우터 모듈이 서버 모듈과 동일한 물리적 컴퓨터 상에서 실행 중인지 여부를 판단한다. 일 실시예에서, 라우터 모듈은 이러한 판단을 수행하기 위해 서버 모듈의 네트워크 주소를 라우터 모듈이 실행 중인 서버가 응답하는 네트워크 주소의 리스트와 비교한다.
라우터 모듈이 서버 모듈이 동일한 물리적 컴퓨터 상에서 실행 중이 아니라고 판단하면, 라우터 모듈은 전송 제어 프로토콜/인터넷 프로토콜(transmission control protocol/internet protocol(TCP/IP)), 하이퍼-텍스트 이송 프로토콜(hyper-text transport protocol(HTTP)), 또는 또 다른 유형의 이송과 같은 표준 네트워크 이송(standard network transport)을 이용하여 클라이언트 요청을 서버 모듈로 전달한다. 라우터 모듈이 서버 모듈이 동일한 컴퓨터 상에서 실행 중이라고 판단하면, 라우터 모듈은 최적 이송(optimized transport)을 사용하여 클라이언트 요청을 서버 모듈로 전달한다. 예를 들어, 하나의 특정 구현에서, 최적 이송은 TCP 이송과 같은 이진 암호화(binary encoding)를 이용하는 이송을 포함할 수 있다. 또 다른 구현에서, 최적 이송은 네트워크 스택을 사용하지 않으면서 라우터 모듈과 서버 모듈 사이에 통신을 가능하게 하기 위한, 네임드 파이프 바인딩(named pipe binding)과 같은 최적 로컬-머신-전용 이송을 포함한다. 서버 모듈로부터 서버 모듈로 응답을 전송하기 위해 최적 이송이 또한 이용된다.
전술된 본 발명은 컴퓨터 제어식 장치, 컴퓨터 프로세스, 컴퓨터 시스템(computing system), 또는 컴퓨터 판독 가능한 매체와 같은 제조자의 품목으로서 또한 구현될 수 있다는 것이 이해되어야 한다. 이들 특징 및 다양한 다른 특징은 다음의 발명을 실시하기 위한 구체적인 내용을 읽고 첨부된 도면을 참조함으로써 명백할 것이다.
이러한 과제의 해결 수단은 상세한 설명에서 추가로 후술되는 몇몇의 개념을 단순화된 형태로 소개하기 위해 제공된다. 이러한 과제의 해결 수단은 청구된 본 발명의 주요 특징 또는 필수 특징을 식별하도록 의도되지도 않으며 청구된 본 발명의 범위를 제한하기 위해 이러한 과제의 해결 수단이 사용되도록 의도되지도 않는다. 또한, 청구된 본 발명은 이러한 개시 사항의 임의의 일부분에서 언급된 임의의 또는 모든 단점을 해결하는 구현예로 제한되지 않는다.
도 1은 본 명세서에서 제시된 실시예를 위한 하나의 예시적인 운영 환경을 도시하는 네트워크 다이어그램이다.
도 2는 최적 라우팅을 위해 본 명세서에서 제시된 일 실시예의 양태를 도시하는 네트워크 다이어그램이다.
도 3은 본 명세서에서 제시된 일 실시예에서 클라이언트 요청의 최적 라우팅을 위한 하나의 예시적인 프로세스를 도시하는 흐름도이다.
도 4는 본 명세서에서 제시된 실시예의 양태를 구현할 수 있는 컴퓨터 시스템을 위한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 도시하는 컴퓨터 아키텍처 다이어그램이다.
다음의 상세한 설명은 최적 라우팅을 위한 기술에 관한 것이다. 본 명세서에서 설명된 본 발명이 컴퓨터 시스템 상의 운영 체제 및 애플리케이션 프로그램의 실행과 함께 실행하는 일반적인 컨텍스트(context)의 프로그램 모듈로 제시되는 반면, 당업자라면 다른 유형의 프로그램 모듈과 함께 다른 구현이 수행될 수 있다는 것을 인식할 것이다. 일반적으로, 프로그램 모듈은 루틴(routine), 프로그램, 컴포넌트(component), 데이터 구조, 및 특정 임무를 수행하거나 특정 추상적 데이터 유형을 구현하는 다른 유형의 구조를 포함한다. 아울러, 당업자라면 본 명세서에서 설명된 본 발명이 핸드-헬드 장치(hand-held device), 멀티프로세서 시스템, 마이크로프로세서 기반(microprocessor-based) 또는 프로그램 가능한 가전 제품, 미니컴퓨터, 메인 프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성을 이용하여 실시될 수 있다는 것을 이해할 것이다.
다음의 상세한 설명에서, 상세한 설명의 일부를 형성하며 특정 실시예 또는 예를 예시를 통해 도시한 첨부 도면을 참조한다. 이제, 몇 개의 도표 모두에서 유사한 부호가 유사한 요소를 나타내고 있는 도면을 참조하여, 최적 라우팅을 위한 컴퓨터 시스템 및 방법론의 양태가 제시될 것이다.
이제 도 1을 다시 참조하여, 본 명세서에서 제시된 실시예를 위한 하나의 예시적인 운영 환경에 관한 설명이 제공될 것이다. 특히, 도 1은 본 명세서에서 제시된 실시예에 대한 예시적인 운영 환경을 형성하는 시스템(100)의 양태를 도시한다. 도 1에 도시된 바와 같이, 클라이언트 컴퓨터(104)는 네트워크(106)를 통해 하나 이상의 서버 컴퓨터(102A-102B)에 접속한다. 네트워크(106)와 같은 본 명세서에서 논의된 네트워크가 단지 예시적이며, 본 명세서에서 제시된 기술의 실제 구현에서는 보다 많은 혹은 보다 적은 네트워크가 이용될 수 있다는 것이 이해되어야 한다. 아울러, 도 1에는 단일 네트워크(106)가 예시되었지만, 본 명세서에서 제시된 다양한 실시예에서는 예시된 것보다 많은 네트워크가 이용될 수 있다는 것도 또한 이해되어야 한다. 아울러, 네트워크(106)는 예를 들어 인터넷에 걸쳐서 연결될 수 있다는 것이 이해되어야 한다. 예를 들어, 클라이언트 컴퓨터(104)는 하나의 대륙에 위치하고 서버 컴퓨터(102A-102B)는 또 다른 대륙에 위치할 수 있다.
클라이언트 컴퓨터(104)가 서버 컴퓨터로 요청을 발생시킬 수 있는 임의의 유형의 컴퓨터 시스템(computing system)을 포함할 수 있다는 것이 또한 이해되어야 한다. 예를 들어, 클라이언트 컴퓨터(104)는 표준 데스크탑 또는 랩탑 컴퓨터 시스템, 서버 컴퓨터, 핸드헬드 컴퓨터 시스템(handheld computing system), 셋탑 박스(set top box), 또는 데이터 보유 능력(data capability)을 갖는 무선 이동 전화를 포함할 수 있다.
도 1에 도시된 바와 같이, 각각의 서버 컴퓨터(102A-102B)는 각각의 라우터 모듈(108A-108B) 및 각각의 서버 모듈(110A-110B)을 갖출 수 있다. 라우터 모듈(108A-108B)은 클라이언트 컴퓨터(104)로부터 요청을 수신하는 소프트웨어 프로그램을 포함한다. 또한 라우터 모듈(108A-108B)은 클라이언트 컴퓨터(104)로부터 수신된 요청을 처리를 위해 적절한 서버 모듈(110A-110B)로 라우팅하기 위한 기능을 제공한다. 각각의 서버 모듈(110A-110B)로부터의 응답은 본래의 요청을 서버 모듈로 전달했던 라우터 모듈(108A-108B)로 되돌려진다. 그런 다음, 라우터 모듈은 응답을 클라이언트 컴퓨터(104)로 전달한다. 서버 모듈(110A-110B)이 요청을 수신하면서 요청에 응답하도록 구성된 소프트웨어 컴포넌트를 포함한다는 것이 이해되어야 한다. 예를 들어, 서버 모듈(110A-110B)은 웹 서버 프로그램, 웹 서비스 및 다른 유형의 서버 컴포넌트를 포함할 수 있다.
클라이언트 컴퓨터(104)로부터 수신된 클라이언트 요청이 어떤 서버 모듈(110A-110B)로 라우팅되어야 하는지를 판단하기 위해, 라우터 모듈(108A-108B)은 부하 분산 장치(load balancer)(112)의 서비스를 이용하도록 구성된다. 부하 분산 장치는 클라이언트 컴퓨터(104)로부터의 요청을 충족시키기 위한 서버 모듈(110A-110B) 중 하나의 서버 모듈을 식별하도록 구성된 소프트웨어 또는 하드웨어 컴포넌트이다. 부하 분산 장치(112)가 적절한 서버 모듈(110A-110B)을 식별하기 위해 보다 높은 품질의 서비스를 어떤 카테고리의 클라이언트 컴퓨터(104)로 제공하는 서버 컴퓨터(102A-102B)의 현재 처리 부하 및 다른 요인을 포함하지만 이제 제한되지 않는 다양한 알고리즘을 이용할 수 있다는 것이 이해되어야 한다. 본 명세서에서 제시된 실시예가 특정 클라이언트 요청을 충족시켜야 하는 서버 모듈(110A-110B)을 식별하기 위해 부하 분산 장치(112)에 의해 이용된 임의의 특정 메커니즘에 따라 달라지지 않는다는 것이 이해되어야 한다.
요청이 라우터 모듈(108A-108B) 중 하나의 라우터 모듈에 의해 클라이언트 컴퓨터(104)로부터 수신될 때, 요청을 수신하는 라우터 모듈은 클라이언트 요청을 충족시키는 서버 모듈(110A-110B)의 네트워크 주소를 위해 부하 분산 장치(112)에게 질의할 것이다. 일단 라우터 모듈(108A-108B)이 요청을 충족시키기 위한 서버 모듈(110A-110B)의 네트워크 주소를 가지면, 라우터 모듈은 클라이언트 요청을 적절한 서버 모듈(110A-110B)로 전달한다. 예를 들어, 라우터 모듈(108A)이 클라이언트 요청을 서버 모듈(110B)로 전달하도록 명령을 받게 되면, 적절한 네트워크 접속을 거쳐 서버 모듈(110B)과의 네트워크 접속(114B)이 설정된다. 마찬가지로, 라우터 모듈(108B)이 클라이언트 요청을 서버 모듈(110A)로 전달하도록 명령을 받게 되면, 클라이언트 요청은 네트워크 접속(114D)을 통해 전달된다. 마찬가지로, 라우터 모듈(108A)이 요청을 서버 모듈(110A)로 전달하도록 명령을 받게 되면, 클라이언트 요청을 위해 라우터 모듈과 서버 모듈(110A) 사이에 네트워크 접속(114A)이 설정된다. 마찬가지로, 라우터 모듈(108B)이 클라이언트 요청을 서버 모듈(110B)로 전달하도록 명령을 받게 되면, 라우터 모듈(108B)과 서버 모듈(110B) 사이에 네트워크 접속(114C)이 설정되고, 클라이언트 요청이 그를 통해 전달된다. 적절한 서버 모듈(110A-110B)로부터의 응답도 또한 동일한 네트워크 접속을 통해 라우터 모듈(108A-108B)로 되돌려진다.
도 1에 예시된 예에서, 비록 라우터 모듈(108A)과 서버 모듈(110A)이 동일한 서버 컴퓨터(102A) 상에서 실행 중이더라도, 이들 컴포넌트 사이에 네트워크 접속(114A)이 설정된다. 마찬가지로, 비록 라우터 모듈(108B)과 서버 모듈(110B)이 동일한 물리적 서버 컴퓨터(102B) 상에서 실행 중이더라도, 이들 컴포넌트 사이에 네트워크 접속(114C)이 설정된다. 이런 방식으로 네트워크 접속(114A 및 114C)을 설정하는 것은 매우 비효율적이다. 도 2 내지 도 4를 참조하여 아래 설명된 다양한 개념 및 기술이 이러한 특정 라우팅 시나리오를 해결한다.
이제 도 2를 다시 참조하여, 라우터 모듈(108A)과 서버 모듈(110A) 사이에 최적 라우팅을 제공하기 위한 예시적인 시스템(200)의 양태가 설명될 것이다. 도 2에 도시된 시스템(200)에서, 라우터 모듈(108A)과 서버 모듈(110A)이 동일한 물리적 서버 컴퓨터(102A) 상에서 실행 중일 때, 라우터 모듈(108A)은 서버 모듈(110A)로 최적 라우팅을 생성하도록 구성된다. 이러한 프로세스에 관한 추가 설명은 아래에 제공될 것이다.
도 2에 도시된 바와 같이, 라우터 모듈(108A)은 클라이언트 요청(202)을 클라이언트 컴퓨터(104)로부터 수신할 수 있다. 클라이언트 요청(202)을 수신한 것에 응답하여, 라우터 모듈(108A)은 클라이언트 요청(202)을 충족시키는 서버 모듈(110A-110B)의 네트워크 주소를 위한 요청(204)을 부하 분산 장치(112)로 전송한다. 요청(204)을 수신하는 것에 응답하여, 부하 분산 장치(112)는 클라이언트 요청(202)을 충족시키는 서버 모듈(110A-110B)의 표적 주소(206)를 되돌린다.
라우터 모듈(108A)이 부하 분산 장치(112)로부터 표적 주소(206)를 수신할 때, 라우터 모듈(108A)은 클라이언트 요청(202)을 충족시키는 서버 모듈이 라우터 모듈(108A)과 동일한 물리적 컴퓨터(102A) 상에서 실행 중인지 여부를 판단한다. 예를 들어, 하나의 구현에서, 라우터 모듈(108A)은 표적 주소(206)를 서버 컴퓨터(102A)가 응답하는 네트워크 주소의 리스트(208)와 비교함으로써 이러한 판단을 한다. 표적 주소가 네트워크 주소의 리스트(208) 내에서 식별되면, 라우터 모듈(108A)은 서버 모듈(110A)이 동일한 물리적 서버 컴퓨터(102A) 상에서 실행 중이라고 결론을 내린다. 표적 주소(206)가 네트워크 주소의 리스트(208) 내에 포함되지 않으면, 라우터 모듈(108A)은 클라이언트 요청(202)을 충족시키는 서버 모듈이 서버 컴퓨터(102B)와 같은 또 다른 물리적 컴퓨터 상에서 실행 중이라고 결론을 내린다.
라우터 모듈(108A)이 클라이언트 요청(202)을 충족시키는 서버 모듈(110B)과 같은 서버 모듈이 또 다른 물리적 서버 컴퓨터 상에서 실행 중이라고 결론을 내리면, 라우터 모듈(108A)은 클라이언트 요청(202)을 표준 네트워크 이송(212)을 거쳐 서버 모듈(110B)로 전달한다. 예를 들어, 클라이언트 요청(202)을 적절한 서버 모듈(110B)로 전달하고 클라이언트 요청(202)에 대한 응답을 라우터 모듈(108A)로 되돌려보내기 위해 TCP/IP 이송 메커니즘이 이용될 수 있다.
그러나, 라우터 모듈(108A)이 클라이언트 요청(202)을 충족시키는 서버 모듈이 동일한 물리적 서버 컴퓨터(102A) 상에서 실행 중이라고 판단하면, 라우터 모듈(108A)은 클라이언트 요청(202)을 최적 이송(210)을 통해 적절한 서버 모듈(110A)로 전달한다. 일 실시예에 따라, 최적 이송(210)은 이진 암호화를 이용하는 TCP 이송을 포함한다.
대안적인 실시예에서, 최적 이송(210)은 최적 로컬-머신-전용 이송을 포함한다. 최적 이송(210)은 네트워크 스택(network stack)을 이용하지 않는 이송이며, 따라서 다른 유형의 이송에 비해 고도로 최적화된다. 예를 들어, 일 실시예에서, 최적 로컬-머신-전용 이송은 윈도우즈 커뮤니케이션즈 파운데이션(Windows Communications Foundation(WCF)) 네임드 파이프 바인딩(named pipe binding)을 포함한다. 네임드 파이프 바인딩은 라우터 모듈(108A)과 서버 모듈(110A)이 통신할 수 있게 해주는 서버 컴퓨터(102A) 상의 공유 메모리 영역을 생성한다. 비록 WCF 네임드 파이프 바인딩이 본 명세서에서 설명된 하나의 특정 구현에서 이용되지만, 라우터 모듈(108A)과 서버 모듈(110A)이 동일한 물리적 컴퓨터 상에서 실행 중일 때 이들 컴포넌트 사이에 이송을 생성하기 위해 당업자에게 공지된 다른 유형의 프로세스 간 통신 메커니즘(inter-process communication mechanism)이 이용될 수 있다는 것이 이해되어야 한다. 이러한 프로세스에 관한 추가 설명이 도 3 및 도 4를 참고하여 아래에 제공될 것이다.
이제 도 3을 참조하면, 최적 라우팅을 위해 본 명세서에서 제시된 실시예에 관한 추가 설명이 제공될 것이다. 특히, 도 3은 본 명세서에서 제시된 일 실시예에 따라 라우터 모듈(108A-108B)의 동작의 양태를 예시하는 흐름도이다.
본 명세서에서 설명된 논리 연산이 (1) 컴퓨터 시스템 상에서 실행되는 컴퓨터 구현 작용 또는 프로그램 모듈의 시퀀스로서 그리고/또는 (2) 컴퓨터 시스템 내의 상호접속형 머신 논리 회로(interconnected machine logic circuit) 또는 상호접속형 머신 논리 회로 모듈로서 구현되는 것이 이해되어야 한다. 구현은 컴퓨터 시스템의 성능 및 다른 요건에 따라 달라지는 선택의 문제이다. 따라서, 본 명세서에서 설명된 논리 연산은 상태 연산, 구조 장치, 작용, 또는 모듈로서 다양하게 지칭된다. 이들 연산, 구조 장치, 작용, 및 모듈은 소프트웨어로, 펨웨어로, 특정 목적의 디지털 논리로, 그리고 이들의 임의의 조합으로 구현될 수 있다. 도면에 도시되고 본 명세서에서 설명된 것보다 많거나 적은 연산이 수행될 수 있다는 것이 또한 이해되어야 한다. 또한, 이들 연산은 본 명세서에서 설명된 것과 다른 순서로 수행될 수도 있다.
루틴(300)은 연산(302)에서 시작하며, 연산(302)에서 라우터 모듈(108A)은 서버 컴퓨터(102A)가 통신을 위해 이용하는 네트워크 주소의 리스트(208)를 검색한다. 연산(302)으로부터, 루틴(300)은 연산(304)으로 진행하며, 연산(304)에서 라우터 모듈(108A)은 클라이언트 요청(202)이 예를 들어 클라이언트 컴퓨터(104)와 같은 컴퓨터로부터 수신되었는지 여부를 판단한다. 수신되지 않았으면, 루틴(300)은 그러한 판단이 또 수행되는 연산(304)으로 되돌아간다. 비록 도 3에 도시된 기능이 루프(loop)로 수행되는 것으로 예시되었지만, 다른 실시예는 루핑 메커니즘(looping mechanism)을 이용하지 않을 수 있다는 것이 이해되어야 한다. 예를 들어, 하나의 구현에서, 클라이언트 요청이 수신될 때 도 3에 도시된 프로세스가 개시될 수 있다. 결과적으로, 그러한 구현에서 도 3에 도시된 방식으로 프로세스가 루프 처리될 필요는 없다.
라우터 모듈(108A)이 클라이언트 요청(202)을 수신하면, 루틴(300)은 연산(306)으로 진행한다. 연산(306)에서, 라우터 모듈(108A)은 클라이언트 요청(202)을 충족시키는 서버 모듈(110A-110B)의 표적 주소(206)를 획득하기 위한 요청(204)을 부하 분산 장치(112)로 전송한다. 일단 라우터 모듈(108A)이 표적 주소(206)를 수신하면, 라우터 모듈(108A)은 라우터 모듈(108)과 클라이언트 요청(202)을 충족시킬 서버 모듈(110A-110B)이 동일한 물리적 컴퓨터 시스템 상에서 실행 중인지 여부를 판단하기 위해 표적 주소(206)를 네트워크 주소의 리스트(208) 내에 포함된 네트워크 주소와 비교한다.
라우터 모듈(108)과 클라이언트 요청(202)을 충족시킬 서버 모듈(110A-110B)이 동일한 물리적 컴퓨터 상에서 실행 중이 아니라면, 루틴(300)은 연산(310)으로부터 연산(312)으로 진행한다. 연산(312)에서, 라우터 모듈(108A)은 표준 네트워크 이송(212)을 이용하여 클라이언트 요청(202)을 서버 모듈(110B)과 같은 서버 모듈로 전달하고 클라이언트 요청(202)에 응답하여 서버 모듈(110B)로부터 응답을 수신한다. 연산(312)으로부터, 루틴(300)은 전술된 연산(304)으로 진행하며, 연산(304)에서 또 다른 그러한 클라이언트 요청이 유사한 방식으로 처리될 수 있다.
라우터 모듈(108A)이 클라이언트 요청(202)을 충족시키는 서버 모듈(110A-110B)의 표적 주소가 동일한 물리적 서버 컴퓨터 상에서 실행 중이라고 판단하면, 루틴(300) 연산(310)으로부터 연산(314)으로 진행한다. 연산(314)에서, 라우터 모듈(108A)은 최적 이송(210)을 이용하여 클라이언트 요청(202)을 클라이언트 요청(202)을 충족시킬 서버 모듈(110A)과 같은 서버 모듈로 전송하고 클라이언트 요청(202)에 대한 응답을 수신한다. 전술된 바와 같이, 최적 이송(210)은 일 실시예에서 이진 암호화(binary encoding)를 이용하는 이송을 포함할 수 있다. 예를 들어, 최적 이송(210)은 TCP 이송을 포함할 수 있다. 대안적으로, 최적 이송(210)은 네임드 파이프 바인딩과 같은 이진 암호화를 이용하는 최적 로컬-머신-전용 이송을 포함할 수 있다. 연산(314)으로부터, 루틴(300)은 전술된 연산(304)으로 되돌아가며, 연산(304)에서 또 다른 클라이언트 요청(202)이 유사한 방식으로 수신되거나 처리될 수 있다.
도 4는 최적 라우팅을 위해 본 명세서에서 설명된 소프트웨어 컴포넌트를 상기에서 제시된 방식으로 실행할 수 있는 컴퓨터(400)를 위한 예시적인 컴퓨터 아키텍처를 도시한다. 도 4에 도시된 컴퓨터 아키텍처는 통상적인 데스크탑, 랩탑, 또는 서버 컴퓨터를 예시하며, 클라이언트 컴퓨터(104), 서버 컴퓨터(102A-102B), 및 부하 분산 장치(112) 상에서 실행되는 것으로 설명된 본 명세서에서 제시된 소프트웨어 컴포넌트의 임의의 양태를 실행하기 위해 이용될 수 있다.
도 4에 도시된 컴퓨터 아키텍처는 중앙 처리 장치(central processing unit(CPU))(402), 랜덤 액세스 메모리(RAM)(414) 및 판독 전용 메모리(ROM)(416)을 포함하는 시스템 메모리(408), 및 메모리를 CPU(402)에 연결시키는 시스템 버스(404)를 포함한다. 시동하는 동안과 같이 컴퓨터(400) 내의 요소들 사이에서 정보를 전달하는 것을 용이하게 하는 기본 루틴을 포함하는 기본 입력/출력 시스템이 ROM(416) 내에 저장된다. 컴퓨터(400)는 운영 체제(418), 애플리케이션 프로그램, 및 다른 프로그램 모듈을 저장하기 위한 대용량 저장 장치(mass storage device)(410)를 또한 포함하며, 이는 본 명세서에서 보다 상세하게 설명된다.
대용량 저장 장치(410)는 시스템 버스(404)에 연결된 대용량 저장소 제어기(도시되지 않음)를 통해 CPU(402)에 연결된다. 대용량 저장 장치(410) 및 관련 컴퓨터 판독 가능한 매체는 컴퓨터(400)를 위한 비휘발성 저장소를 제공한다. 비록 본 명세서에 포함된 컴퓨터 판독 가능한 매체의 설명이 하드 디스크 또는 CD-ROM 드라이브와 같은 대용량 저장 장치를 지칭하지만, 컴퓨터 판독 가능한 매체가 컴퓨터(400)에 의해 액세스될 수 있는 임의의 이용 가능한 컴퓨터 저장 매체일 수 있다는 것이 당업자에게 이해되어야 한다.
예를 들어, 컴퓨터 판독 가능한 매체는 컴퓨터 판독 가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 제거 가능한 그리고 제거 가능하지 않은 매체를 포함할 수 있지만 그에 제한되지 않는다. 예를 들어, 컴퓨터 판독 가능한 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 고체 상태 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disk(DVD)), HD-DVD, BLU-RAY, 또는 다른 광 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 요구된 정보를 저장하기 위해 사용될 수 있으면서 컴퓨터(400)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 그에 제한되지 않는다.
다양한 실시예에 따라, 컴퓨터(400)는 네트워크(420)와 같은 네트워크를 통해 원격 컴퓨터에 대한 논리 접속(logical connection)을 사용하여 네트워크 환경(networked environment) 내에서 동작할 수 있다. 컴퓨터(400)는 시스템 버스(404)에 연결된 네트워크 인터페이스 장치(406)를 통해 네트워크(420)에 접속할 수 있다. 다른 유형의 네트워크 및 원격 컴퓨터 시스템에 접속하기 위해 네트워크 인터페이스 장치(406)가 또한 이용될 수 있다는 것이 이해되어야 한다. 컴퓨터(400)는 키보드, 마우스, 또는 전자 스타일러스(도 4에 도시되지 않음)을 포함한 복수의 다른 장치로부터의 입력을 수신하고 처리하기 위한 입력/출력 제어기(412)를 또한 포함할 수 있다. 마찬가지로, 입력/출력 제어기는 출력을 디스플레이 스크린, 프린터, 또는 다른 유형의 출력 장치(역시 도 4에 도시되지 않음)로 제공할 수 있다.
간단하게 전술된 바와 같이, 네트워크에 연결된 데스크탑, 랩탑, 또는 서버 컴퓨터의 연산을 제어하기에 적절한 운영 체제(418)를 포함하는 복수의 프로그램 모듈 및 데이터 파일이, 컴퓨터(400)의 대용량 저장 장치(410) 및 RAM(414) 내에 저장될 수 있다. 대용량 저장 장치(410) 및 RAM(414)은 하나 이상의 프로그램 모듈을 또한 저장할 수 있다. 특히, 대용량 저장 장치(410) 및 RAM(414)은 라우터 모듈(108) 및 서버 모듈(110)을 저장할 수 있으며, 이들은 각각 도 1 내지 도 3을 참조하여 상세하게 전술되어 있다. 대용량 저장 장치(410) 및 RAM(414)은 다른 유형의 프로그램 모듈 및 데이터를 또한 저장할 수 있다.
본 명세서에서 설명된 소프트웨어 컴포넌트는 CPU(402) 내로 로딩(loading)되고 실행될 때 CPU(402) 및 전체 컴퓨터(400)를 일반 목적의 컴퓨터 시스템으로부터 본 명세서에서 제시된 기능을 용이하게 하도록 주문 제작된 특수 목적의 컴퓨터 시스템으로 변환시킬 수 있다는 것이 이해되어야 한다. CPU(402)는 임의의 개수의 트랜지스터 또는 다른 이산 회로 요소로부터 구성될 수 있으며, 이는 개별적으로 또는 집합적으로 임의의 개수의 상태를 가정한다. 보다 구체적으로, CPU(402)는 본 명세서에서 개시된 소프트웨어 모듈 내에 포함된 실행 가능한 명령에 응답하여 유한 상태 머신(finite-state machine)으로서 동작할 수 있다. 이들 컴퓨터 판독 가능한 명령은 CPU(402)가 상태들 사이에서 어떻게 전이하는지를 특정함으로써 CPU(402)를 변환시킬 수 있으며, 이에 따라 CPU(402)를 구성하는 트랜지스터 또는 다른 이산 하드웨어 요소를 변환시킬 수 있다.
본 명세서에서 제시된 소프트웨어 모듈을 부호화하는 것은 본 명세서에서 제시된 컴퓨터 판독 가능한 매체의 물리적 구조를 또한 변환시킬 수 있다. 물리적 구조의 특정 변환은 이러한 설명의 상이한 구현에서 다양한 요인에 따라 달라질 수 있다. 그러한 요인의 예는 컴퓨터 판독 가능한 매체가 주 저장소로 특정되던지 또는 부 저장소 등으로 특정되던 지의 여부 컴퓨터 판독 가능한 매체를 구현하기 위해 사용된 기술 등을 포함할 수 있지만 그에 제한되지 않는다. 예를 들어, 컴퓨터 판독 가능한 매체가 반도체 기반 메모리로서 구현되면, 본 명세서에서 개시된 소프트웨어는 반도체 메모리의 물리적 상태를 변환시킴으로써 컴퓨터 판독 가능한 매체 상에 부호화될 수 있다. 예를 들어, 소프트웨어는 트랜지스터, 커패시터(capacitor), 또는 반도체 메모리를 구성하는 다른 이산 회로 요소의 상태를 변환시킬 수 있다. 소프트웨어는 그러한 컴포넌트 상에 데이터를 저장하기 위해 그러한 컴포넌트의 물리적 상태를 또한 변환시킬 수 있다.
또 다른 예로서, 본 명세서에 개시된 컴퓨터 판독 가능한 매체는 자기 또는 광 기술을 사용하여 구현될 수 있다. 그러한 구현에서, 본 명세서에서 제시된 소프트웨어는 그 소프트웨어가 자기 또는 광 매체 내에 부호화될 때 자기 또는 광 매체의 물리적 상태를 변환시킬 수 있다. 이들 변환은 주어진 자기 매체 내부에 특정 위치의 자기 특성을 변경시키는 것을 포함할 수 있다. 이들 변환은 그들 위치의 광 특성을 변화시키기 위해 주어지 광 매체 내부의 특정 위치의 물리적 특징 또는 특성을 변경시키는 것을 또한 포함할 수 있다. 전술된 예가 단지 이러한 논의를 용이하게 하기 위해 제공된 것이므로, 본 발명의 상세한 설명의 범위 및 사상을 벗어나지 않으면서, 상태에서 물리적 매체의 또 다른 변환이 가능하다.
전술된 설명의 관점에서, 본 명세서에서 제시된 소프트웨어 컴포넌트를 저장하고 실행하기 위해 많은 유형의 물리적 변환이 컴퓨터(400) 내에서 일어나는 것이 이해되어야 한다. 컴퓨터(400)는 핸드헬드 컴퓨터, 내장형 컴퓨터 시스템, 개인 휴대 정보 단말기(personal digital assistant), 및 당업자에게 공지된 다른 유형의 컴퓨터 계산 장치를 포함한 다른 유형의 컴퓨터 계산 장치를 포함할 수 있다는 것이 또한 이해되어야 한다. 컴퓨터(400)는 도 4에 도시된 컴포넌트를 모두 포함하지 않을 수 있거나, 도 4에 명시적으로 도시되지 않은 다른 컴포넌트를 포함할 수 있거나, 또는 도 4에 도시된 것과 완전히 다른 아키텍처를 이용할 수 있다는 것이 또한 고려된다.
전술한 설명에 기초하여, 최적 라우팅을 위한 기술이 본 명세서에서 제공된다는 것이 이해되어야 한다. 비록 본 명세서에서 제시된 본 발명이 컴퓨터 구조 특징, 방법론적 및 변환적 작용, 특유의 컴퓨터 계산 기계류, 및 컴퓨터 판독 가능한 매체에 특유한 언어로 설명되었지만, 첨부된 특허청구범위에서 정의된 발명은 본 명세서에서 설명된 특정된 특징, 작용, 또는 매체로 필연적으로 제한되지 않아야 한다는 것이 이해되어야 한다. 오히려, 특정된 특징, 작용 및 매체는 특허청구범위를 구현하는 예시적인 형태로서 개시된다.
전술된 본 발명은 단지 예시로서 제공되며 제한하는 것으로 해석되지 않아야 한다. 예시되고 설명된 예시적인 실시예 및 응용예를 따르지 않으면서 그리고 다음의 특허청구범위에서 설명되는 본 발명의 진정한 사상과 범위를 벗어나지 않으면서 본 발명에 대해 다양한 수정과 변경이 수행될 수 있다.

Claims (13)

  1. 컴퓨터 실행가능 명령어가 저장된 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 실행가능 명령어는 요청을 수신하도록 구성된 라우터 모듈을 포함하고,
    상기 라우터 모듈은
    상기 요청의 수신에 응답하여, 상기 요청을 충족하는 서버 모듈의 네트워크 주소를 획득하기 위해 부하 분산 장치(load balancer)에 질의하고, 상기 부하 분산 장치로부터 수신된 상기 네트워크 주소를 상기 라우터 모듈을 실행하는 컴퓨터가 응답하는 네트워크 주소의 네트워크 주소 리스트의 네트워크 주소와 비교함으로써 상기 서버 모듈이 상기 라우터 모듈과 동일한 컴퓨터에서 실행되고 있는지 여부를 판정하며, 상기 서버 모듈이 상기 라우터 모듈과 동일한 컴퓨터에서 실행되고 있지 않다는 판정에 응답하여 상기 요청을 상기 서버 모듈에게 표준 이송(standard transport)을 이용하여 전달하고, 상기 서버 모듈이 상기 라우터 모듈과 동일한 컴퓨터에서 실행되고 있다는 판정에 응답하여 상기 요청을 상기 서버 모듈에게 네임드 파이프 바인딩(named pipe binding)을 이용하여 전달하도록 구성되는
    컴퓨터 판독가능 매체.
  2. 제 1 항에 있어서,
    상기 네임드 파이프 바인딩은 윈도우즈 커뮤니케이션즈 파운데이션(WCF: Windows Communications Foundation) 네임드 파이프 바인딩을 포함하는
    컴퓨터 판독가능 매체.
  3. 제 1 항에 있어서,
    상기 네임드 파이프 바인딩은 이진 암호화(binary encoding)를 이용하는
    컴퓨터 판독가능 매체.
  4. 제 2 항에 있어서,
    상기 윈도우즈 커뮤니케이션즈 파운데이션 네임드 파이프 바인딩은 이진 암호화를 이용하는
    컴퓨터 판독가능 매체.
  5. 클라이언트 요청을 서버 모듈로 라우팅하기 위한 시스템으로서,
    부하 분산 장치와,
    상기 클라이언트 요청을 수신하고 이에 응답하도록 구성되는 서버 모듈과,
    라우터 모듈을 실행하는 컴퓨터
    를 포함하되,
    상기 라우터 모듈은 상기 클라이언트 요청을 수신하고, 상기 클라이언트 요청을 수신하는 것에 응답하여,
    상기 서버 모듈의 네트워크 주소를 획득하기 위해 부하 분산 장치에게 질의하고,
    상기 부하 분산 장치로부터 수신된 상기 네트워크 주소를 상기 라우터 모듈을 실행하는 컴퓨터가 응답하는 네트워크 주소 리스트의 네트워크 주소와 비교함으로써 상기 서버 모듈이 상기 라우터 모듈과 동일한 컴퓨터에서 실행되고 있는지 여부를 판정하며,
    상기 서버 모듈이 상기 동일한 컴퓨터에서 실행되고 있지 않다는 판정에 응답하여 상기 요청을 상기 서버 모듈에게 표준 이송을 이용하여 전달하고,
    상기 서버 모듈이 상기 동일한 컴퓨터에서 실행되고 있다는 판정에 응답하여 상기 요청을 상기 서버 모듈에게 네임드 파이프 바인딩을 이용하여 전달
    하도록 구성되는
    시스템.
  6. 제 5 항에 있어서,
    상기 네임드 파이프 바인딩은 윈도우즈 커뮤니케이션즈 파운데이션(WCF) 네임드 파이프 바인딩을 포함하는
    시스템.
  7. 제 6 항에 있어서,
    상기 윈도우즈 커뮤니케이션즈 파운데이션 네임드 파이프 바인딩은 이진 암호화를 이용하는
    시스템.
  8. 제 5 항에 있어서,
    상기 네임드 파이프 바인딩은 이진 암호화를 이용하는
    시스템.
  9. 클라이언트 요청을 서버 모듈에게 라우팅하는, 컴퓨터로 구현되는 방법으로서,
    라우터 모듈에서 클라이언트 요청을 수신하는 단계와,
    상기 클라이언트 요청을 수신하는 것에 응답하여,
    상기 클라이언트 요청을 충족하는 상기 서버 모듈의 표적 네트워크 주소(garget network address)에 대해 부하 분산 장치에게 질의하고, 상기 라우터 모듈과 상기 서버 모듈이 동일한 컴퓨터에서 실행되고 있는지 여부를 판정하기 위해 상기 표적 네트워크 주소를 상기 라우터 모듈이 응답하는 네트워크 주소 리스트의 네트워크 주소와 비교하며, 상기 서버 모듈이 상기 라우터 모듈과 동일한 컴퓨터에서 실행되고 있지 않다는 판정에 응답하여 상기 클라이언트 요청을 상기 서버 모듈에게 표준 이송을 이용하여 전달하고, 상기 서버 모듈이 상기 라우터 모듈과 동일한 컴퓨터에서 실행되고 있다는 판정에 응답하여 상기 클라이언트 요청을 상기 서버 모듈에게 네임드 파이프 바인딩을 이용하여 전달하는 단계
    를 포함하는 컴퓨터로 구현되는 방법.
  10. 제 9 항에 있어서,
    상기 네임드 파이프 바인딩은 윈도우즈 커뮤니케이션즈 파운데이션(WCF) 네임드 파이프 바인딩을 포함하는
    컴퓨터로 구현되는 방법.
  11. 제 9 항에 있어서,
    상기 네임드 파이프 바인딩은 이진 암호화를 이용하는
    컴퓨터로 구현되는 방법.
  12. 제 10 항에 있어서,
    상기 윈도우즈 커뮤니케이션즈 파운데이션 네임드 파이프 바인딩은 이진 암호화를 이용하는
    컴퓨터로 구현되는 방법.
  13. 삭제
KR1020117022956A 2009-03-30 2010-03-26 스마트 라우팅 KR101671549B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/413,607 US8166200B2 (en) 2009-03-30 2009-03-30 Smart routing
US12/413,607 2009-03-30
PCT/US2010/028935 WO2010117689A2 (en) 2009-03-30 2010-03-26 Smart routing

Publications (2)

Publication Number Publication Date
KR20120004433A KR20120004433A (ko) 2012-01-12
KR101671549B1 true KR101671549B1 (ko) 2016-11-01

Family

ID=42785648

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117022956A KR101671549B1 (ko) 2009-03-30 2010-03-26 스마트 라우팅

Country Status (10)

Country Link
US (1) US8166200B2 (ko)
EP (1) EP2415213B1 (ko)
JP (1) JP2012522318A (ko)
KR (1) KR101671549B1 (ko)
CN (1) CN102369691B (ko)
BR (1) BRPI1008999A2 (ko)
CA (1) CA2753878C (ko)
RU (1) RU2520360C2 (ko)
SG (1) SG173821A1 (ko)
WO (1) WO2010117689A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9203704B2 (en) * 2011-08-22 2015-12-01 Verizon Patent And Licensing Inc. Discovering a server device, by a non-DLNA device, within a home network
CH705456A1 (de) * 2011-08-31 2013-03-15 Ferag Ag Computerisiertes Maschinensteuerungssystem.
US9183065B1 (en) * 2012-11-01 2015-11-10 Amazon Technologies, Inc. Providing access to an application programming interface through a named pipe
US10171612B2 (en) 2015-12-28 2019-01-01 Microsoft Technology Licensing, Llc Caching service with client-enabled routing
RU2692571C1 (ru) * 2018-01-10 2019-06-25 Акционерное общество "Информационные спутниковые системы" имени академика М.Ф. Решетнёва" Контроллер сетевого транспортного протокола
CN108664343B (zh) * 2018-05-09 2022-08-23 顺丰科技有限公司 一种微服务的有状态调用方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271705A1 (en) 2000-03-16 2006-11-30 Garcia-Luna-Aceves J J System and method for discovering information objects and information object repositories in computer networks

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3361663B2 (ja) * 1994-10-03 2003-01-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 通信管理方法
GB2309558A (en) * 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
US6424992B2 (en) 1996-12-23 2002-07-23 International Business Machines Corporation Affinity-based router and routing method
US20030069968A1 (en) 1998-10-01 2003-04-10 O'neil Kevin M. System for balancing loads among network servers
US6505254B1 (en) 1999-04-19 2003-01-07 Cisco Technology, Inc. Methods and apparatus for routing requests in a network
US6578068B1 (en) * 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6687735B1 (en) * 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
US7082476B1 (en) * 2000-05-24 2006-07-25 Cisco Technology, Inc. System and method of optimizing retrieval of network resources by identifying and substituting embedded symbolic host name references with network addresses in accordance with substitution policies
US7089293B2 (en) * 2000-11-02 2006-08-08 Sun Microsystems, Inc. Switching system method for discovering and accessing SCSI devices in response to query
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7043731B2 (en) 2001-07-12 2006-05-09 Qwest Communications International, Inc. Method and system for distributing access to group of objects based on round robin algorithm and only when the object is available
US6968389B1 (en) 2001-07-17 2005-11-22 Cisco Technology, Inc. System and method for qualifying requests in a network
US7290059B2 (en) * 2001-08-13 2007-10-30 Intel Corporation Apparatus and method for scalable server load balancing
US7117243B2 (en) 2001-10-02 2006-10-03 Citrix Systems, Inc. Methods for distributed program execution with file-type association in a client-server network
JP2003122732A (ja) * 2001-10-16 2003-04-25 Nec Corp 情報通信システム
US7047315B1 (en) 2002-03-19 2006-05-16 Cisco Technology, Inc. Method providing server affinity and client stickiness in a server load balancing device without TCP termination and without keeping flow states
US7480737B2 (en) * 2002-10-25 2009-01-20 International Business Machines Corporation Technique for addressing a cluster of network servers
US20060048163A1 (en) * 2004-08-27 2006-03-02 Thierry Bessis Method for routing messages between servers located on the same board
US7921216B2 (en) * 2005-02-01 2011-04-05 Microsoft Corporation System and method for building and using communication binding objects
US20090027495A1 (en) 2007-07-25 2009-01-29 Stas Oskin Internet visual surveillance and management technology for telecommunications, Internet, cellular and other communications companies
US8046625B2 (en) * 2008-02-22 2011-10-25 Hill-Rom Services, Inc. Distributed fault tolerant architecture for a healthcare communication system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271705A1 (en) 2000-03-16 2006-11-30 Garcia-Luna-Aceves J J System and method for discovering information objects and information object repositories in computer networks

Also Published As

Publication number Publication date
US8166200B2 (en) 2012-04-24
CN102369691B (zh) 2013-04-24
WO2010117689A2 (en) 2010-10-14
CA2753878C (en) 2016-08-02
CA2753878A1 (en) 2010-10-14
RU2520360C2 (ru) 2014-06-20
BRPI1008999A2 (pt) 2016-03-22
SG173821A1 (en) 2011-09-29
EP2415213A2 (en) 2012-02-08
WO2010117689A3 (en) 2011-01-13
EP2415213A4 (en) 2015-07-01
JP2012522318A (ja) 2012-09-20
US20100250776A1 (en) 2010-09-30
EP2415213B1 (en) 2019-07-31
RU2011139714A (ru) 2013-04-20
CN102369691A (zh) 2012-03-07
KR20120004433A (ko) 2012-01-12

Similar Documents

Publication Publication Date Title
US11232160B2 (en) Extensible and elastic data management services engine external to a storage domain
US9137172B2 (en) Managing multiple proxy servers in a multi-tenant application system environment
KR101671549B1 (ko) 스마트 라우팅
RU2549135C2 (ru) Система и способ для обеспечения более быстрой и более эффективной передачи данных
US20090327460A1 (en) Application Request Routing and Load Balancing
US20150271256A1 (en) Message Processing Using Dynamic Load Balancing Queues in a Messaging System
CN108028833A (zh) 一种nas数据访问的方法、系统及相关设备
JP6506374B2 (ja) キャッシュ管理
WO2018058998A1 (zh) 一种数据加载方法、终端和计算集群
US10915524B1 (en) Scalable distributed data processing and indexing
US9483493B2 (en) Method and system for accessing a distributed file system
US10701143B1 (en) Server-orchestrated peer-to-peer content sharing in CMS and sync-n-share applications
US20160246517A1 (en) Methods for policy-based data tiering using a cloud architecture and devices thereof
CN110650209B (zh) 实现负载均衡的方法和装置
WO2022247316A1 (zh) 存储对象处理系统、请求处理方法、网关和存储介质
CN113630310A (zh) 一种分布式高可用网关系统
US20130339486A1 (en) Scalable Storage with Programmable Networks
US20190373053A1 (en) Ranked session affinity to improve load balancing efficiency for stateful requests
JP2015094976A (ja) 情報処理装置、情報処理方法、及び、プログラム
CN103609074A (zh) 应用特定web请求路由
CN112860505A (zh) 一种分布式集群的调控方法及装置
US10621148B1 (en) Maintaining multiple object stores in a distributed file system
KR20190119497A (ko) 분산 파일 시스템 기반의 대용량 다중 vod 스트리밍 서비스 제공 시스템 및 그 제공 방법
Maksimović et al. Task Queue Implementation for Edge Computing Platform
Naidu et al. A Distributed Application to Maximize the Rate of File Sharing in and Across Local Networks

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant