Tencent Cloud Resources
텐센트 클라우드의 다양한 소식과 기술 문서 및 정보를 확인하실 수 있습니다.
텐센트 게임 특화 솔루션 – 3. 게임을 위한 텐센트 솔루션 TcaplusDB
개요
실시간 온라인 게임에서는, 순간적으로 발생하는 대량의 데이터를 빠르게 저장하고 조회할 수 있어야 합니다.
기존의 관계형 데이터베이스는 대량의 실시간 게임 데이터를 처리하기가 점점 어려워졌고, 게임 업계에서는 관계형 데이터베이스와 NoSQL을 함께 사용하거나, 독자적인 방법을 사용하여 게임 데이터를 저장하고 처리해야 했습니다.
텐센트는 게임에 적합한 데이터베이스를 만들기 위해, 텐센트가 가진 기술들을 TcaplusDB에 집약했습니다.
TcaplusDB를 사용하면, 더이상 관계형 데이터베이스와 NoSQL을 같이 사용하는 복잡한구성이 필요하지 않습니다.
TcaplusDB는 분산 NoSQL데이터베이스이며, 성능이 매우 뛰어납니다.
모바일 게임 응용 시나리오
최근 게임들은 빠르게 발전하고 있으며, 과거에 비해 많은 데이터를 발생시킵니다. 특히 모바일 게임이 활성화 되면서 언제 어디서든 게임을 즐길 수 있게 되었고, 처리해야 할 데이터의 양도 급격히 늘어났습니다.
이제 게임 데이터베이스는 폭발적으로 증가하는 대량의 데이터를 짧은 시간 안에 처리해야 합니다.
TcaplusDB는 게임 맞춤형으로 설계되었습니다.
게임의 요구 사항들을 충족하기 위해, 분산형 아키텍처가 적용되었고, 핫/콜드 데이터 스왑, 자동 서버 통합 등의 기술을 사용합니다.
또한 서버정지 없이도 용량 확장/축소 작업과, 과부하 보호 등 게임의 운영 이슈 요구 사항을 충족합니다.
다음 그림은, 모바일 게임 시나리오에 TcaplusDB를 사용하는 시나리오 입니다.
(출처 : 텐센트 클라우드 공식 홈페이지 문서)
https://intl.cloud.tencent.com/ko/product/tcaplusdb
사용 사례
펜타스톰(Arena of Valor), 배틀그라운드(PUBG Mobile), 크로스파이어, 나루토 등 수백가지 게임에 사용되었고, 텐센트의 게임 프로젝트팀이 지속적으로 사용하고 있습니다.
TcaplusDB 특징
성능
- 쿼리 처리 성능은 단일서버당 초당 10만 QPS(Queries Per Second)에 이릅니다.
- 메모리 캐시와 고속의 SSD디스크 스토리지가 결합되어 있고, 핫 데이터와 콜드 데이터는 캐시와 디스크 사이에서 자동으로 in/out 처리 됩니다.
- Protocol Buffer 방식의 액세스를 지원하여, 고성능의 읽기/쓰기가 가능하고, 데이터 액세스를 위한 대역폭이 절약됩니다.
확장성
- 테이블 하나에 50TB 까지 데이터를 저장할 수 있습니다.
- 용량 확장이 필요할 경우 서비스 중단 없이 스토리지 용량을 동적으로 확장할 수 있습니다. 비즈니스 규모의 갑작스러운 변화를 보다 쉽게 해결할 수 있습니다.
가용성
- 99.999%의 고 가용성을 제공합니다.
- 마스터/슬레이브 핫 백업 메커니즘을 통해, 하드웨어 또는 운영체제 오류를 빠르게 복구합니다.
- 테이블을 사용하는 동안에도 테이블 구조를 수정할 수 있습니다.
빠른 rollback
- rollback 프로세스는 완전히 자동화되어 있으며, 정확한 시점으로 rollback을 지원합니다.
재해 복구를 위한 백업
- 최대 30일 동안 데이터를 보존하고, 15일 동안 binlog레코들를 보관합니다.
- 재해 복구를 위해 매일 콜드 백업을 수행합니다.
과부하 보호
- 사용량이 많은 시간에 서비스가 중단되지 않도록, 액세스 계층과 스토리지 계층에서 프로세스 수준의 과부하 보호 조치를 수행합니다.
메모리와 디스크를 사용하여 비용 절감
- 자주 사용하는 데이터는 메모리에, 그렇지 않은 데이터는 LRU(Least Recently Used)알고리즘을 통해 디스크에 저장합니다.
- in-memory DB보다 약 70%의 비용을 절감하고, Redis + MySQL 조합 보다 약 40% 더 저렴합니다.
데이터 일관성
TcaplusDB의 tcapsvr마스터 및 슬레이브는 데이터를 실시간으로 동기화 합니다. 또한 동일한 도시의 다른 IDC에 동기화 할 수 있으며, 동기화 시간 차이는 10ms 이내입니다.TcaplusDB는 동기화 알고리즘으로 Paxos알고리즘을 사용하고 있으며, 보다 강력한 일관성을 위해 최적화 하고 있습니다.
TcaplusDB를 사용할 수 있는 리전
TcaplusDB를 사용할 수 있는 리전은 다음과 같습니다.
리전 | ID |
대한민국 서울 | ap-seoul |
일본 도쿄 | ap-tokyo |
중국 상하이 | ap-shanghai |
홍콩/마카오/대만 | ap-hongkong |
싱가포르 | ap-singapore |
미국 실리콘밸리 | na-siliconvalley |
미국 버지니아 | na-ashburn |
독일 프랑크푸르트 | eu-frankfurt |
사용 요금
TcaplusDB는 클라우드 환경에서 SaaS형태로 구매하여 사용 가능합니다. TcaplusDB사용 요금은 종량제 후불로 청구 됩니다.
요금은 일일 계산되며, 계산 규칙은 다음과 같습니다.
일일 TcaplusDB요금 = 일일 용량 사용요금 + 일일 예약읽기 요금 + 일일 예약쓰기 요금
- 용량 : ‘(기본 키 컬럼 크기 + 속성 컬럼 크기)*데이터 행 수 = 용량’ 입니다.
- 예약읽기 : 4KB/s 단일 행 읽기 작업이 1 CU(capacity Unit) 단위로 계산됩니다.
- 예약쓰기 : 4KB/s 단일 행 쓰기 작업이 1CU단위로 계산됩니다.
- 용량단위(CU)계산 규칙
- CU는 각각의 요청 및 응답마다, 계산됩니다.
- CU는 요청 또는 응답(둘 중 더 큰 쪽)을 기반으로 누적되고 계산됩니다.
- 4KB 미만은 4KB로 반올림 되고, 4KB이상은 4KB의 배수로 계산됩니다.
예) 1초 이내에, 1KB 요청을 받았고, 9KB 응답을 반환한 경우 요청은 1KB이고 응답이 9KB 이므로, 둘중 보다 큰 9KB를 기준으로 계산합니다.
9KB=2*4KB+1KB로 나뉩니다. 따라서, 총 CU 수는 2+1=3이 됩니다.
지역 별로 약간의 가격 차이가 있습니다. 자세한 내용은 문의 부탁 드립니다.
TcaplusDB 아키텍처
TcaplusDB는 관리 계층, 액세스 계층, 스토리지 계층으로 구성됩니다. 액세스 및 스토리지 계층은 여러 연결 노드와 스토리지 노드로 구성되며, 수평적인 노드 확장을 지원합니다. 각 계층에는 고유 한 역할이 있으며 전체 아키텍처는 다음과 같습니다.
관리 계층
TcaplusDB관리 계층은 메타데이터 및 관리 정보를 저장하고, TcaplusDB시스템과 데이터를 관리합니다.
액세스 계층
TcaplusDB 액세스 계층은 사용자 요청을 처리합니다. 하위의 스토리지 계층의 데이터 노드와 상호 작용하며, 데이터를 가져와 사용자에게 반환하는 역할을 담당합니다.
스토리지 계층
스토리지 계층 서비스는 사용자 데이터를 저장합니다. 상위의 액세스 계층 요청에 따라, 데이터 정보를 반환하는 역할을 담당합니다.
TcaplusDB 논리 구조
TcaplusDB 논리 구조는 Cluster, Table Group, Table로 구성되어 있습니다.
전체 클러스터는 테이블 그룹으로 구성되어 있습니다. 테이블 그룹은 각각 더 작은 단위의 테이블들을 포함하고 있으며, 데이터는 각 테이블의 Shard에 나뉘어 저장됩니다.
TcaplusDB 개발자 지원
지원 환경, 언어
- Linux, Windows 환경을 지원 합니다.
- C++, Java 언어를 지원 합니다.
- 다른 언어에서는 RESTful API를 사용하여 액세스 할 수 있습니다.
C++ SDK 다운로드
https://intl.cloud.tencent.com/ko/document/product/1016/30285
SDK 설치 가이드
- Linux용 설치 가이드
- https://intl.cloud.tencent.com/ko/document/product/1016/30287
- Windows용 설치 가이드
- https://intl.cloud.tencent.com/ko/document/product/1016/30288
RESTful API
- 사용법 안내
- https://intl.cloud.tencent.com/ko/document/product/1016/37721
- Go, Java, PHP, Python RESTful API 샘플 다운로드
- https://intl.cloud.tencent.com/ko/document/product/1016/38822
DB 액세스 도구
- Linux용 tcaplus client 도구
- https://intl.cloud.tencent.com/ko/document/product/1016/38792
기타 제약사항
- 테이블 그룹
테이블 그룹은 최대 256개의 테이블을 가질 수 있습니다. - 키, 값
general table의 키 필드는 4개, list table의 키 필드 수는 3개, 단일 키 필드의 크기는 1,024Byte 입니다.
general table의 값 필드 수는 128개, list table의 값 필드의 수는 127, 단일 값 필드의 크기는 256KB 입니다.
레코드의 최대 크기는 1MB입니다. - API Timeout
애플리케이션의 요청에 대해, TcaplusDB는 응답을 반환하고 3초 동안 기다립니다. 3초 이내에 애플리케이션에서 처리되지 않으면, timeout로그를 기록합니다.
애플리케이션 개발자가 timeout처리 로직을 구현할 것을 권장합니다.
(예 : timeout 발생 시, 재 시도 하는 방법 등) - 부분 키(인덱스 키) 쿼리
인덱스 키는 기본 키의 일부 여야 합니다.
인덱스 키는 shardkey를 포함해야 하며, 인덱스 키는 기본 키가 될 수 없습니다. - 단일 테이블의 최대 크기
단일 테이블의 총 크기는 10,000*256GB입니다.
(단일 테이블은 10,000개의 데이터 샤드로 나뉠 수 있으며, 각 데이터 샤드 최대 크기는 256GB 입니다.)
수고하셨습니다. 이번 3 부에서는 게임을 위한 NoSQL 데이터베이스 솔루션, TcaplusDB에 대해서 알아보았습니다.
기술 블로그 내용 중에 궁금한 점이 있다면, 질문하기를 통해 문의 해 주세요.
- 이 콘텐츠는 저작권법에 의해 보호 받는 저작물로 메가존클라우드에 저작권이 있습니다.
- 이 콘텐츠는 사전 동의 없이 2 차 가공 및 영리 목적으로의 이용을 금합니다.