KR101847360B1 - 위치 기반 서비스들을 구현하는 방법, 장치 및 시스템 - Google Patents

위치 기반 서비스들을 구현하는 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR101847360B1
KR101847360B1 KR1020177000594A KR20177000594A KR101847360B1 KR 101847360 B1 KR101847360 B1 KR 101847360B1 KR 1020177000594 A KR1020177000594 A KR 1020177000594A KR 20177000594 A KR20177000594 A KR 20177000594A KR 101847360 B1 KR101847360 B1 KR 101847360B1
Authority
KR
South Korea
Prior art keywords
grid
location
information
based service
target
Prior art date
Application number
KR1020177000594A
Other languages
English (en)
Other versions
KR20170018015A (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 KR20170018015A publication Critical patent/KR20170018015A/ko
Application granted granted Critical
Publication of KR101847360B1 publication Critical patent/KR101847360B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/029Location-based management or tracking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/021Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
    • H04L67/18
    • 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/52Network services specially adapted for the location of the user terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/023Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

위치 기반 서비스들을 구현하는 방법, 장치 및 시스템이 설명된다. 방법은 타겟 위치 정보를 포함하는 위치 결정 요청을 수신한 후에 타겟 그리드를 결정하는 단계를 포함하며, 타겟 그리드는 타겟 위치 정보에 대응하는 그리드 및 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 그리드들은 맵을 정사각형들로 분할함으로써 획득된다. 방법은 또한 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계, 위치 상에 데이터 저장을 수행하는 단계, 및 결정된 위치로부터 타겟 그리드에 대응하는 단말 정보를 질의하는 단계를 포함한다.

Description

위치 기반 서비스들을 구현하는 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR IMPLEMENTING LOCATION BASED SERVICES}
본 개시는 통신 기술들의 분야에 관한 것이고, 특히 위치 기반 서비스들을 구현하는 방법, 장치 및 시스템에 관한 것이다.
위치 결정 서비스들로도 불리는 위치 기반 서비스들(Location based services)(LBS)은 이동 통신 네트워크 및 위성 위치 확인 시스템을 조합함으로써 제공되는 부가 가치 서비스들의 하나의 타입으로서, 한 세트의 위치 확인 기술들을 이용하여 이동 단말의 위치 정보(예를 들어, 경도 및 위도 좌표 데이터)를 획득하고, 그 위치 정보를 이동 단말 사용자, 다른 사람 또는 통신 시스템에 제공함으로써 다양한 위치 관련 서비스들을 구현한다. 본질적으로, 위치 기반 서비스들은 넓은 개념을 갖고 공간 위치들과 관련되는 새로운 서비스 사업의 타입이다.
위치 기반 서비스들은 상이한 분야들, 예컨대 건강, 업무, 및 개인 생활에 적용될 수 있다. 서비스들은 사람 또는 객체를 식별하고, 예를 들어 가장 가까운 ATM의 위치 또는 친구 또는 동료의 현재 위치를 결정하고, 클라이언트의 현재 위치에 따라 직접적인 이동 전화 광고, 개인화된 기상 정보, 및 심지어 국부화된 게임을 제공하는 데 사용될 수 있다.
현재, 지리적 위치 정보는 경도 및 위도를 사용함으로써 표현되고 저장되어, 단말의 위치는 정확도의 장점으로 편리하게 결정될 수 있다. 그러나, 인근 단말을 위치 확인하는 프로세스 동안에, 경도 및 위도를 사용함으로써 거리를 산출하는 산출량이 큰 것에 의해, 위치 서버의 매우 낮은 응답 속도를 초래한다.
본 발명의 일 실시예는 위치 기반 서비스들을 구현하는 방법을 제공하며, 방법은,
타겟 위치 정보를 포함하는 위치 결정 요청을 수신한 후에 타겟 그리드를 결정하는 단계 - 타겟 그리드는 타겟 위치 정보에 대응하는 그리드 및 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 그리드들은 맵을 정사각형들로 분할함으로써 획득됨 -;
타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계, 및 그리드 번호를 키워드로서 사용하고 단말 정보를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 데이터 저장을 수행하는 단계 - 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 그리드에 대응하는 정사각형의 측면 길이의 M 배이고, M은 2 이상임 -; 및
결정된 위치 기반 서비스 저장 디바이스로부터의 타겟 그리드에 대응하는 단말 정보를 질의하고, 질의된 단말 정보를 위치 결정 요청의 송신측에 송신하는 단계를 포함한다.
본 발명의 일 실시예는 위치 서버를 더 제공하며, 위치 서버는,
타겟 위치 정보를 포함하는 위치 결정 요청을 수신한 후에 타겟 그리드를 결정하도록 구성되는 그리드 결정 유닛 - 타겟 그리드는 타겟 위치 정보에 대응하는 그리드 및 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 그리드들은 맵을 정사각형들로 분할함으로써 획득됨 -;
타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 구성되는 디바이스 결정 유닛 - 데이터 저장은 그리드 번호를 키워드로서 사용하고 단말 정보를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되고, 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 그리드에 대응하는 정사각형의 측면 길이의 M 배이고, M은 2 이상임 -;
결정된 위치 기반 서비스 저장 디바이스로부터의 타겟 그리드에 대응하는 단말 정보를 질의하도록 구성되는 질의 유닛; 및
질의된 단말 정보를 위치 결정 요청의 송신측에 송신하도록 구성되는 정보 송신 유닛을 포함한다.
본 발명의 실시예들에서 기술적 해결법들을 더 분명히 설명하기 위해, 이하는 실시예들을 설명하기 위해 요구되는 첨부 도면들을 간단히 소개한다. 명백하게, 이하의 설명 내의 첨부 도면들은 본 발명의 일부 실시예들만을 도시하고, 본 기술분야의 통상의 기술자는 창조적 노력들 없이 이러한 첨부 도면들로부터 다른 도면들을 여전히 유도할 수 있다.
도 1은 기존 기술에 따른 시스템의 개략 아키텍처도를 예시한다.
도 2는 본 발명의 일 실시예에 따른 방법의 개략 흐름도를 예시한다.
도 3은 본 발명의 일 실시예에 따른 방법의 개략 흐름도를 예시한다.
도 4는 본 발명의 일 실시예에 따른 시스템의 개략 구조도를 예시한다.
도 5는 본 발명의 일 실시예에 따른 공간 데이터 모델의 개략도를 예시한다.
도 6은 본 발명의 일 실시예에 따른 그리드 분할의 개략도를 예시한다.
도 7은 본 발명의 일 실시예에 따른 그리드 검색의 개략도를 예시한다.
도 8은 본 발명의 일 실시예에 따른 데이터 저장의 개략도를 예시한다.
도 9는 본 발명의 일 실시예에 따른 플레이어의 지리적 정보를 보고하는 방법의 개략 흐름도를 예시한다.
도 10은 본 발명의 일 실시예에 따른 정보를 저장하고 삭제하는 시스템의 개략 구조도를 예시한다.
도 11은 본 발명의 일 실시예에 따른 playerID 3을 삭제하는 데이터 검색 프로세스의 개략도를 예시한다.
도 12는 본 발명의 일 실시예에 따른 해시 테이블의 개략 구조도를 예시한다.
도 13은 본 발명의 일 실시예에 따른 playerID로부터 GridGID로의 역방향 인덱스의 개략 구조도를 예시한다.
도 14는 본 발명의 일 실시예에 따른 버킷 기반 정기 클리닝의 개략도를 예시한다.
도 15는 본 발명의 일 실시예에 따른 위치 서버의 개략 구조도를 예시한다.
도 16은 본 발명의 일 실시예에 따른 위치 서버의 개략 구조도를 예시한다.
도 17은 본 발명의 일 실시예에 따른 위치 서버의 개략 구조도를 예시한다.
도 18은 본 발명의 일 실시예에 따른 위치 서버의 개략 구조도를 예시한다.
도 19는 본 발명의 일 실시예에 따른 위치 기반 서비스 저장 디바이스의 개략 구조도를 예시한다.
도 20은 본 발명의 일 실시예에 따른 위치 기반 서비스 저장 디바이스의 개략 구조도를 예시한다.
도 21은 본 발명의 일 실시예에 따른 위치 기반 서비스 저장 디바이스의 개략 구조도를 예시한다.
도 22는 본 발명의 일 실시예에 따른 위치 기반 서비스 저장 디바이스의 개략 구조도를 예시한다.
도 23은 본 발명의 일 실시예에 따른 위치 기반 서비스 시스템의 개략 구조도를 예시한다.
도 24는 본 발명의 일 실시예에 따른 서버의 개략 구조도를 예시한다.
본 개시의 목적들, 기술적 해결법들 및 장점들을 더 분명히 하기 위해, 이하는 첨부 도면들을 참조하여 더 상세히 본 개시를 설명한다. 명백하게, 설명된 실시예들은 실시예들의 전부보다는 오히려 본 발명의 실시예들의 일부만이다. 창조적 노력들 없이 본 발명의 실시예들에 기초하여 본 기술분야의 통상의 기술자에 의해 획득되는 모든 다른 실시예들은 본 개시의 보호 범위 내에 있을 것이다.
현재, 소비자의 개인 요구들의 지능화에 기초하여, 위치 기반 서비스들에 대한 요구들은 위치 확인 기술들 및 무선 네트워크 액세스 기술들의 개발에 의해 큰 차이로 증가적인 추세를 나타낸다. LBS는 기업의 운영 및 서비스 레벨을 개선할 뿐만 아니라, 더 다양화된 편리한 서비스들을 차량 탑재 위치 확인 기술들의 사용자에게 제공할 수 있다. 어드레스 지점의 내비게이션으로부터 관심 지점의 서비스들로, 및 그 다음 실시간 도로 조건들에 대한 기술들의 적용으로, 위치 확인 기술들의 사용자를 위해, 위치 기반 서비스들은 인근 제품 및 서비스를 발견하기 위해 사용자를 안내할 뿐만 아니라, 사용자에게 더 높은 편리성 및 안전성을 제공할 수 있다.
현재, 위치 기반 서비스들은 차량 탑재 위치 결정 기술 제품에 적용되어 있다. 상호작용의 개념이 LBS 애플리케이션을 악화시키는 프로세스 동안에 차량 탑재 내비게이션으로 통합되어 있다는 점이 위치 확인 기술 시장으로부터 이해되었다. 포토 내비게이션 및 서브젝트 맵들(subject maps)과 같은 고유 기능 모듈들의 증가 및 확장은 사용자가 아주 새로운 개인화된 내비게이션 서비스들을 즐기고, 내비게이션 장비를 직접 사용함으로써 전국 내의 명승지들, 호텔들, 레스토랑들, 주유소들 등에 관한 풍부한 정보를 질의하고, 하나의 키 내비게이션을 달성하는 것을 허용할 뿐만 아니라, 사용자가 네트워크에 기초하여 데이터를 다운로딩하고 업로딩하고, 다른 사용자와의 상호작용 및 통신을 달성하는 것을 허용할 수 있으며, 그것은 장래에 개발 방향들 중 하나가 될 것이다. 게다가, 위치 확인 기술들을 사용하는 것은 또한 개인 사용자 또는 그룹 사용자에게 특수 정보 및 경보 서비스들을 제공할 수 있다. 위치 서버는 또한 단말 사용자에 의해 인근 사용자를 검색할 시에, 예를 들어 사회 활동들을 수행하기 위해 인근 사람을 검색하거나, 연관되는(예를 들어, 동일한 취미를 갖고, 동일한 게임을 플레이하는 등 하는) 인근 사람을 검색할 시에 사용되었다.
기존 위치 기반 서비스 시스템들은 일반적으로 도 1에 도시된 바와 같은 구조를 채택하며, 위치 서버는 단말로부터 지리적 위치 정보를 수신하고, 지리적 위치 정보를 위치 기반 서비스 저장 디바이스들 1 내지 n 내에 저장한다. 위치 서버가 지리적 위치 정보를 파싱할 필요가 있으면, 위치 서버는 또한 지리적 위치 정보를 맵 서버에 송신하고, 맵 서버로부터 지리적 위치 정보의 파싱 결과를 취득할 수 있다. 기존 위치에서, 지리적 위치 정보는 경도 및 위도를 사용함으로써 표현되고 저장된다. 그러나, 인근 단말을 위치 확인하는 프로세스 동안에, 경도 및 위도를 사용함으로써 거리를 산출하는 산출량이 큰 것에 의해, 위치 서버의 매우 낮은 응답 속도를 초래한다.
이것을 고려하여, 본 발명의 일 실시예는 위치 기반 서비스들을 구현하는 방법을 제공한다. 도 2에 도시된 바와 같이, 방법은 이하를 포함한다:
201: 타겟 위치 정보를 포함하는 위치 결정 요청을 수신한 후에 타겟 그리드를 결정하며, 타겟 그리드는 타겟 위치 정보에 대응하는 그리드 및 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 그리드들은 맵을 정사각형들로 분할함으로써 획득된다.
본 발명의 이러한 실시예에서, 그리드들은 맵을 분할함으로써 획득되며, 즉 그리드들은 실제 지리적 위치들에 대응하고 있다. 실제로, 그리드의 측면 길이는 그리드에 대응하는 지리적 위치의 측면 길이이다. 그리드의 측면 길이가 더 작으면, 최종 위치 결정의 정밀도는 더 높아질 것이고; 그리드의 측면 길이가 더 크면, 저장된 그리드들의 양은 더 적고, 검색에 사용되는 시간은 더 적을 수 있다. 특정 길이는 본 발명의 이러한 실시예에 제한되지 않고, 100m는 측면 길이로 추천될 수 있다.
202: 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하고, 그리드 번호를 키워드로서 사용하고 단말 정보를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 데이터 저장을 수행하며, 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 그리드에 대응하는 정사각형의 측면 길이의 M 배이고, M은 2 이상이다.
M의 특정 값은 본원에서 본 기술분야의 통상의 기술자에 의해 설정될 수 있다. 2km의 최대 범위 내 근방에서 단말 정보가 검색되면, 값은 100, 50 등에 설정될 수 있고, 그것의 특정 값은 본 발명의 이러한 실시예에 제한되지 않는다.
203: 결정된 위치 기반 서비스 저장 디바이스로부터의 타겟 그리드에 대응하는 단말 정보를 질의하고, 질의된 단말 정보를 위치 결정 요청의 송신측에 송신한다.
본 발명의 이러한 실시예에서, 지리적 위치들은 그리드 방식으로 분할되고, 분할 후에 획득되는 그리드들은 위치 정보의 저장을 위해 사용되고; 위치 기반 서비스들의 프로세스 동안에, 경도 및 위도는 산출량을 감소시키기 위해 거리를 산출할 필요가 없는 것에 의해, 서버 응답 속도를 개선한다. 게다가, 그리드들이 위치 기반 서비스 저장 디바이스들에 할당될 때, 사용되는 최소 입도는 그리드보다 더 커서, 더 인접한 그리드들은 동일한 위치 기반 서비스 저장 디바이스로 할당될 수 있고, 결정된 타겟 그리드는 수개의 위치 기반 서비스 저장 디바이스들에 집중되는 것에 의해, 위치 기반 서비스 저장 디바이스들의 호출을 감소시키고, 위치 기반 서비스 저장 디바이스들의 산출 압력을 낮추고, 따라서 전체 위치 기반 서비스들의 시스템 성능을 더 개선한다. 게다가, 그리드들의 크기는 위치 결정 정밀도를 개선하고 단일 그리드의 과도한 다량의 위치 정보에 의해 야기되는 충돌들을 감소시키기 위해 작게 설정될 수 있다.
본 발명의 이러한 실시예에서, 위치 기반 서비스 저장 디바이스 내의 위치 정보는 다른 서버에 의해 수집되는 정보로부터 공급될 수 있고, 또한 위치 서버에 의해 직접 수집되는 정보로부터 공급될 수 있다. 본 발명의 일 실시예는 단말의 위치 정보를 취득하고 저장하는 특정 구현 해결법을 제공한다. 상세들은 이하와 같다. 게다가, 방법은 또한,
단말에 의해 보고되는 위치 정보 및 단말 정보를 수신하는 단계; 및 위치 정보가 속하는 그리드, 및 결정된 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계; 및
단말에 의해 보고되는 위치 정보 및 단말 정보를 저장을 위한 결정된 위치 기반 서비스 저장 디바이스에 송신하는 단계를 포함한다.
본 발명의 일 실시예는 바람직한 저장 해결법을 더 제공하며, 이 저장 해결법은 저장된 데이터 오버레이 및 결과적인 데이터 충돌의 조건들을 방지할 수 있다. 상세들은 이하와 같다. 데이터 저장은 또한 단말 정보를 키워드로서 사용하고 그리드 번호를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되고, 방법은,
위치 정보를 삭제하기 위한 명령어를 결정된 위치 기반 서비스 저장 디바이스와는 다른 위치 기반 서비스 저장 디바이스에 송신하여, 저장된 단말 정보에 대응하는 위치 정보를 삭제하는 단계를 더 포함한다.
본 발명의 이러한 실시예에서, 위치 정보를 삭제하기 위한 명령어는 결정된 위치 기반 서비스 저장 디바이스와는 다른 위치 기반 서비스 저장 디바이스에 송신된다. 특정 송신 해결법은 서버 측 상에 단말의 위치 정보의 유일성을 유지하기 위해 브로드캐스팅 방식을 채택할 수 있다.
본 발명의 이러한 실시예에서, 그리드들은 분할 후에 번호화될 수 있고, 그 다음 해시 알고리즘은 그리드들을 위치 기반 서비스 저장 디바이스들로 할당하도록 채택되어, 질의 동안에 질의 속도를 개선하고, 또한 위치 기반 서비스 저장 디바이스들의 후속 확장을 용이하게 한다. 구체적으로, 그리드들은 맵을 정사각형들로 분할함으로써 획득되고, 지리적 위치들의 시퀀스에 따라 번호화되고; 위치 기반 서비스 저장 디바이스 내의 최소 입도의 모든 그리들과 위치 기반 서비스 저장 디바이스 사이의 대응은 해시 알고리즘의 규칙을 따른다.
타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계는 타겟 그리드를 사용하여 해시 검색을 수행해서 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계를 포함한다.
본 발명의 이러한 실시예에서, 위치 기반 서비스 저장 디바이스들의 호출은 감소될 수 있지만, 그것은 위치 서버의 기능들이 하나의 위치 기반 서비스 저장 디바이스 상에 완료될 수 있는 것을 보장할 수 없다. 따라서, 타겟 그리드는 복수의 위치 기반 서비스 저장 디바이스들로 분포될 수 있으며, 이에 기초하여 본 발명의 일 실시예는 이하와 같은 추가 구현 해결법을 제공한다. 게다가, 타겟 그리드가 2개 이상의 위치 기반 서비스 저장 디바이스들에 분포되면, 방법은 위치 기반 서비스 저장 디바이스로부터의 질의된 단말 정보의 패킷 어셈블리를 수행하는 단계를 더 포함한다.
단말 사용자가 단말을 사용함으로써 연속적으로 위치 결정 요청들을 송신할 수 있으므로, 각각의 위치 결정 요청이 위치 결정에 의해 처리되면, 큰 압력이 서버에 야기될 것이고; 게다가, 시간 간격이 매우 짧으면, 위치 결정 결과가 일반적으로 거의 변화되지 않고; 따라서, 그러한 빈번한 위치 결정은 필요하지 않다. 서버의 압력을 낮추고, 불필요한 위치 결정 동작들을 감소시키기 위해, 본 발명의 일 실시예는 이하와 같은 해결법을 제공한다. 단말로부터의 다른 위치 결정 요청이 수신되면, 방법은 이전 위치 결정 요청 후의 시간 간격이 미리 결정된 임계값을 초과하는지를 판단하는 단계, 및 시간 간격이 미리 결정된 임계값을 초과하면, 위치 결정의 실행을 거절하는 단계를 더 포함한다.
본 발명의 이러한 실시예에서, 맵은 그리드들로 분할된다. 그리드의 측면 길이가 더 작으면, 위치 결정 정밀도는 더 높지만, 산출량은 더 크고; 그리드의 측면 길이가 더 크면, 산출량은 더 적고 응답 속도는 더 높다. 둘 다의 장점들을 조합하기 위해, 본 발명의 일 실시예는 이하와 같은 해결법을 제공한다. 타겟 그리드를 결정하는 단계는 테스트 그리드들에서 단말 정보를 포함하는 테스트 그리드에 우선 질의하는 단계 - 테스트 그리드는 타겟 위치 정보에 대응하는 테스트 그리드이고, 테스트 그리드들은 맵을 그리드의 것보다 더 큰 측면 길이를 갖는 정사각형들로 분할함으로써 획득됨 -; 및 질의된 테스트 그리드들에 포함되는 그리드가 타겟 그리드인 것을 결정하는 단계를 포함한다.
본 발명의 이러한 실시예에서, 테스트 그리드의 측면 길이가 더 커서, 큰 그리드는 우선 타겟 그리드 내의 위치 정보 없이 그리드를 필터링하고, 불필요한 검색을 회피하기 위해 사용될 수 있는 것에 의해, 검색량을 감소시키고 시스템 응답 속도를 개선한다.
본 발명의 일 실시예는 도 3에 도시된 바와 같이 위치 기반 서비스들을 구현하는 다른 방법을 더 제공하며, 방법은 이하를 포함한다:
301: 위치 기반 서비스 저장 디바이스에 의해 위치 서버로부터 질의 요청을 수신하며, 질의 요청은 질의되는 타겟 그리드를 포함하고, 데이터 저장은 그리드 번호를 키워드로서 사용하고 단말 정보를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되고; 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 그리드에 대응하는 정사각형의 측면 길이의 M 배이고; M은 2 이상이고; 그리드들은 맵을 정사각형들로 분할함으로써 획득된다.
본 발명의 이러한 실시예에서, 그리드들은 맵을 분할함으로써 획득되며, 즉 그리드들은 실제 지리적 위치들에 대응하고 있다. 실제로, 그리드의 측면 길이는 그리드에 대응하는 지리적 위치의 측면 길이이다. 그리드의 측면 길이가 더 작으면, 최종 위치 결정의 정밀도는 더 높아질 것이고; 그리드의 측면 길이가 더 크면, 저장된 그리드들의 양은 더 적고, 검색에 사용되는 시간은 더 적을 수 있다. 특정 길이는 본 발명의 이러한 실시예에 제한되지 않고, 100m는 측면 길이로 추천될 수 있다.
M의 특정 값은 본원에서 본 기술분야의 통상의 기술자에 의해 설정될 수 있다. 2km의 최대 범위 내 근방에서 단말 정보가 검색되면, 값은 100, 50 등에 설정될 수 있고, 그것의 특정 값은 본 발명의 이러한 실시예에 제한되지 않는다.
임의로, 본 발명의 일 실시예는 위치 기반 서비스 저장 디바이스들 내의 그리드들의 분포 및 그리드들 내의 데이터 저장을 위해 이하와 같은 특정 구현 해결법을 더 제공한다. 위치 기반 서비스 저장 디바이스들에 저장되는 그리드들의 번호들은 해시 알고리즘의 규칙에 따라 저장되고, 해시 버킷을 사용함으로써 시퀀싱된다.
302: 타겟 그리드의 번호를 사용함으로써 질의하고 질의되는 타겟 그리드에 대응하는 단말 정보를 취득한다.
303: 취득된 단말 정보를 위치 서버에 송신한다.
본 발명의 이러한 실시예에서, 지리적 위치들은 그리드 방식으로 분할되고, 분할 후에 획득되는 그리드들은 위치 정보의 저장을 위해 사용되고; 위치 기반 서비스들의 프로세스 동안에, 경도 및 위도는 산출량을 감소시키기 위해 거리를 산출할 필요가 없는 것에 의해, 서버 응답 속도를 개선한다. 게다가, 그리드들이 위치 기반 서비스 저장 디바이스들에 할당될 때, 사용되는 최소 입도는 그리드보다 더 커서, 더 인접한 그리드들은 동일한 위치 기반 서비스 저장 디바이스로 할당될 수 있고, 결정된 타겟 그리드는 수개의 위치 기반 서비스 저장 디바이스들에 집중되는 것에 의해, 위치 기반 서비스 저장 디바이스들의 호출을 감소시키고, 위치 기반 서비스 저장 디바이스들의 산출 압력을 낮추고, 따라서 전체 위치 기반 서비스들의 시스템 성능을 더 개선한다. 게다가, 그리드들의 크기는 위치 결정 정밀도를 개선하고 단일 그리드의 위치 정보의 과도한 다량의 위치 정보에 의해 야기되는 충돌들을 감소시키기 위해 작게 설정될 수 있다.
본 발명의 이러한 실시예에서, 위치 기반 서비스 저장 디바이스 내의 위치 정보는 다른 서버에 의해 수집되는 정보로부터 공급될 수 있고, 또한 위치 서버에 의해 직접 수집되는 정보로부터 공급될 수 있다. 본 발명의 일 실시예는 단말의 위치 정보를 취득하고 저장하는 특정 구현 해결법을 제공하고, 또한 위치 정보의 유일성을 유지하는 특정 구현 해결법을 제공한다. 상세들은 이하와 같다. 게다가, 방법은 또한,
위치 서버에 의해 송신되는 단말 정보 및 위치 정보를 수신하는 단계; 단말 정보에 대응하는 위치 정보가 존재했는지를 판단하기 위해 검색을 수행하는 단계; 및 존재하면, 위치 정보를 삭제하는 단계; 및
위치 정보가 존재하지 않았거나, 완전히 삭제되었다면, 단말 정보를 위치 정보에 대응하는 그리드 내에 저장하는 단계, 및 해시 테이블을 사용함으로써 위치 정보를 저장하는 단계를 포함한다.
본 발명의 일 실시예는 위치 정보를 저장하는 특정 해결법을 더 제공한다. 본 발명의 이러한 실시예에서, 위치 정보는 링크된 리스트의 헤드에 삽입하는 것에 의해 저장되어, 위치 정보는 시간 시퀀스로 저장될 수 있는 것에 의해, 무효 데이터의 후속 삭제를 용이하게 한다. 상세들은 이하와 같다. 임의로, 해시 테이블 값은 링크된 리스트의 데이터 구조를 채택하고, 단말 정보를 위치 정보에 대응하는 그리드 내에 저장하는 단계는 링크된 리스트의 헤드에 삽입하는 것에 의해 위치 정보를 위치 정보에 대응하는 그리드의 링크된 리스트에 삽입하는 단계를 포함한다.
단말의 위치 정보(지리적 정보)가 시간 제한을 갖기 때문에, 단말의 위치 정보는 단말의 지리적 위치의 변화에 따라 무효가 될 수 있다. 그 결과, 위치 기반 서비스 저장 디바이스에 저장되는 위치 정보에 대해, 만료된 위치 정보는 제거될 필요가 있으며, 그것은 위치 결정 정확도를 개선할 뿐만 아니라, 산출량을 감소시키고 시스템 응답 속도를 개선할 수 있다. 게다가, 방법은 또한,
그리드의 복수 시간을 인출하는 단계, 및 복구 시간과 현재 시간 사이의 시간 간격이 미리 결정된 임계값을 초과하면, 링크된 리스트의 뒤로부터 앞으로 순차적으로 만료된 위치 정보를 삭제하는 단계를 포함한다.
위치 기반 서비스 저장 디바이스는 저장되어 있는 많은 그리드들을 가질 수 있고, 또한 많은 해시 버킷들을 가질 수 있다. 따라서, 만료된 데이터의 각각의 제거가 위치 기반 서비스 저장 디바이스 내의 모든 그리드들 상에 수행되면, 그것은 더 많은 시간을 필요로 할 수 있고, 이러한 시간 기간 동안에, 위치 서버는 침체될 수 있어, 위치 서버의 불안정성을 초래한다. 만료된 데이터 제거 프로세스는 위치 기반 서비스들의 안정성을 개선하기 위해 그 상세가 다음과 같은 단계들로 수행될 수 있다. 임의로, 그리드의 복구 시간을 인출하는 단계는,
복구 시간을 인출하기 위해, 미리 결정된 시퀀스에 따라 모든 그리드들로부터 그리드들의 미리 결정된 양을 선택하는 단계를 포함한다.
본 발명의 이러한 실시예에서, 그리드들의 미리 결정된 양은 임의로 설정될 수 있고, 또한 시스템의 바쁨 또는 유휴 정도에 따라 조정될 수 있다. 예를 들어, 시스템이 더 바쁘면, 양은 더 적고; 시스템이 더 유휴이면, 양은 더 많다. 본 발명의 이러한 실시예에서의 해결법이 채택되면, 위치 기반 서비스들의 침체는 야기되지 않을 것이고, 위치 기반 서비스들의 안정성은 개선될 수 있다.
본 발명의 이러한 실시예에서, 위치 정보 및 다른 데이터는 공유 메모리에 저장될 수 있다. 공유 메모리 클리닝의 처리가 실행되면, 데이터 복구가 요구될 수 있다. 그 결과, 본 발명의 일 실시예는 이하와 같은 데이터 복구의 해결법을 더 제공한다. 게다가, 방법은 또한,
위치 정보의 삽입 동작 및 삭제 동작을 로컬 엔드 동작 지원 시스템 로그 내에 기록하는 단계; 및 로컬 엔드 동작 지원 시스템 로그가 만료된 후에, 만료된 로컬 엔드 동작 지원 시스템 로그를 삭제하는 단계; 및
클리링된 메모리 복구의 프로세스 동안에, 로컬 엔드 동작 지원 시스템 로그에서의 기록의 시간 시퀀스에 따라 로컬 엔드 동작 지원 시스템 로그에 이루어지는 기록을 판독하는 단계, 및 동작 지원 시스템 로그에 기록되는 동작을 실행하는 단계를 포함한다.
본 발명의 이러한 실시예에서의 데이터 저장 구조 및 데이터 복구에 기초하여, 본 발명의 일 실시예는 이하와 같은 위치 기반 서비스 저장 디바이스의 호가장 동안에 데이터 복구의 특정 해결법을 더 제공한다. 게다가, 방법은 또한,
위치 기반 서비스 저장 디바이스의 확장 동안에 모든 위치 기반 서비스 저장 디바이스들의 동작 지원 시스템 로그들을 취득하는 단계; 동작 지원 시스템 로그에서 취득되는 기록을 인출하는 단계; 및 현재 인출된 기록이 로컬 엔드 위치 기반 서비스 저장 디바이스에 속하면, 현재 인출된 기록에 대응하는 동작을 실행하는 단계를 포함한다.
이하의 실시예는 일 예로서 인근 플레이어들을 검색하기 위해 이동 전화를 사용하는 게임 플레이어의 적용 시나리오에 따라, 본 발명의 이러한 실시예의 적용 프로세스 및 시스템 구현 프로세스를 상세히 설명할 것이다.
I. 시스템 본체 구조에 대해, 도 4를 참조한다.
위치 기반 서비스(Lbs) 서버는 2개의 기능들을 주로 갖는다. 한 기능은 플레이어의 공간 지리적 정보(즉, 플레이어를 위한 실제의 단말의 지리적 정보는 단말에 위치하는 계정 번호에 대응한다)를 저장하는 것이고, 다른 기능은 예를 들어 플레이어 주위의 2km 내에 위치하는 플레이어와 같이 어떤 플레이어에 가까이 있는 플레이어에게 질의하는 것이다.
Lbs 서버는 플레이어의 지리적 정보의 외부 액세스를 위한 인터페이스를 제공하고, 플레이어의 지리적 정보를 저장하기 위해 개별 서비스로서 존재한다.
Lbs 서버는 요구들을 지원하기 위해 예컨대 플레이어 근방의 플레이어들을 빠르게 검색하고, 플레이어의 지리적 정보를 설정하기 위해 플레이어의 지리적 정보를 적절히 및 효과적으로 조직할 필요가 있다. 도 4는 Lbs 서버의 일반적 구조도이다.
도 4에 도시된 바와 같이, 본 발명의 이러한 실시예의 시스템에서, 게임 서버(GameServer)는 위치 기반 서비스 서버(Lbsservice)와만 통신하며, GameServer는 플레이어의 지리적 정보를 설정하고 플레이어의 지리적 정보가 Lbsservice에 의해 처리되는 것을 요청한다. Lbsservice는 GameServer의 요청을 분석하고, 요청 메시지를 적절한 위치 기반 서비스 저장 디바이스에 송신할 책임이 있다.
GameServer에 의해 제출되고 파싱될 필요가 있는 지리적 정보에 대해, Lbsservice는 SOSO 맵 서버로부터 HTTP 하이퍼텍스트 전송 프로토콜을 통해 파싱 결과를 요청하고, 처리를 적절히 수행한다.
도 4에 도시된 바와 같은 시스템 구조에서, Lbsservice는 에이전트의 기능을 구현하고, 위치 기반 서비스 저장 디바이스(Lbsstore)는 데이터 저장에 책임이 있다. Lbsservice와 Lbsstore 사이의 통신 채널은 tbus를 사용함으로써 구현될 수 있다.
II. Lbs 공간 데이터 모델:
범위 질의를 지원하는 것, 예를 들어 중심과 같은 지점에서 떨어진 특정 거리에서 사람을 검색하는 것은 위치 정보의 저장을 위한 중요 포인트이다. 서버 측 상에서, 데이터 저장 구조는 그러한 질의 모드를 효과적으로 지원하는 것이다. 이러한 점에 기초하여, 글로벌 맵은 이차원으로 처리된 후에 N*M 그리드들로 분할될 수 있으며, 각각의 그리드는 동일한 크기를 갖는 정사각형이다. 플레이어의 지리적 정보는 도 5에 도시된 바와 같이, 플레이어의 현재 2차원 좌표들(x, y)에 따라 상이한 그리드에 저장된다.
플레이어의 특정 지점 근방의 플레이어들을 검색하는 적용에서, 이하의 절차가 수행될 수 있다:
1. 우선 플레이어의 지리적 위치(x, y)를 중심으로서 사용하고, 거리 r을 반경으로서 사용함으로써 원을 얻는다.
2. 원의 외접된 정사각형을 결정하기 위해 산출한다.
3. 그리드들이 외접된 정사각형에 포함되는지를 판단하기 위해 산출하며, r의 반경 내에 위치되는 모든 플레이어들의 정보는 이러한 그리드들에 저장된다.
4. 조건을 충족시키는 플레이어를 발견하기 위해 이러한 그리드들을 검색한다.
도 5에 도시된 바와 같이, r의 반경 내에 위치되는 그리드들은 그리드들(1, 2, 3, 4, 5, 6, 7, 8, 및 9)을 포함한다. 따라서, 그것은 정보가 이러한 9개의 그리드들에 저장되는 모든 플레이어들을 발견하고, 그 다음 각각의 플레이어가 원의 외접된 정사각형에 위치되는지를 판단하기 위해 산출할 필요만 있다. 정사각형에 위치되는 플레이어는 조건을 충족시키는 플레이어이다. 이러한 방식으로, 지점(x, y)에서 떨어진 r의 거리 내에 위치되는 플레이어는 이러한 9개의 그리드들 내의 플레이어들의 탐색에 의해서만 질의될 수 있다.
공간 데이터 모델에 대한 전술한 요건들에 기초하여, 본 발명의 일 실시예는 이하와 같은 상세한 설계 해결법을 제공한다:
2.1 지구 기반 좌표들의 2차원 처리:
지구는 40,076km 길이의 적도 및 40,009km 길이의 자오선을 갖는 약간 평평한 구이다. 지구는, 적도를 직사각형의 장측으로서 대략 사용함으로써(우리가 벽에 거는 글로벌 맵을 참조하여) 직사각형으로 변환된다. 따라서, 직사각형의 길이는 적도의 길이와 동일하다. 40,000km가 직사각형의 길이로서 사용되면, 폭은 20,000km이다.
1도 경도에 대해, 표현된 길이는 40,000km/360으로 간단히 생각되고, 1도 위도에 대해, 표현된 길이는 20,000km/180이다.
180도 동쪽 경도 및 90도 북쪽 위도에 위치되는 지점은 원점으로 선택되고, 경도의 라인은 X 축을 나타내고, 그것의 양의 방향은 동쪽으로부터 서쪽으로이다. 위도의 라인은 Y 축을 나타내고, 그것의 양의 방향은 북쪽으로부터 남쪽으로이다. 예를 들어, 170도 동쪽 경도 및 40도 북쪽 위도의 좌표들은 x = (180-170)*40,000km/360, y = (90-40)*20,000km/180으로 2차원 처리된다.
2.2 그리드 분할:
본 발명의 이러한 실시예의 해결법에서, 그리드는 100m의 폭을 갖는 정사각형일 수 있다. 즉, 지구는 2차원으로 처리된 후에 100m의 폭을 갖는 복수의 정사각형들로 분할된다. 플레이어의 정보가 위치되는 그리드는 플레이어의 좌표들(x, y)에 따른 산출에 의해 결정되고, 데이터는 이때 그리드에 저장된다. 각각의 그리드는 고유 번호 GridGID를 갖는다. 번호 GridGID는 도 6에 도시된 바와 같이 변화된다.
도 6은 400 m*400 m의 범위 내에서 그리드들의 번호 변화의 조건들을 나타낸다. 도 6에 도시된 바와 같은 지리적 영역은 4*4 그리드들로 분할되고, 따라서 번호화는 원점에서 시작하고 번호들은 X 축의 방향을 따라 증가된다.
2차원으로 처리되었던 지구에 대응하여, 2차원으로 처리된 후의 직사각형 맵의 길이는 40,000km이고, 그것의 폭은 20,000km인 것으로 공지되어 있다. 게다가, 그리드의 폭은 100m이다. 지점(x, y)에 대해, 대응하는 GridGID를 산출하는 데 사용되는 식은 이하와 같다:
GridGID(x, y) = ((40000*1000)/100)*(y/100) + x/100 + 1;
따라서, 지점(x, y)에 위치되는 플레이어에 대해, 그것의 GridGID는 상기 GridGID 산출 식에 따라 산출될 수 있다.
2.3 그리드 검색:
그리드 검색은 도 7에 도시된 바와 같이, 나선형 검색 알고리즘을 사용할 수 있다. A가 중심 검색 지점(플레이어가 위치되는 그리드)인 것을 가정하면, A 근방의 사람에 대한 검색은 화살표의 방향을 따라 순차적으로 수행된다.
2.4 데이터 저장
전술한 실시예에서, 지구는 100m의 측면 길이를 갖는 그리드들로 분할되었으며, 플레이어의 정보는 그것의 위치에 따라 상이한 그리드에 저장된다. 구체적으로, 플레이어의 지리적 정보가 저장될 때, GridGID는 키(키 값, 또한 때때로 키워드로 칭해짐)로 선택될 수 있고, 그리드 내의 플레이어의 정보는 도 8에 도시된 바와 같이, 값으로서 해시 테이블 내에 저장된다.
인근 플레이어가 질의될 때, 그리드 번호는 2.2에 기록되는 식에 따라 산출되고, 그 다음 플레이어의 정보는 그리드 번호에 따라 해시 테이블로부터 인출되고, 조건을 충족시키는 플레이어는 이때 산출을 통해 결정된다.
III. 위치 서버 및 위치 기반 서비스 저장 디바이스의 데이터 저장 및 처리 흐름의 설계:
Lbs는 2개의 부분들, 즉 Lbsservice 및 Lbsstore를 주로 포함한다. 그것은 외부 액세스의 인터페이스를 제공하기 위해 에이전트의 역할을 하고, 외부 환경은 Lbsservice와만 통신한다.
Lbsstore는 플레이어의 공간 지리적 정보를 조직하고, 플레이어의 공간 지리적 정보를 저장할 책임이 있다. Lbsstore 내의 데이터 저장 동안에, 데이터는 공유 메모리에 저장되고, 플레이어의 정보는 클리닝된 공유 메모리가 재시작될 때 데이터 복구를 수행하는 편의를 위해, 동작 지원 시스템(operations support system)(OSS) 로그에 기록된다.
이하는 이러한 2개의 부분들을 상세히 설명한다.
3.1 Lbsservice의 상세한 설계:
에이전트의 역할을 하는 Lbsservice는 GameServer, Lbsstore 및 SOSO 맵 서버 사이의 통신을 조정할 책임이 있다. 상기 설명된 바와 같이, Lbs 서버의 기능은 플레이어의 공간 지리적 정보를 저장하고 플레이어의 인근 플레이어들을 질의하는 것으로 공지되어 있다.
플레이어의 공간 정보를 저장하는 기능에 대해, 플레이어의 지리적 정보를 보고하는 흐름도인 도 9를 참조한다.
우선, 플레이어는 개인 지리적 위치 정보를 클라이언트로부터 GameServer로 송신하고, 그 다음 GameServer는 수신된 지리적 위치 정보를 Lbsservice에 전송한다. 지리적 정보를 수신한 후에, Lbsservice는 지리적 위치 정보를 SOSO 맵 서버(맵 서버)에 송신하고 지리적 정보를 파싱하는 것을 요청한다(HTTP가 사용될 수 있고, 프로그램에서, CURL(URL 그래머를 사용함으로써 커맨드 라인 방식으로 동작하는 오픈 소스 파일 전송 툴)은 HTTP 요청을 송신하고 HTTP 데이터를 수신하기 위해 사용됨). SOSO 맵 서버는 지리적 정보를 파싱하는 결과를 다시 Lbsservice에 송신하고, Lbsservice는 위치 정보를 파싱하고, 위치 정보가 저장되어야 하는 Lbsstore 서버의 번호를 결정하기 위해 산출하고, 그 다음 플레이어의 지리적 정보를 산출을 통해 결정되는 Lbsstore에 송신한다. Lbsstore는 장래의 재시작 동안에 데이터 복구를 수행하는 편의를 위해, 플레이어의 지리적 정보 및 데이터를 저장하고, OSS 로그 내에 기록한다. 저장을 완료한 후에, Lbsstore는 저장이 성공적으로 완료되었는지를 Lbsservice에 통지하기 위해, 저장 결과 응답을 Lbsservice에 송신하고, 그 다음 Lbsservice는 수신된 저장 결과 응답을 게임 서버에 전송한다.
상기 실시예를 통해, 각각의 플레이어의 위치 정보가 수집될 수 있고, 그 다음 플레이어의 인근 플레이어들을 취득하는 기능이 구현될 수 있다. 프로세스는 이하와 같이 설명된다:
우선, 플레이어는 메시지 요청을 GameServer을 통해 Lbsservice에 송신하며, 메시지의 내용은 플레이어의 자체 위치 정보를 포함하고, 위치 정보는 2차원 좌표일 수 있고, 또한 SOSO 맵 서버에 의해 파싱될 필요가 있는 위치 스트링일 수 있다. 게다가, 메시지 패킷은 인근 거리 범위(radious), 및 타임아웃 제한(expireTm, 즉 특정 시간 간격 내에 갱신되는 플레이어의 정보만이 요구됨)을 더 포함한다.
플레이어의 위치 정보가 SOSO 맵 서버에 의해 파싱될 필요가 있는 문자 스트링이면, Lbsservice는 우선 HTTP 메시지를 SOSO 맵 서버에 송신하고, 그 다음 SOSO 맵 서버는 위치 파싱을 수행하여 플레이어의 2차원 좌표들을 획득한다.
Lbsservice가 플레이어의 2차원 좌표들(x, y)을 획득한 후에, 원의 외접된 정사각형은 좌표들(x, y)을 갖는 지점을 원점으로서 사용하고 radious를 반경으로서 사용함으로써 산출을 통해 결정된다. 따라서, 인근 플레이어들의 데이터는 외접된 정사각형에 포함되는 그리드들에 모두 위치된다. 산출은 그리드들이 외접된 정사각형에 포함되는지를 판단하고, 그 다음 Lbsstore가 그것에 저장되어 있는 대응하는 그리드의 데이터를 갖는지를 판단하기 위해 수행된다. 그 다음, 요청은 이러한 Lbsstore들에 송신된다. 도 5를 참조한다.
인근 플레이어들이 번호(1 내지 9)를 갖는 그리드들에 포함되는 것은 도 5로부터 공지될 수 있다. 번호(1 내지 9)를 갖는 그리드들에 포함되는 데이터는 3개의 Lbsstore들, 즉 N1, N2 및 N3에 분포되는 것으로 가정된다. 그 다음, 질의 요청은 이러한 그리드들에서 플레이어들의 정보를 요청하기 위해 3개의 Lbsstore들에 송신되는 것에 의해, 플레이어의 인근 플레이어들의 정보를 취득한다.
상기 실시예에서, Lbsstore는 반경 및 플레이어의 좌표 지점에 따라 산출을 수행하여 인근 플레이어들을 결정하고, 그 다음 결과를 Lbsservice에 리턴시킬 수 있다. 그 다음, Lbsservice는 Lbsstore에 의해 리턴되는 결과를 어셈블링하고 어셈블링된 결과를 GameServer에 송신하고, GameServer은 추가 처리를 수행한다. GameServer에 의한 수신된 결과의 처리는 본 발명의 이러한 실시예에 제한되지 않는다.
이하는 Lbsservice의 기능들에 대한 Lbsservice의 설계 해결법을 도입한다.
3.1.1 플레이어의 반복된 지리적 정보의 제거:
플레이어의 지리적 정보의 설정 동안에, 플레이어에 의해 이전에 보고된 지리적 정보는 만료된 지리적 정보에 의해 데이터 에러를 방지하고, 위치 결정 서비스의 정확도를 개선하기 위해, 제거될 필요가 없다. Lbsservice는 어느 Lbsstore가 플레이어의 이전 지리적 정보를 저장했는지 인식하지 못하기 때문에, 현재 지리적 정보가 저장되는 Lbsstore를 결정하기 위해 산출한 후에, Lbsservice는 지리적 정보의 저장을 구현하기 위해 설정 명령어의 메시지를 Lbsstore에 송신한다. 그 다음, 삭제 명령어의 메시지는 브로드캐스팅 방식으로 모든 다른 Lbsstore들에 송신되어, 삭제 동작을 수행하여 플레이어의 지리적 정보를 삭제한다. 도 10를 참조한다.
도 11은 playerID 3을 삭제하는 개략도를 도시한다. 플레이어의 플레이어 식별(playerID)은 삭제 메시지 패킷에 포함된다. playerID를 키로서 갖고 GridGID를 값으로서 갖은 해시 테이블은 Lbsstore 상에 설정된다. 삭제 동안에, GridGID는 삭제 메시지가 브로드캐스팅될 때 playerID에 따라 많아야 하나의 Lbsstore 상에서만 발견될 수 있다. 플레이어의 정보는 지리적 정보가 저장되는 해시 테이블로부터 GridGID에 따라 삭제되고, 그 다음 playerID와 GridGID 사이의 인덱스 관계가 삭제된다.
3.1.2 그리드가 속하는 Lbsstore의 번호의 결정:
본 발명의 일 실시예에서, 지구는 100*100 그리드들로 분할되고, 각각의 그리드는 GridGID를 갖는다. 플레이어의 정보를 저장하는 복수의 Lbsstore들이 있을 수 있고, GridGID1의 그리드 번호를 갖는 플레이어의 정보에 대해, 그것은 플레이어의 정보가 구체적으로 저장되는 Lbsstore를 결정할 필요가 있다.
N Lbsstore 서버들이 있는 것을 가정하면, 그리드의 데이터, GridGID1이 저장되는 Lbsstore의 번호 M1에 대해, 이하의 산출이 간단히 수행될 수 있다:
M1 = hash(GridGID1) % N;
그러나, 그것은 예를 들어 플레이어 주위의 1km 내에서 인근 플레이어들을 검색하도록 의도하면, 검색되는 그리드들의 양이 대략 2000/100*2000/100=400인 단점을 갖고; 해시 알고리즘을 사용함으로써 400 개의 그리드들이 저장되는 Lbsstore들의 번호들을 산출하는 결과는 모든 Lbsstore들을 포함할 수 있다. 즉, 인근 사람들을 검색하는 동작은 모든 Lbsstore들로부터 데이터를 요청할 필요가 있으며, 그것은 Lbsstore들에 데이터 처리의 매우 큰 압력을 야기할 수 있다.
인근 사람들을 검색하는 단일 요청이 구현될 수 있고, 대부분의 데이터가 수개의 머신들에 집중되면, Lbsstore들 상에서 데이터 처리의 압력은 크게 감소될 것이다. 본 발명의 이러한 실시예에서, 범위 내의 데이터는 더 큰 입도를 사용함으로써 중앙집중식 방식으로 동일한 머신에 저장될 수 있다. 즉, 동일한 머신의 범위 내의 저장의 최소 입도는 100m보다 더 커야 한다. 그 이유는 그리드의 크기가 분할 후에 100*100이기 때문이다. 본 발명의 이러한 실시예에서, 지구는 이전 분할 해결법에 따라 10,000*10,000의 크기를 갖는 그리드들로 더 분할된다(10,000이 과도하게 크면, 그것은 조정될 수 있고, 100의 정수 배수가 실현가능함). 이러한 방식으로, 큰 그리드의 데이터는 동일한 머신으로 분배되고 저장될 수 있다.
큰 그리드의 크기가 10,000*10,000일 때, 큰 그리드는 10,000 개의 작은 그리드들을 포함하며, 즉 모든 10,000 개의 작은 그리드들의 데이터는 동일한 머신에 저장된다. 각각의 큰 그리드는 또한 작은 그리드들의 이전 규칙에 따라 번호화되고, 번호는 VirtualMachineGridGID로 칭해지고, 아래에 GridGID로 언급된다.
VirtualMachineGridGID(GridGID)가 속하는 Lbsstore의 번호는 이하와 같은 좌표 지점(x, y)에 대한 산출을 통해 결정된다:
우선, VirtualMachineGridGID는 이하와 같이 산출된다: VirtualMachineGridGID = ((40000*1000)/10000)*(y/10000) + x/10000 + 1; N Lbsstore들이 있는 것을 가정하면, 저장된 좌표 지점(x, y)이 위치되는 Lbsstore의 번호 M1은 이하와 같이 산출된다: M1 = hash(VirtualMachineGridGID) % N.
Lbsservice가 플레이어의 지리적 정보를 저장할 때, 플레이어의 지리적 정보가 저장되는 Lbsstore의 번호 M은 상기 방식으로 산출되고, 그 다음 플레이어의 지리적 정보는 Lbsstore에 분배된다. 그 다음, Lbsstore는 GridGID를 산출하고, 데이터를 해시 테이블 내에 저장한다.
우선, 원의 외접된 정사각형은 플레이어의 좌표들 및 반경에 따른 산출을 통해 결정되고, 그 다음 큰 그리드들이 외접된 정사각형에 포함되는 것으로 결정된다(동일한 산출 방식이 이전과 같이 사용되지만, 그리드의 측면 길이가 증가됨). 큰 그리드의 VirtualMachineGridGID(GridGID)가 획득된 후에, 대응하는 Lbsstore의 번호는 상기 식에 따라 산출될 수 있다.
분명히, 본 발명의 이러한 실시예에서, 범위 내의 데이터는 인근 사람들을 검색하는 요구들을 충족시키기 위해, 더 큰 입도를 사용함으로써 중앙집중식 방식으로 동일한 머신에 저장된다(인근 사람들을 검색하는 범위는 무한 범위가 아닐 것이고; 그렇지 않으면, 그것은 의미가 없으며; 범위는 현재 프로그램에 제한되는 바와 같이 최대한으로 2km임). 인근 사람들을 검색하는 현재 단일 요청은 중앙집중식 방식으로 1 또는 2 Lbsstore들에 분배되고, 최대한으로 4 Lbsstore들에 분배될 수 있다. 그러한 방식으로, 이러한 요청에 의해 Lbsstore에 야기되는 압력은 크게 감소될 수 있다.
3.3.3 Lbsservice에 의한 데이터 어셈블링:
인근 플레이어들을 요청할 때, 인근 플레이어들의 정보는 복수의 Lbsstore들에 분포될 수 있으며, 즉 Lbsservice는 완전한 질의 결과를 획득하기 위해, 복수의 Lbsstore들에 의해 리턴되는 데이터를 수신하고, 그 다음 다수의 데이터를 어셈블링하고 어셈블링된 데이터를 GameServer에 리턴시킬 필요가 있다.
이하의 데이터 구조는 Lbsservice에 정의될 수 있다:
struct tagNearPlayersInfo
{
int iUpdateTm; // the time of sending a request, used for timeout processing
int iNeedDataParts; // the total amount of data that should be received
int iReceivedDataPart; // the total amount of data that has been received
int iPosX; // an X-coordinate of a player
int iPosY; // a Y-coordinate of a player
int iSeq; // a serial number
uint32_t dwBusID; // a bus address of a GameSvr that sends a message
int iPlayerCnt; // the amount of players
tagplayerDetail stPlayerList[MAX_LBS_PLAYER_LIST_NUM];
};
그리고 게다가, playerID를 키로서 갖고 tagNearPlayersInfo를 값으로서 갖은 해시 테이블이 설정된다. Lbsservice가 인근 플레이어들의 정보를 요청하는 요청을 복수의 Lbsstore들에 송신할 때, Lbsservice는 playerID를 키로서 갖는 하나의 데이터를 맵(일 타입의 텍스트 파일)에 삽입하며, 삽입 시간, 수신되었던 데이터, 수신되어야 하는 데이터(즉, 요청이 분배되는 Lbsstore들의 양), 메시지의 일련 번호 등이 기록된다. Lbsservice가 Lbsstore로부터 응답되는 하나의 데이터를 수신할 때, iReceivedDataPart는 1만큼 증가되고, iNeedDataParts가 iReceivedDataPart와 동일하거나(즉, 완전한 데이터가 수신되었거나), 시간이 만료되면, 수신된 데이터는 GameServer에 송신된다.
맵을 사용하는 것은 또한 플레이어에 의해 요청의 빈도를 제어하는 기능을 가능하게 할 수 있다. 예를 들어, 플레이어가 인근 플레이어들의 정보를 취득하는 제1 요청을 송신하고, 다른 요청을 즉시 송신하면, 이때 플레이어의 정보는 맵에 포함되어야 하므로, 제2 요청은 직접 거절될 수 있다. 서버 측 상에서, 타임아웃 제한이 10s로 정의되며, 즉 플레이어가 10s 내에 인근 플레이어들의 정보를 취득하는 2개의 요청들을 송신하면, 제1 송신된 요청만이 처리된다.
3.3.4 프로그램에 의해 사용되는 해시 함수:
전술한 실시예들의 설명에서, 해시 처리가 VirtualMachineGridGID 상에 한 번 수행되고, 그 다음 플레이어의 정보가 위치되는 Lbsstore의 번호가 산출된다.
데이터가 Lbsstore 상에서 플레이어의 GridGID에 따라 해시 테이블에 삽입될 때, hash(GridGID)가 우선 산출되고, 데이터가 위치되는 해시 버킷(해시 버킷 시퀀싱)의 번호가 hash(GridGID)%hashnum을 사용함으로써 획득된다. 그 이유는 GridGID의 산출 규칙이 매우 강하기 때문이며, 그것은 일부 그리드들의 데이터가 동일한 해시 버킷에 집중되는 것을 야기할 수 있다. 따라서, 본 발명의 이러한 실시예에서, GridGID는 데이터 무작위성을 증가시키기 위해 다시 한 번 해시 처리가 더 제공될 수 있다.
전체 지구가 2차원으로 처리된 후에, 그리드들의 전체 양은 80억 개이다. 상이한 그리드들을 구별하기 위해, uint64_t type(64 비트 무부호 정수)의 데이터는 GridGID를 저장하는 데 사용될 수 있다. GridGID의 더 좋은 분포 성능을 달성하기 위해, 이하의 왕/젠킨스(Wang/Jenkins) 해시 알고리즘이 GridGID에 해시 처리를 수행하기 위해 채택된다.
uint64_t CLbsPosConvert::hash64shift(uint64_t ullKey)
{
ullKey =(~ullKey) +(ullKey << 21);
ullKey = ullKey ^(ullKey >> 24);
ullKey =(ullKey +(ullKey << 3)) +(ullKey << 8);
ullKey = ullKey ^(ullKey >> 14);
ullKey =(ullKey +(ullKey << 2)) +(ullKey << 4);
ullKey = ullKey ^(ullKey >> 28);
ullKey = ullKey +(ullKey << 31);
return ullKey;
}
3.2 Lbsstore의 상세한 설계:
Lbsstore는 플레이어의 지리적 정보를 저장하기 위해 사용된다. 본 발명의 이러한 실시예에서, 공유 메모리 상의 해시 테이블은 플레이어의 지리적 정보를 저장하는 데 사용될 수 있다. 지구는 100*100 그리드들로 분할되고, 플레이어의 정보는 그러한 그리드에 저장된다. 해시 테이블의 키는 그리드의 GridGID이고, 그것의 값은 그리드 내의 플레이어의 정보이다. 플레이어들의 양은 일부 그리드들에서 매우 크고, 일부 다른 그리드들에서 매우 작을 수 있다. 따라서, 해시 테이블은 그리드들에서 플레이어들의 상이한 양을 저장하는 것을 지원할 필요가 있다. 어레이가 값을 위해 사용되면, 공유 메모리의 이용 속도가 감소될 수 있고, 어레이의 크기는 그리드의 플레이어들의 최대 양을 추정하는 것이 불가능한 문제이다.
따라서, 본 발명의 이러한 실시예에서, 값은 링크된 리스트를 사용함으로써 저장되고, 그리드들 내의 플레이어들은 링크된 리스트의 형태로 링크된다. 링크된 리스트의 헤드에 삽입하는 방법은 가장 최근에 보고된 데이터가 링크된 리스트의 앞에 배치되는 것을 보장하고, 링크된 리스트 내의 데이터가 보고 시간에 따라 시퀀싱되는 것을 논리적으로 보장하기 위해 채택된다. 이러한 특징은 플레이어의 정보 가비지 컬렉터(garbage collection)(GC, 즉 플레이어의 만료된 정보를 제거함) 동안에, 및 시점 내에 지리적 정보를 보고하는 플레이어들만이 인근 플레이어들의 검색 동안에 질의될 때 유용하다.
도 12는 플레이어의 정보를 저장하는 해시 테이블의 구조도이다.
도 12에서, GridIndexNode는 그리드를 나타내고, 3 그리드 노드들의 링킹은 hash(key) 충돌을 나타낸다. 충돌은 링크된 리스트 방식으로 해결될 수 있다. 플레이어 노드, 즉 PlayerNode의 정보는 각각의 그리드 노드, 즉 GridIndexNode에 열거될 수 있다. 그리드에 위치되는 플레이어들의 양은 그리드 내의 PlayerNodes의 양을 표시한다. PlayerNode들은 링크된 리스트의 형태로 링크된다.
GridIndexNode의 구조 형태는 이하와 같다:
struct tagCGridIndexNodeInfo
{
int iPlayerNum; // the amount of players in a grid
int iPlayerIndex; // an index of a player in a shared pool of players
int iLastGcTm; // the time of a pervious GC(the time for deleting expired information of a player)
void Init()
{
iPlayerIndex = NIL_PLAYER_INDEX;
iPlayerNum = 0;
iLastGcTm = 0;
}
};
여기서, iPlayerNum은 그리드 내의 플레이어들의 전체 양을 유지하는 데 사용되고, iLastGcTm은 GC 처리의 효율을 개선하고, 불필요하게 반복된 GC를 회피하는 데 사용되는 이전 그리드 GC의 시간이다.
PlayerNode의 구조 형태는 이하와 같다:
// geographical information of a player
struct tagCPlayerPosInfo
{
int iUpdateTm; // the time of updating information, absolute time
int iXpos; // an X-coordinate, unit: m
int iYpos; // a Y-coordinate, unit: m
uint32_t uiPlayerID; // a player's ID
int iNextPlayerPos; // an index of the next player in a same grid in a shared memory pool
void Init()
{ iUpdateTm = 0;
iXpos = -1;
iYpos = -1;
uiPlayerID = 0;
iNextPlayerPos = NIL_PLAYER_INDEX;
}
};
그리고 게다가, 도 13에 도시된 바와 같이, Lbsstore에서 플레이어의 정보의 유일성을 유지하기 위해, 각각의 Lbsstore는 playerID로부터 GridGID로의 역방향 인덱스를 갖는다.
따라서, 플레이어의 정보가 Lbsstore로 추가될 때, 검색은 우선 역방향 인덱스 리스트 상에 수행되고, 플레이어의 정보가 만료했으면, 정보가 삭제되고, 그 다음 플레이어의 새로운 지리적 정보는 공유 메모리에 삽입된다.
역방향 인덱스 구조 내의 데이터는 이하와 같이 하나의 gridGID만을 포함한다:
// index information of a player
struct tagCPlayerIndexInfo
{
uint64_t ullGridGid;
void Init()
{
ullGridGid = 0;
}
};
3.2.1 Lbsstore에 의한 만료된 데이터의 처리, 즉 GC 처리:
플레이어의 지리적 정보가 시간 제한을 갖기 때문에, 플레이어의 지리적 위치의 변화에 따라, 플레이어의 지리적 정보는 무효가 될 것이다. 따라서, Lbsstore에 저장되는 데이터에 대해, 플레이어의 만료된 지리적 정보는 제거될 필요가 있다. 해결법에서, 버킷 기반 정기 클리닝 방식은 Lbsstore 상에 플레이어의 만료된 지리적 정보를 제거하도록 채택된다. 도 14를 참조한다.
해시 테이블은 저장되어 있는 수십만 개의 플레이어의 정보를 가질 수 있고, 또한 수십만 개의 버킷들이 있다. 전체 스캔이 각각의 정기 클리닝 동안에 해시 테이블 상에 수행되는 것으로 가정된다. 시간 지속이 t이면, Lbsstore는 t의 기간 내에 외부 서비스들의 능력을 상실할 것이다. 게다가, 플레이어의 정보에 대한 타임아웃 제한은 몇 시간일 수 있어, 모든 데이터를 하나의 단계에서 처리하는 것이 불필요하다.
상기 이유에 기초하여, Lbsstore는 버킷 기반 정기 클리닝 방식을 채택하며, 즉 해시 버킷들의 제한된 양만을 매번 처리하고, 틱(tick)의 다음 시간에 처리될 필요가 있는 버킷의 번호를 기록한다. 도 14를 참조한다.
m 버킷들이 매번 처리되고, 전체 해시 테이블이 N 버킷들을 갖고, 틱의 시간 간격이 T이고, 플레이어의 정보의 타임아웃 제한이 L인 것으로 가정된다. 따라서, 테이블의 각각의 스캔에 대한 시간은 Total = (N/m)*T이다. Total <= L이기만 하면, 만료된 데이터가 적시에 제거될 수 있다. m 및 T의 적절한 값은 외부 서비스들에서 Lbsstore의 능력에 영향을 미치는 것 없이, 만료된 데이터가 Lbsstore에 의해 적시에 제거되는 것을 보장하기 위해 설정될 수 있다. 예를 들어, 각각의 틱에서 처리되는 버킷들의 양은 500일 수 있다. 도 14에서, 각각의 틱에서 처리되는 버킷은 3 버킷들 내의 값이다.
3.2.2 Lbsstore 상에서 인근 사람들을 검색하는 방식:
전술한 실시예들에 기록되는 데이터 모델로부터, 인근 사람들을 검색할 때, 인근 범위를 반경으로서 갖는 원의 외접된 정사각형이 우선 획득되고, 그 다음 정사각형 내의 그리드들은 이러한 그리드들 내의 어느 데이터가 조건을 충족하는지를 더 판단하기 위해 식별되는 것이 공지될 수 있다. 그것은 거리의 산출과 관련된다.
분할에 의해 획득되는 그리드들은 작으며, 구체적으로 100*100의 크기를 갖는다. 그 결과, 인근 범위 내의 외접된 정사각형이 산출을 통해 결정되고, 정사각형에 포함되는 그리드들이 결정된다. 그리드가 정사각형에 포함되기만 하면, 그리드 내의 모든 플레이어들의 정보는 인근 범위에 속하고, 에러는 허용가능해야 하는 100m를 초과하고 있지 않는 것이 생각된다. 도 5를 참조한다. 도 5에서, r의 반경 내의 인근 플레이어들은 적색 정사각형에 위치되지만, 그리드들(1, 2, 3, 4, 6, 7, 및 9) 내의 플레이어들이 이러한 범위에 위치되는 것이 간단히 생각될 수 있다. 그리드들의 크기가 100*100이므로, 특정 에러가 허용되며, 즉 100m 미만이다. 그리드의 측면 길이가 주어지면, 에러는 그리드의 측면 길이 미만이다.
상기 산출 방식을 사용함으로써, 거리 산출이 생략될 수 있다. 그것은 정사각형에 포함되는 그리드들을 발견하고, 그리드들에서 플레이어들의 데이터를 출력할 필요만이 있어서, 산출량은 크게 감소될 것이다.
상기 해결법은 제1 레벨 해시에 기초하지만, 2km(최대 허용가능 범위는 2km임) 내에 위치되는 인근 플레이어들을 검색할 때, 검색될 필요가 있는 그리드들의 양은 (4000/100+1)*(4000/100+1) = 1681이며, 즉 1681 그리드들 내의 많은 그리드들이 데이터를 가져도, 1600 사이클들이 요구된다. 해시 테이블로부터 값(키 값), 즉 getvalue(key)를 취득하는 1600 회 동안, 검색 횟수가 클 것이다.
검색 횟수가 커지는 문제를 해결하기 위해, 본 발명의 일 실시예는 단일 그리드의 측면 길이를 증가시키는 해결법을 제공한다. 예를 들어, 단일 그리드의 측면 길이가 200*200이면, 검색 횟수는 400으로 변화된다. 그러나, 그리드 내의 데이터가 4배만큼 확장되면, 그것은 프로그램의 GC가 영향을 받는지 등을 고려할 필요가 있다. 동일한 그리드는 다량의 데이터를 가질 수 있고, 더 많은 데이터 충돌들이 해시 버킷에서 발생할 것이다.
본 발명의 일 실시예에 의해 제공되는 다른 해결법은 이하와 같다: 맵은 제2 레벨 해시를 설정하기 위해 1km*1km 그리드들로 분할되고; 검색 동안에, 제1 레벨 해시, 즉 1km*1km의 그리드가 검색되고, 100의 크기를 갖는 어레이가, 데이터를 갖는 그리드를 기록하기 위해 큰 그리드에 배치된다. 2km의 범위에서, 최대한으로 요구되는 큰 그리드들의 양은 (4km/1km + 1)*(4km/1km + 1) = 25이다. 그 다음, 데이터를 저장한 그리드들은 25 개의 큰 그리드들로부터 발견되고, 플레이어들의 데이터가 그리드들로부터 발견된다. 데이터를 저장한 소수의 그리드들이 있으면, 순환 횟수는 이러한 방식으로 크게 감소될 수 있다. 분명히, 이러한 방식에서의 유지는 복잡하고, 데이터 추가 또는 삭제 동안에, 인덱스에 대한 유지는 시간을 필요로 한다. 제1 레벨 해시를 채택하는 효과가 만족스럽지 않으면, 이러한 해결법이 고려될 수 있다.
3.2.3 Lbsstore의 클리닝된 공유 메모리의 데이터 복구:
Lbsstore에서, 데이터가 공유 메모리에 저장되고, 따라서 클리링된 메모리 복구의 문제가 고려될 필요가 있다. 본 발명의 이러한 실시예에서의 해결법은 OSS 로그에 기록하는 것을 채택할 수 있다. 공유 메모리가 클리링될 때, 각각의 기록은 복구를 위해 연속적으로 OSS 로그로부터 인출된다. 기록이 OSS 로그에 이루어질 때, Lbsstore는 전체로서 2개의 타입들의 데이터 동작들, 즉 삽입 및 삭제를 갖는다. 각각의 삽입 동작 또는 삭제 동작(GC 동안에 데이터 삭제를 포함하지 않음)은 OSS 로그에 기록되고, 플레이어의 상세한 정보는 삽입 로그 및 삭제 로그에 기록된다. 하나의 로그가 매시간 기록될 수 있다. 로그가 특정 시간에 만료되면(플레이어의 지리적 정보의 타임아웃 제한을 받으면), 로그가 제거된다.
클리닝된 공유 메모리의 재시작 동안에, OSS 로그들은 날짜별로 시퀀싱되고, 파일 판독은 가장 오래된 시각에 기록된 OSS 로그를 판독하는 것으로부터 시작된다. 그것이 삽입 동작이면, 기록이 삽입되고; 그것이 삭제 동작이면, 기록이 삭제된다. Lbsstore는 데이터 유일성을 보장하기 위해 playerID로부터 GridGID로의 역방향 인덱스를 갖고, 게다가, 데이터 판독은 가장 오래된 파일로부터 시작되며, 그것은 플레이어의 최종 정보가 가장 최근의 정보인 것을 보장할 수 있다. 게다가, 로그 파일이 몇 시간의 타임아웃 제한을 갖기 때문에, 파일 기록들의 양은 과도하게 크지 않아야 한다.
3.2.4 Lbsstore의 데이터 확장 동안의 데이터 복구:
플레이어의 위치 정보의 데이터가 증가될 때, Lbsstore들의 양이 또한 증가될 수 있다. Lbsservice에 의해 Lbsstore들로의 데이터 분배의 전술한 해결법에 따르면, 모듈러스 동작의 방식이 채택된다. 그 결과, Lbsstore들의 양이 증가될 때, 공유 메모리 내의 데이터는 무효가 될 수 있다. 따라서, 플레이어의 정보는 확장 동안에 재로딩될 필요가 있고, 이러한 프로세스는 본질적으로 클리닝된 공유 메모리를 재시작하는 프로세스이다.
차이는 그러한 경우에, 클리닝된 공유 메모리가 재시작될 때의 판독을 위해, 모든 Lbsstore들의 OSS 로그들이 각각의 Lbsstore의 판독 디렉토리 하에 배치될 필요가 있는 것에 있다. 파일 판독은 가장 오래된 파일로부터 여전히 시작되지만, virtualMachineGID는 플레이어의 좌표들(x, y)(좌표들은 OSS에 기록됨)에 따라 산출되어야 하고, 그 다음 virtualMachineGID % LbsstoreNum이 산출된다. 그것의 번호가 현재 Lbsstore의 번호와 일치하면, 데이터는 현재 Lbsstore에 속하고, 기록은 OSS 로그의 기록들에 따라 삽입되거나 삭제되며; 그렇지 않으면, 기록이 버려지고 처리되지 않는다.
Lbsstore들을 증가시키고 클리닝된 공유 메모리를 재시작하는 프로세스에 대해, 시간 길이는 전체 Lbsstore 내의 효과적인 OSS 기록들의 전체 양과 관련된다. 기록은 지리적 정보가 보고될 때에만 OSS 로그 상에 이루어지고, 삽입 및 삭제 동작들의 빈도는 매우 높지 않다. 게다가, 데이터 판독 동안에, 데이터는 순차적으로 자기 디스크로부터 판독되고, 효율은 자기 디스크 등에 의해 사전 인출되는 것에 의해 보장될 수 있다.
해결법이 현재 채택되고, 데이터 양이 나중의 단계에서 과도하게 크면, Lbsservice는 확장 동안에, 머신을 증가시키는 것이 하나의 머신의 콘텐츠의 무효만을 초래하고, 인출된 기록들의 양이 또한 하나의 Lbsstore의 데이터 양과만 관련되는 것을 보장하기 위해, Lbsstore들에 저장되는 데이터를 분배하도록 일관된 해싱 방식을 채택하는 것을 고려할 수 있다. 그러나, 일관된 해싱은 하나의 머신의 과도하게 무거운 부하를 해결하는 것을 목표로 하고, 모든 압력이 동일하게 분배되어야 하면, 복수의 Lbsstore들이 증가될 필요가 있거나, 가상 노드들의 개념이 채택되는 것에 의해, 복잡성을 증가시키고, 재배치 동안에 파일 분배의 비교적 높은 복잡성을 초래한다.
본 발명의 일 실시예는 도 15에 도시된 바와 같이 위치 서버를 더 제공하며, 위치 서버는,
타겟 위치 정보를 포함하는 위치 결정 요청을 수신한 후에 타겟 그리드를 결정하도록 구성되는 그리드 결정 유닛(1501) - 타겟 그리드는 타겟 위치 정보에 대응하는 그리드 및 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 그리드들은 맵을 정사각형들로 분할함으로써 획득됨 -;
타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 구성되는 디바이스 결정 유닛(1502) - 데이터 저장은 그리드 번호를 키워드로서 사용하고 단말 정보를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되고, 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 그리드에 대응하는 정사각형의 측면 길이의 M 배이고, M은 2 이상임 -;
결정된 위치 기반 서비스 저장 디바이스로 타겟 그리드에 대응하는 단말 정보를 질의하도록 구성되는 질의 유닛(1503); 및
질의된 단말 정보를 위치 결정 요청의 송신측에 송신하도록 구성되는 정보 송신 유닛(1504)을 포함한다.
본 발명의 이러한 실시예에서, 그리드들은 맵을 분할함으로써 획득되며, 즉 그리드들은 실제 지리적 위치들에 대응하고 있다. 실제로, 그리드의 측면 길이는 그리드에 대응하는 지리적 위치의 측면 길이이다. 그리드의 측면 길이가 더 작으면, 최종 위치 결정의 정밀도는 더 높아질 것이고; 그리드의 측면 길이가 더 크면, 저장된 그리드들의 양은 더 적고, 검색에 사용되는 시간은 더 적을 수 있다. 특정 길이는 본 발명의 이러한 실시예에 제한되지 안고, 100m는 측면 길이로 추천될 수 있다.
M의 특정 값은 본원에서 본 기술분야의 통상의 기술자에 의해 설정될 수 있다. 2km의 최대 범위 내 근방에서 단말 정보가 검색되면, 값은 100, 50 등에 설정될 수 있고, 그것의 특정 값은 본 발명의 이러한 실시예에 제한되지 않는다.
본 발명의 이러한 실시예에서, 지리적 위치들은 그리드 방식으로 분할되고, 분할 후에 획득되는 그리드들은 위치 정보의 저장을 위해 사용되고; 위치 기반 서비스들의 프로세스 동안에, 경도 및 위도는 산출량을 감소시키기 위해 거리를 산출할 필요가 없는 것에 의해, 서버 응답 속도를 개선한다. 게다가, 그리드들이 위치 기반 서비스 저장 디바이스에 할당될 때, 사용되는 최소 입도는 그리드보다 더 커서, 더 인접한 그리드들은 동일한 위치 기반 서비스 저장 디바이스로 할당될 수 있고, 결정된 타겟 그리드는 수개의 위치 기반 서비스 저장 디바이스들에 집중되는 것에 의해, 위치 기반 서비스 저장 디바이스들의 호출을 감소시키고, 위치 기반 서비스 저장 디바이스들의 산출 압력을 낮추고, 따라서 전체 위치 기반 서비스들의 시스템 성능을 더 개선한다. 게다가, 그리드들의 크기는 위치 결정 정밀도를 개선하고 단일 그리드의 과도한 다량의 위치 정보에 의해 야기되는 충돌들을 감소시키기 위해 작게 설정될 수 있다.
본 발명의 이러한 실시예에서, 위치 기반 서비스 저장 디바이스 내의 위치 정보는 다른 서버에 의해 수집되는 정보로부터 공급될 수 있고, 또한 위치 서버에 의해 직접 수집되는 정보로부터 공급될 수 있다. 본 발명의 일 실시예는 단말의 위치 정보를 취득하고 저장하는 특정 구현 해결법을 제공하고, 상세들은 이하와 같다. 게다가, 도 16에 도시된 바와 같이, 위치 서버는,
단말에 의해 보고되는 위치 정보 및 단말 정보를 수신하도록 구성되는 정보 수신 유닛(1601);
위치 정보가 속하는 그리드를 결정하도록 더 구성되는 그리드 결정 유닛(1501);
그리드 결정 유닛(1501)에 의해 결정되는 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 더 구성되는 디바이스 결정 유닛(1502); 및
단말에 의해 보고되는 위치 정보 및 단말 정보를 저장을 위한 결정된 위치 기반 서비스 저장 디바이스에 송신하도록 더 구성되는 정보 송신 유닛(1504)을 더 포함한다.
본 발명의 일 실시예는 바람직한 저장 해결법을 더 제공하며, 이 저장 해결법은 저장된 데이터 오버레이 및 결과적인 데이터 충돌을 방지할 수 있고, 상세들은 이하와 같다. 게다가, 데이터 저장은 또한 단말 정보를 키워드로서 사용하고 그리드 번호를 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되고, 위치 서버는,
위치 정보를 삭제하기 위한 명령어를 결정된 위치 기반 서비스 저장 디바이스와는 다른 위치 기반 서비스 저장 디바이스에 송신하여, 저장된 단말 정보에 대응하는 위치 정보를 삭제하도록 더 구성되는 정보 송신 유닛(1504)을 더 포함한다.
본 발명의 이러한 실시예에서, 위치 정보를 삭제하기 위한 명령어는 결정된 위치 기반 서비스 저장 디바이스와는 다른 위치 기반 서비스 저장 디바이스에 송신된다. 특정 송신 해결법은 서버 측 상에 단말의 위치 정보의 유일성을 유지하기 위해 브로드캐스팅 방식을 채택할 수 있다.
본 발명의 이러한 실시예에서, 그리드들은 분할 후에 번호화될 수 있고, 그 다음 해시 알고리즘은 그리드들을 상이한 위치 기반 서비스 저장 디바이스들로 할당하도록 채택되어, 질의 동안에 질의 속도를 개선하고, 또한 위치 기반 서비스 저장 디바이스들의 후속 확장을 용이하게 한다. 상세들은 이하와 같다. 임의로, 그리드들은 맵을 정사각형들로 분할함으로써 획득되고, 지리적 위치들의 시퀀스에 따라 번호화되고; 위치 기반 서비스 저장 디바이스 내의 최소 입도의 그리드와 위치 기반 서비스 저장 디바이스 사이의 대응은 해시 알고리즘의 규칙을 따른다.
디바이스 결정 유닛(1502)은 타겟 그리드를 사용하여 해시 검색을 수행해서 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 구성된다.
본 발명의 이러한 실시예에서, 위치 기반 서비스 저장 디바이스들이 호출은 감소될 수 있지만, 그것은 위치 서버의 기능들이 하나의 위치 기반 서비스 저장 디바이스에 의해 완료될 수 있는 것을 보장할 수 없다. 따라서, 타겟 그리드는 복수의 위치 기반 서비스 저장 디바이스들에 분포될 수 있으며, 이에 기초하여 본 발명의 일 실시예는 이하와 같은 구현 해결법을 더 제공한다. 게다가, 타겟 그리드가 2개 이상의 위치 기반 서비스 저장 디바이스들에 분포되면, 도 17에 도시된 바와 같이, 위치 서버는,
위치 기반 서비스 저장 디바이스로부터의 질의된 단말 정보의 패킷 어셈블리를 수행하도록 구성되는 패킷 어셈블링 유닛(1701); 및
패킷 어셈블링 유닛의 패킷 어셈블리 결과를 위치 결정 요청의 송신측에 송신하도록 구성되는 정보 송신 유닛(1504)을 더 포함한다.
단말 사용자가 단말을 사용함으로써 연속적으로 위치 결정 요청들을 송신할 수 있으므로, 각각의 위치 결정 요청이 위치 결정에 의해 처리되면, 큰 압력이 서버에 야기될 것이고; 게다가, 시간 간격이 매우 짧으면, 위치 결정 결과가 일반적으로 거의 변화되지 않고; 따라서, 그러한 빈번한 위치 결정은 필요하지 않다. 서버의 압력을 낮추고, 불필요한 위치 결정 동작들을 감소시키기 위해, 본 발명의 일 실시예는 이하와 같은 해결법을 제공한다. 게다가, 도 18에 도시된 바와 같이, 위치 서버는,
단말로부터의 다른 위치 결정 요청이 수신되면, 이전 위치 결정 요청 후의 시간 간격이 미리 결정된 임계값을 초과하는지를 판단하고, 시간 간격이 미리 결정된 임계값을 초과하면 위치 결정의 실행을 거절하도록 구성되는 위치 결정 제어 유닛(1801)을 더 포함한다.
본 발명의 이러한 실시예에서, 맵이 그리드들로 분할된다. 그리드의 측면 길이가 더 작으면, 위치 결정의 정밀도는 더 높지만, 산출량은 더 크고; 그리드의 측면 길이가 더 크면, 산출량은 더 적고 응답 속도는 더 높아진다. 둘 다의 장점들을 조합하기 위해, 본 발명의 일 실시예는 이하와 같은 해결법을 제공한다. 임의로, 그리드 결정 유닛(1501)은 테스트 그리드들에서 단말 정보를 포함하는 테스트 그리드에 우선 질의하도록 - 테스트 그리드는 타겟 위치 정보에 대응하는 테스트 그리드이고, 테스트 그리드들은 맵을 상술한 그리드의 것보다 더 큰 측면 길이를 가진 정사각형들로 분할함으로써 획득됨 -; 및 질의된 테스트 그리드에 포함되는 그리드가 타겟 그리드인 것을 결정하도록 구성된다.
본 발명의 이러한 실시예에서, 테스트 그리드의 측면 길이가 더 커서, 큰 그리드는 우선 타겟 그리드 내의 위치 정보 없이 그리드를 필터링하고, 불필요한 검색을 회피하기 위해 사용될 수 있는 것에 의해, 검색량을 감소시키고 시스템 응답 속도를 개선한다.
본 발명의 일 실시예는 도 19에 도시된 바와 같이 위치 기반 서비스 저장 디바이스를 더 제공하며, 이 저장 디바이스는,
위치 서버로부터 질의 요청을 수신하도록 구성되는 요청 수신 유닛(1901) - 질의 요청은 질의되는 타겟 그리드를 포함함 -;
그리드 번호를 키워드로서 사용하고 단말 정보를 값으로서 사용함으로써 데이터 저장을 수행하도록 구성되는 데이터 저장 유닛(1902) - 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 그리드에 대응하는 정사각형의 측면 길이의 M 배이고; M은 2 이상이고; 그리드들은 맵을 정사각형들로 분할함으로써 획득됨 -;
타겟 그리드의 번호를 사용함으로써 질의하고 질의되는 타겟 그리드에 대응하는 단말 정보를 취득하도록 구성되는 질의 유닛(1903); 및
취득된 단말 정보를 위치 서버에 송신하도록 구성되는 정보 송신 유닛(1904)을 포함한다.
본 발명의 이러한 실시예에서, 그리드들은 맵을 분할함으로써 획득되며, 즉 그리드들은 실제 지리적 위치들에 대응하고 있다. 실제로, 그리드의 측면 길이는 그리드에 대응하는 지리적 위치의 측면 길이이다. 그리드의 측면 길이가 더 작으면, 최종 위치 결정의 정밀도가 더 높아질 것이고; 그리드의 측면 길이가 더 크면, 저장된 그리드들의 양이 더 적고, 검색에 사용되는 시간이 더 적을 수 있다. 특정 길이는 본 발명의 이러한 실시예에 제한되지 않고, 100m는 측면 길이로 추천될 수 있다.
M의 특정 값은 본원에서 본 기술분야의 통상의 기술자에 의해 설정될 수 있다. 2km의 최대 범위 내 근방에서 단말 정보가 검색되면, 값은 100, 50 등에 설정될 수 있고, 그것의 특정 값은 본 발명의 이러한 실시예에 제한되지 않는다.
본 발명의 이러한 실시예에서, 지리적 위치들은 그리드 방식으로 분할되고, 분할 후에 획득되는 그리드들은 위치 정보의 저장을 위해 사용되고; 위치 기반 서비스들의 프로세스 동안에, 경도 및 위도는 산출량을 감소시키기 위해 거리를 산출할 필요가 없는 것에 의해, 서버 응답 속도를 개선한다. 게다가, 그리드들이 위치 기반 서비스 저장 디바이스들에 할당될 때, 사용되는 최소 입도는 그리드보다 더 커서, 더 인접한 그리드들은 동일한 위치 기반 서비스 저장 디바이스로 할당될 수 있고, 결정된 타겟 그리드는 수개의 위치 기반 서비스 저장 디바이스들에 집중되는 것에 의해, 위치 기반 서비스 저장 디바이스들의 호출을 감소시키고, 위치 기반 서비스 저장 디바이스들의 산출 압력을 낮추고, 따라서 전체 위치 기반 서비스들의 시스템 성능을 더 개선한다. 게다가, 그리드들의 크기는 위치 결정 정밀도를 개선하고 단일 그리드의 과도한 다량의 위치 정보에 의해 야기되는 충돌들을 감소시키기 위해 작게 설정될 수 있다.
임의로, 본 발명의 일 실시예는 위치 기반 서비스 저장 디바이스 내의 그리드들의 분포 및 그리드들 내의 데이터 저장을 위해 이하와 같은 특정 구현 해결법을 더 제공한다. 데이터 저장 유닛(1902)에서, 위치 기반 서비스 저장 디바이스에 저장되는 그리드들의 번호들은 해시 알고리즘의 규칙에 따라 저장되고, 해시 버킷을 사용함으로써 시퀀싱된다.
본 발명의 이러한 실시예에서, 위치 기반 서비스 저장 디바이스 내의 위치 정보는 다른 서버에 의해 수집되는 정보로부터 공급될 수 있고, 또한 위치 서버에 의해 직접 수집되는 정보로부터 공급될 수 있다. 본 발명의 일 실시예는 단말의 위치 정보를 취득하고 저장하는 특정 구현 해결법을 제공하고, 또한 위치 정보의 유일성을 유지하는 특정 구현 해결법을 제공한다. 상세들은 이하와 같다. 게다가, 도 20에 도시된 바와 같이, 위치 기반 서비스 저장 디바이스는,
위치 서버에 의해 송신되는 단말 정보 및 위치 정보를 수신하도록 구성되는 정보 수신 유닛(2001);
단말 정보에 대응하는 위치 정보가 존재했는지를 판단하기 위해 검색을 수행하도록 더 구성되는 질의 유닛(1903);
질의 유닛(1903)에 의해 획득되는 질의 결과가 "존재"이면, 발견되는 위치 정보를 삭제하도록 구성되는 데이터 삭제 유닛(2002); 및
질의 유닛(1903)에 의해 획득되는 질의 결과가 "존재하지 않음"이거나, 데이터 삭제 유닛(2002)이 삭제를 완료했으면, 단말 정보를 위치 정보에 대응하는 그리드 내에 저장하고, 해시 테이블을 사용함으로써 위치 정보를 저장하도록 구성된 데이터 저장 유닛(1902)을 더 포함한다.
본 발명의 일 실시예는 위치 정보를 저장하는 특정 해결법을 더 제공한다. 본 발명의 이러한 실시예에서, 위치 정보는 링크된 리스트의 헤드에 삽입하는 것에 의해 저장되어, 위치 정보는 시간 시퀀스로 저장될 수 있는 것에 의해, 무효 데이터의 후속 삭제를 용이하게 한다. 상세들은 이하와 같다. 임의로, 해시 테이블 값은 링크된 리스트의 데이터 구조를 채택하고;
데이터 저장 유닛(1902)은 링크된 리스트의 헤드에 삽입하는 것에 의해 위치 정보를 위치 정보에 대응하는 그리드의 링크된 리스트에 삽입하도록 구성된다.
단말의 위치 정보(지리적 정보)가 시간 제한을 갖기 때문에, 단말의 위치 정보는 단말의 지리적 위치에 따라 무효가 될 수 있다. 그 결과, 위치 기반 서비스 저장 디바이스에 저장되는 위치 정보에 대해, 만료된 위치 정보는 제거될 필요가 있으며, 그것은 위치 결정 정확도를 개선할 뿐만 아니라, 산출량을 감소시키고 시스템 응답 속도를 개선할 수 있다. 게다가, 도 21에 도시된 바와 같이, 위치 기반 서비스 저장 디바이스는,
그리드의 복구 시간을 인출하고, 복구 시간과 현재 시간 사이의 시간 간격이 미리 결정된 임계값을 초과하면, 링크된 리스트의 뒤에서 앞으로 순차적으로 만료된 위치 정보를 삭제하도록 구성된 타임아웃 클리닝 유닛(2101)을 더 포함한다.
위치 기반 서비스 저장 디바이스는 저장되어 있는 많은 그리드들을 가질 수 있고, 또한 많은 해시 버킷들을 가질 수 있다. 따라서, 만료된 데이터의 각각의 제거가 위치 기반 서비스 저장 디바이스 내의 모든 그리드들 상에 수행되면, 그것은 더 많은 시간을 필요로 할 수 있고, 이러한 시간 기간 동안에, 위치 서버는 침체될 수 있어, 위치 서버의 불안정성을 초래한다. 위치 기반 서비스들의 안정성을 개선하기 위해, 만료된 데이터 제거의 프로세스는 단계들에서 수행될 수 있다. 상세들은 이하와 같다. 임의로, 타임아웃 클리닝 유닛(2101)은 복구 시간을 인출하기 위해, 미리 결정된 시퀀스에 따라 모든 그리드들에서 그리드들의 미리 결정된 양을 선택하도록 구성된다.
본 발명의 이러한 실시예에서, 그리드들의 미리 결정된 양은 임의로 설정될 수 있고, 또한 시스템 바쁨 또는 유휴 정도에 따라 조정될 수 있다. 예를 들어, 시스템이 더 바쁘면, 양은 더 적고; 시스템이 더 유휴이면, 양은 더 많다. 본 발명의 이러한 실시예에서의 해결법을 채택하는 것은 위치 기반 서비스들의 침체를 야기하지 않을 수 있고 위치 기반 서비스들의 안정성을 개선할 수 있다.
본 발명의 이러한 실시예에서, 위치 정보 및 다른 데이터는 공유 메모리에 저장될 수 있다. 공유 메모리 클리닝의 처리가 실행되면, 데이터 복구가 요구될 수 있다. 그 결과, 본 발명의 일 실시예는 이하와 같이 데이터 복구의 해결법을 더 제공한다. 게다가, 도 22에 도시된 바와 같이, 위치 기반 서비스 저장 디바이스는,
위치 정보의 삽입 동작 및 삭제 동작을 로컬 엔드 동작 지원 시스템 로그 내에 기록하도록 구성되는 로그 기록 유닛(2201);
로컬 엔드 동작 지원 시스템 로그가 만료된 후에, 만료된 로컬 엔드 동작 지원 시스템 로그를 삭제하도록 구성되는 로그 클리닝 유닛(2202); 및
클리링된 메모리 복구의 프로세스 동안에, 로컬 엔드 동작 지원 시스템 로그에 이루어진 기록을 로컬 엔드 동작 지원 시스템 로그에서의 기록의 시간 시퀀스에 따라 판독하고, 동작 지원 시스템 로그에 기록된 동작을 실행하도록 구성되는 복구 제어 유닛(2203)을 더 포함한다.
데이터 저장 구조 및 데이터 복구 해결법에 기초하여, 본 발명의 일 실시예는 이하와 같이 구체적으로 설명되는 위치 기반 서비스 저장 디바이스의 확장 동안에 데이터 복구의 해결법을 더 제공한다. 게다가, 복구 제어 유닛(2203)은 또한 모든 위치 기반 서비스 저장 디바이스들의 동작 지원 시스템 로그들을 취득하고; 동작 지원 시스템 로그들의 취득된 기록을 인출하고; 현재 인출된 기록이 로컬 엔드 위치 기반 서비스 저장 디바이스에 속하면, 현재 인출된 기록에 대응하는 동작을 실행하도록 구성된다.
본 발명의 일 실시예는 도 23에 도시된 바와 같이, 위치 서버(2301) 및 위치 기반 서비스 저장 디바이스(2302)를 포함하는 위치 기반 서비스 시스템을 더 제공하며, 위치 서버(2301)는 통신 방식으로 위치 기반 서비스 저장 디바이스(2302)에 연결되고; 위치 서버(2301)는 본 발명의 실시예들에 의해 제공되는 위치 서버들 중 어느 하나이고; 위치 기반 서비스 저장 디바이스(2302)는 본 발명의 실시예들에 의해 제공되는 위치 기반 서비스 저장 디바이스들(2302) 중 어느 하나이다.
본 발명의 이러한 실시예에서, 지리적 위치들은 그러한 방식으로 분할되고, 분할 후에 획득되는 그리드들은 위치 정보의 저장을 위해 사용되고; 위치 기반 서비스들의 프로세스 동안에, 경도 및 위도는 산출량을 감소시키기 위해 거리를 산출할 필요가 없는 것에 의해, 서버 응답 속도를 개선한다. 게다가, 그리드들이 위치 기반 서비스 저장 디바이스에 할당될 때, 사용되는 최소 입도는 그리드보다 더 커서, 더 인접한 그리드들은 동일한 위치 기반 서비스 저장 디바이스로 할당될 수 있고, 결정된 타겟 그리드는 수개의 위치 기반 서비스 저장 디바이스들에 집중되는 것에 의해, 위치 기반 서비스 저장 디바이스들의 호출을 감소시키고, 위치 기반 서비스 저장 디바이스들의 산출 압력을 낮추고, 따라서 전체 위치 기반 서비스들의 시스템 성능을 더 개선한다. 게다가, 그리드들의 크기는 위치 결정 정밀도를 개선하고 단일 그리드의 과도한 다량의 위치 정보에 의해 야기되는 충돌들을 감소시키기 위해 작게 설정될 수 있다.
도 24는 본 발명의 일 실시예에 의해 제공되는 서버의 개략 구조도이다. 서버(2400)는 상이한 구성 또는 성능에 따라 크게 변화될 수 있고, 하나 이상의 중앙 처리 유닛들(central processing units)(CPU)(2422), 메모리(2432), 및 애플리케이션 프로그램(2442) 또는 데이터(2444)를 저장하는 하나 이상의 저장 매체(2430)(예를 들어, 하나 이상의 대량 저장 디바이스)를 포함할 수 있다. 메모리(2432) 및 저장 매체(2430)는 일시적 또는 영구적 저장을 제공할 수 있다. 저장 매체(2430)에 저장되는 애플리케이션 프로그램은 하나 이상의 모듈들(도면에 도시되지 않음)을 포함할 수 있고, 각각의 모듈은 서버의 일련의 명령어 동작들을 포함할 수 있다. 게다가, 중앙 처리 유닛(2422)은 저장 매체(2430)와 통신하기 위해 설정될 수 있고, 서버(2400)는 저장 매체(2430) 상에 일련의 명령어 동작들을 수행한다.
서버(2400)는 하나 이상의 전원 장치들(2426), 하나 이상의 유선 또는 무선 네트워크 인터페이스들(2450), 하나 이상의 입력/출력 인터페이스들(2458), 및/또는 하나 이상의 운영 체제들(2441), 예를 들어 Windows ServerTM, Mac OS XTM, UnixTM, LinuxTM, FreeBSDTM 등을 더 포함할 수 있다.
전술한 실시예들에서, 위치 서버 또는 위치 기반 서비스 저장 디바이스에 의해 실행되는 단계들은 도 24에 도시된 바와 같이 서버 구조에 기초할 수 있다.
위치 서버 및 위치 기반 서비스 저장 디바이스의 전술한 실시예들에서, 포함되는 유닛들은 논리 기능들에 기초하여 분할되지만, 유닛들의 분할은 대응하는 기능이 구현될 수 있기만 하면 이에 제한되지 않는다는 점이 주목되어야 한다. 게다가, 각각의 기능 유닛에 대한 특정 명칭은 단지 서로의 구별을 용이하게 하기 위한 것이지만, 본 발명의 보호 범위를 제한하도록 의도되지 않는다.
게다가, 본 기술분야의 통상의 기술자는 전술한 방법 실시예들의 단계들의 전부 또는 일부가 관련 하드웨어를 명령하는 프로그램에 의해 구현될 수 있는 것을 이해할 수 있다. 프로그램은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 저장 매체는 판독 전용 메모리, 자기 디스크, 광 디스크 등일 수 있다.
상기 설명들은 본 개시의 일부 바람직한 특정 구현 방식들만을 나타내지만, 본 개시의 보호 범위를 제한하도록 의도되지 않는다. 본 발명의 실시예들에 개시되는 기술적 범위 내에서 본 기술분야의 통상의 기술자에 의해 용이하게 획득되는 임의의 변경 및 대체는 본 개시의 보호 범위 내에 있을 것이다. 따라서, 본 개시의 보호 범위는 청구항들의 보호 범위에 따를 것이다.

Claims (17)

  1. 위치 기반 서비스들을 구현하는 방법으로서,
    타겟 위치 정보를 포함하는 위치 결정 요청을 수신하는 단계;
    타겟 그리드를 결정하는 단계 - 상기 타겟 그리드는 상기 타겟 위치 정보에 대응하는 그리드 및 상기 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 상기 타겟 그리드는 맵을 정사각형들로 분할함으로써 획득됨 -;
    상기 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계;
    그리드 번호를 상기 타겟 위치 정보의 키워드로서 사용하고 단말 정보를 상기 타겟 위치 정보의 값으로서 사용함으로써 상기 위치 기반 서비스 저장 디바이스 상에 데이터 저장을 수행하는 단계 - 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 상기 타겟 그리드에 대응하는 정사각형의 측면 길이의 M 배이고, M은 2 이상임 -;
    상기 결정된 위치 기반 서비스 저장 디바이스로부터의 상기 타겟 그리드에 대응하는 단말 정보를 질의하는 단계; 및
    상기 질의된 단말 정보를 상기 위치 결정 요청의 송신측에 송신하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    단말에 의해 보고되는 위치 정보 및 단말 정보를 수신하는 단계; 및 상기 위치 정보가 속하는 그리드, 및 상기 결정된 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계; 및
    상기 단말에 의해 보고되는 위치 정보 및 단말 정보를 저장을 위한 결정된 위치 기반 서비스 저장 디바이스에 송신하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서, 데이터 저장은 또한 단말 정보를 상기 타겟 위치 정보의 키워드로서 사용하고 그리드 번호를 상기 타겟 위치 정보의 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되며, 상기 방법은,
    위치 정보를 삭제하기 위한 명령어를 상기 결정된 위치 기반 서비스 저장 디바이스와는 다른 위치 기반 서비스 저장 디바이스에 송신하여, 상기 저장된 단말 정보에 대응하는 위치 정보를 삭제하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서, 상기 타겟 그리드는 맵을 정사각형들로 분할함으로써 획득되고, 지리적 위치들의 시퀀스에 따라 번호화되고; 위치 기반 서비스 저장 디바이스 내의 최소 입도의 그리드와 상기 위치 기반 서비스 저장 디바이스 사이의 대응은 해시 알고리즘의 규칙을 따르고;
    상기 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계는 상기 타겟 그리드를 사용하여 해시 검색을 수행해서 상기 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 타겟 그리드가 2개 이상의 위치 기반 서비스 저장 디바이스들에 분포되면, 상기 방법은,
    상기 위치 기반 서비스 저장 디바이스로부터의 질의된 단말 정보에 패킷 어셈블리를 수행하는 단계를 포함하는, 방법.
  6. 제1항에 있어서, 상기 단말로부터의 다른 위치 결정 요청이 수신되면, 상기 방법은,
    이전 위치 결정 요청 후의 시간 간격이 미리 결정된 임계값을 초과하는지를 판단하는 단계, 및 상기 시간 간격이 상기 미리 결정된 임계값을 초과하면, 위치 결정의 실행을 거절하는 단계를 포함하는, 방법.
  7. 제1항에 있어서, 상기 타겟 그리드를 결정하는 단계는,
    테스트 그리드들 중 단말 정보를 포함하는 테스트 그리드에 우선 질의하는 단계; 및
    상기 질의된 테스트 그리드에 포함되는 그리드가 타겟 그리드인 것을 결정하는 단계 - 상기 테스트 그리드는 상기 타겟 위치 정보에 대응하는 테스트 그리드이고, 상기 테스트 그리드들은 맵을 상기 타겟 그리드의 것보다 더 큰 측면 길이를 갖는 정사각형들로 분할함으로써 획득됨 - 를 포함하는, 방법.
  8. 위치 서버로서,
    타겟 위치 정보를 포함하는 위치 결정 요청을 수신한 후에 타겟 그리드를 결정하도록 구성되는 그리드 결정 유닛 - 상기 타겟 그리드는 상기 타겟 위치 정보에 대응하는 그리드 및 상기 타겟 위치 정보에 대응하는 그리드에서 떨어진 설정 범위 내의 거리에 위치되는 그리드를 포함하고, 상기 타겟 그리드는 맵을 정사각형들로 분할함으로써 획득됨 -;
    타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 구성되는 디바이스 결정 유닛 - 데이터 저장은 그리드 번호를 상기 타겟 위치 정보의 키워드로서 사용하고 단말 정보를 상기 타겟 위치 정보의 값으로서 사용함으로써 상기 위치 기반 서비스 저장 디바이스 상에 수행되고, 각각의 위치 기반 서비스 저장 디바이스 내의 저장의 최소 입도는 상기 타겟 그리드에 대응하는 정사각형의 측면 길이의 M 배이고, M은 2 이상임 -;
    상기 결정된 위치 기반 서비스 저장 디바이스로부터의 상기 타겟 그리드에 대응하는 단말 정보를 질의하도록 구성되는 질의 유닛; 및
    상기 질의된 단말 정보를 상기 위치 결정 요청의 송신측에 송신하도록 구성되는 정보 송신 유닛
    을 포함하는, 위치 서버.
  9. 제8항에 있어서,
    단말에 의해 보고되는 위치 정보 및 단말 정보를 수신하도록 구성되는 정보 수신 유닛을 더 포함하는, 위치 서버.
  10. 제9항에 있어서, 상기 그리드 결정 유닛은 상기 위치 정보가 속하는 그리드를 결정하도록 더 구성되는, 위치 서버.
  11. 제10항에 있어서,
    상기 디바이스 결정 유닛은 상기 그리드 결정 유닛에 의해 결정되는 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 더 구성되는, 위치 서버.
  12. 제11항에 있어서,
    상기 정보 송신 유닛은 상기 단말에 의해 보고되는 위치 정보 및 단말 정보를 저장을 위한 결정된 위치 기반 서비스 저장 디바이스에 송신하도록 더 구성되는, 위치 서버.
  13. 제9항에 있어서, 데이터 저장은 또한 단말 정보를 상기 타겟 위치 정보의 키워드로서 사용하고 그리드 번호를 상기 타겟 위치 정보의 값으로서 사용함으로써 위치 기반 서비스 저장 디바이스 상에 수행되며, 상기 위치 서버는,
    위치 정보를 삭제하기 위한 명령어를 상기 결정된 위치 기반 서비스 저장 디바이스와는 다른 위치 기반 서비스 저장 디바이스에 송신하여, 상기 저장된 단말 정보에 대응하는 위치 정보를 삭제하도록 더 구성되는 정보 송신 유닛을 더 포함하는, 위치 서버.
  14. 제8항에 있어서, 상기 타겟 그리드는 맵을 정사각형들로 분할함으로써 획득되고, 지리적 위치들의 시퀀스에 따라 번호화되고; 위치 기반 서비스 저장 디바이스 내의 최소 입도의 그리드와 상기 위치 기반 서비스 저장 디바이스 사이의 대응은 해시 알고리즘의 규칙을 따르고;
    상기 디바이스 결정 유닛은 상기 타겟 그리드를 사용하여 해시 검색을 수행해서 상기 타겟 그리드가 속하는 위치 기반 서비스 저장 디바이스를 결정하도록 구성되는, 위치 서버.
  15. 제14항에 있어서, 상기 타겟 그리드가 2개 이상의 위치 기반 서비스 저장 디바이스들에 분포되면, 상기 위치 서버는,
    위치 기반 서비스 저장 디바이스로부터의 질의된 단말 정보의 패킷 어셈블리를 수행하도록 구성되는 패킷 어셈블링 유닛; 및
    상기 패킷 어셈블링 유닛의 패킷 어셈블리 결과를 상기 위치 결정 요청의 송신측에 송신하도록 구성되는 정보 송신 유닛을 포함하는, 위치 서버.
  16. 제8항에 있어서,
    상기 단말로부터의 다른 위치 결정 요청이 수신되면, 이전 위치 결정 요청 후의 시간 간격이 미리 결정된 임계값을 초과하는지를 판단하고, 상기 시간 간격이 상기 미리 결정된 임계값을 초과하면 위치 결정의 실행을 거절하도록 구성되는 위치 결정 제어 유닛을 더 포함하는, 위치 서버.
  17. 제8항에 있어서,
    상기 그리드 결정 유닛은, 테스트 그리드들 중 단말 정보를 포함하는 테스트 그리드에 우선 질의하고; 상기 질의된 테스트 그리드에 포함되는 그리드가 상기 타겟 그리드인 것을 결정하도록 구성되고, 상기 테스트 그리드는 상기 타겟 위치 정보에 대응하는 테스트 그리드이고, 상기 테스트 그리드들은 맵을 상기 타겟 그리드의 것보다 더 큰 측면 길이를 갖는 정사각형들로 분할함으로써 획득되는, 위치 서버.
KR1020177000594A 2014-06-10 2015-06-10 위치 기반 서비스들을 구현하는 방법, 장치 및 시스템 KR101847360B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201410256324.1 2014-06-10
CN201410256324.1A CN104135715B (zh) 2014-06-10 2014-06-10 一种位置服务的实现方法、装置,及系统
PCT/CN2015/081164 WO2015188750A1 (en) 2014-06-10 2015-06-10 Method, apparatus and system for implementing location based services

Publications (2)

Publication Number Publication Date
KR20170018015A KR20170018015A (ko) 2017-02-15
KR101847360B1 true KR101847360B1 (ko) 2018-04-09

Family

ID=51808223

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177000594A KR101847360B1 (ko) 2014-06-10 2015-06-10 위치 기반 서비스들을 구현하는 방법, 장치 및 시스템

Country Status (4)

Country Link
JP (1) JP6222680B2 (ko)
KR (1) KR101847360B1 (ko)
CN (1) CN104135715B (ko)
WO (1) WO2015188750A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115361438A (zh) * 2022-10-19 2022-11-18 山东远联信息科技有限公司 一种面向云计算和大数据定位的业务处理方法和系统

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104135715B (zh) * 2014-06-10 2015-10-07 腾讯科技(深圳)有限公司 一种位置服务的实现方法、装置,及系统
CN104618851B (zh) * 2015-01-26 2019-03-15 腾讯科技(深圳)有限公司 一种信息处理方法、服务器及终端
CN105005609B (zh) * 2015-07-08 2018-03-13 华东师范大学 距离敏感大小可变化的最优范围位置查询的计算方法
CN106708833B (zh) * 2015-08-03 2020-04-07 腾讯科技(深圳)有限公司 基于位置信息获取数据的方法和装置
CN106126575A (zh) * 2016-06-17 2016-11-16 厦门美图之家科技有限公司 一种地理位置服务方法、服务器和系统
CN106354825A (zh) * 2016-08-31 2017-01-25 重庆秒银科技有限公司 基于区块定位的附近地点查询服务处理方法
CN107423445B (zh) * 2017-08-10 2018-10-30 腾讯科技(深圳)有限公司 一种地图数据处理方法、装置及存储介质
CN111182553B (zh) * 2018-11-11 2023-06-16 千寻位置网络有限公司 基准站服务范围的确定方法及系统、定位终端
CN110633883A (zh) * 2018-12-29 2019-12-31 北京奇虎科技有限公司 一种兴趣点poi负载的计算方法和装置
CN112285744A (zh) * 2020-09-24 2021-01-29 北京讯腾智慧科技股份有限公司 一种客户端定位方法、设备,服务终端设备及存储介质
CN113014633B (zh) * 2021-02-20 2022-07-01 杭州云深科技有限公司 预置设备的定位方法、装置、计算机设备及存储介质
CN114527501B (zh) * 2022-01-21 2022-10-14 国家基础地理信息中心 一种vrs最优格网点快速查找方法及系统
KR102618151B1 (ko) * 2022-08-29 2023-12-28 주식회사 페스티벌온 격자 근접 상태 기반 메시징 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120303634A1 (en) 2011-05-25 2012-11-29 International Business Machines Corporation In-Memory Data Grid Hash Scheme Optimization

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008175624A (ja) * 2007-01-17 2008-07-31 Sony Ericsson Mobilecommunications Japan Inc 携帯情報端末、経路支援処理方法及び経路支援処理プログラム
JP2010139398A (ja) * 2008-12-12 2010-06-24 Aisin Aw Co Ltd ナビゲーション装置、及びナビゲーション用プログラム
CN102651005A (zh) * 2011-02-24 2012-08-29 北京千橡网景科技发展有限公司 兴趣点搜索方法以及设备
US8618932B2 (en) * 2011-03-18 2013-12-31 Microsoft Corporation Device location detection
JP5091336B2 (ja) * 2011-03-31 2012-12-05 株式会社コナミデジタルエンタテインメント ゲームシステム、それに用いる制御方法及び、コンピュータプログラム
CN103167404A (zh) * 2011-12-14 2013-06-19 北京千橡网景科技发展有限公司 用于确定兴趣点的方法和设备
CN103699531B (zh) * 2012-09-27 2017-12-05 中国电信股份有限公司 位置搜索方法和位置搜索引擎
JP5247927B1 (ja) * 2012-11-27 2013-07-24 キャンバスマップル株式会社 情報検索装置、及び情報検索プログラム
CN103581828B (zh) * 2013-11-14 2017-02-08 三星电子(中国)研发中心 一种查询附近移动终端的方法、服务器和系统
CN103826204B (zh) * 2014-03-12 2018-04-20 北京京东尚科信息技术有限公司 提供移动终端位置信息的方法和装置
CN104135715B (zh) * 2014-06-10 2015-10-07 腾讯科技(深圳)有限公司 一种位置服务的实现方法、装置,及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120303634A1 (en) 2011-05-25 2012-11-29 International Business Machines Corporation In-Memory Data Grid Hash Scheme Optimization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115361438A (zh) * 2022-10-19 2022-11-18 山东远联信息科技有限公司 一种面向云计算和大数据定位的业务处理方法和系统
CN115361438B (zh) * 2022-10-19 2023-02-28 山东远联信息科技有限公司 一种面向云计算和大数据定位的业务处理方法和系统

Also Published As

Publication number Publication date
JP6222680B2 (ja) 2017-11-01
CN104135715A (zh) 2014-11-05
CN104135715B (zh) 2015-10-07
JP2017511066A (ja) 2017-04-13
WO2015188750A1 (en) 2015-12-17
KR20170018015A (ko) 2017-02-15

Similar Documents

Publication Publication Date Title
KR101847360B1 (ko) 위치 기반 서비스들을 구현하는 방법, 장치 및 시스템
Muckell et al. SQUISH: an online approach for GPS trajectory compression
US11182211B2 (en) Task allocation method and task allocation apparatus for distributed data calculation
US9179435B2 (en) Filtering and clustering crowd-sourced data for determining beacon positions
US8665154B2 (en) Modeling and location inference based on ordered beacon sets
US6751627B2 (en) Method and apparatus to facilitate accessing data in network management protocol tables
CN105992338B (zh) 一种定位方法和装置
CN105989087B (zh) 一种确定热点区域的方法和装置
CN109582470B (zh) 一种数据处理方法及数据处理装置
CN101370025A (zh) 地理信息数据的存储方法、调度方法及管理系统
CN103368984A (zh) 一种信息分享方法及系统
CN108694188B (zh) 一种索引数据更新的方法以及相关装置
JP2022535533A (ja) 情報プッシュ方法及び装置
CN104794228A (zh) 一种搜索结果提供方法及装置
CN111651681B (zh) 云网融合环境下基于智能信息推荐的消息推送方法及装置
CN105426375A (zh) 一种关系网络的计算方法及装置
CN104750872A (zh) 一种业务对象的查询方法及装置
CN106255062A (zh) 一种室内定位系统位置指纹库的构建方法和装置
CN111859187B (zh) 基于分布式图数据库的poi查询方法、装置、设备及介质
KR20090065249A (ko) 무선센서네트워크에서 라우팅 경로 설정 방법 및 장치
CN105072169A (zh) 文化展馆智能信息展示系统
CN108509550A (zh) 一种支持协作处理查询的空间索引结构及其构造方法
CN104933066A (zh) 一种数据处理的方法和系统
CN111127065B (zh) 用户职住地的获取方法和装置
CN111143711A (zh) 对象搜索方法及系统

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