기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
6단계: (선택 사항) 애플리케이션의 연결 풀 크기를 구성하는 모범 사례
이 섹션에서는 애플리케이션의 쿼리 처리량 요구 사항을 기반으로 이상적인 연결 풀 크기를 결정하는 방법을 설명합니다.
Amazon Keyspace는 연결당 초당 TCP 최대 3,000개의 CQL 쿼리를 허용합니다. 따라서 드라이버가 Amazon Keyspaces와 설정할 수 있는 연결 수에는 사실상 제한이 없습니다. 하지만 Amazon Keyspaces를 엔드포인트 연결과 VPC 함께 사용할 때는 연결 풀 크기를 애플리케이션의 요구 사항에 맞추고 사용 가능한 엔드포인트를 고려하는 것이 좋습니다.
연결 풀 크기는 클라이언트 드라이버에서 구성합니다. 예를 들어 로컬 풀 크기가 2이고 가용 영역 3개에 걸쳐 생성된 VPC 인터페이스 엔드포인트를 기반으로 드라이버는 쿼리를 위한 연결 6개 (총 7개, 제어 연결 포함) 를 설정합니다. 이 6개의 연결을 사용하면 초당 최대 18,000개의 CQL 쿼리를 지원할 수 있습니다.
애플리케이션이 초당 40,000개의 CQL 쿼리를 지원해야 하는 경우 필요한 쿼리 수를 기준으로 역방향으로 작업하여 필요한 연결 풀 크기를 결정하십시오. 초당 40,000개의 CQL 쿼리를 지원하려면 로컬 풀 크기를 초당 최소 CQL 45,000개의 쿼리를 지원하는 5개 이상으로 구성해야 합니다.
네임스페이스의 PerConnectionRequestRateExceeded
CloudWatch 지표를 사용하여 연결당 초당 최대 작업 수의 할당량을 초과하는지 모니터링할 수 있습니다. AWS/Cassandra
PerConnectionRequestRateExceeded
지표는 Amazon Keyspaces에 대한 요청 중 연결당 요청 속도에 대한 할당량을 초과하는 요청 수를 보여 줍니다.
이 단계의 코드 예제는 인터페이스 엔드포인트를 사용할 때 연결 풀링을 추정하고 구성하는 방법을 보여줍니다. VPC
- Java
-
Java 드라이버에서 풀당 연결 수를 구성할 수 있습니다. Java 클라이언트 드라이버 연결의 전체 예는 Cassandra Java 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스 섹션을 참조하세요.
클라이언트 드라이버가 시작되면 먼저 스키마 및 토폴로지 변경과 같은 관리 작업을 위한 제어 연결이 설정됩니다. 그런 다음 추가 연결이 생성됩니다.
다음 예제에서는 로컬 풀 크기 드라이버 구성을 2로 지정합니다. VPC엔드포인트가 내의 3개 서브넷에 VPC 걸쳐 생성되는 경우 다음 공식과 같이 인터페이스 엔드포인트는 NewConnections
7인치가 됩니다. CloudWatch
NewConnections = 3 (VPC subnet endpoints created across) * 2 (pool size) + 1 ( control connection)
datastax-java-driver {
basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"]
advanced.auth-provider{
class = PlainTextAuthProvider
username = "ServiceUserName
"
password = "ServicePassword
"
}
basic.load-balancing-policy {
local-datacenter = "us-east-1"
slow-replica-avoidance = false
}
advanced.ssl-engine-factory {
class = DefaultSslEngineFactory
truststore-path = "./src/main/resources/cassandra_truststore.jks"
truststore-password = "my_password"
hostname-validation = false
}
advanced.connection {
pool.local.size = 2
}
}
활성 연결 수가 구성된 풀 크기(서브넷 간 집계) + 1개의 제어 연결과 일치하지 않으면 연결이 생성되지 않는 것입니다.
- Node.js
-
Node.js 드라이버에서 풀당 연결 수를 구성할 수 있습니다. Node.js 클라이언트 드라이버 연결의 전체 예는 Cassandra Node.js 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스 섹션을 참조하세요.
다음 코드 예제의 경우 로컬 풀 크기 드라이버 구성을 1로 지정합니다. VPC엔드포인트가 내의 4개 서브넷에 VPC 걸쳐 생성되는 경우 다음 공식과 같이 인터페이스 엔드포인트는 NewConnections
5인치가 됩니다. CloudWatch
NewConnections = 4 (VPC subnet endpoints created across) * 1 (pool size) + 1 ( control connection)
const cassandra = require('cassandra-driver');
const fs = require('fs');
const types = cassandra.types;
const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');
const sslOptions1 = {
ca: [
fs.readFileSync('/home/ec2-user/sf-class2-root.crt', 'utf-8')],
host: 'cassandra.us-east-1.amazonaws.com',
rejectUnauthorized: true
};
const client = new cassandra.Client({
contactPoints: ['cassandra.us-east-1.amazonaws.com'],
localDataCenter: 'us-east-1',
pooling: { coreConnectionsPerHost: { [types.distance.local]: 1 } },
consistency: types.consistencies.localQuorum,
queryOptions: { isIdempotent: true },
authProvider: auth,
sslOptions: sslOptions1,
protocolOptions: { port: 9142 }
});