Спецификации кластера Cassandra:
Nodes: 6
Storage: 1536 GB
Cores: 48
Ram: 168 GB
Задержка кластера Cassandra из моего локального: 330 мс-390 мс
Я использую Java-драйвер Cassandra, версия spark-cassandra-connector_2.112.3.2
конфигурация кластера в драйвере Java:
private static Session connect(
final String node, final Integer port, final String userName, final String password) {
Builder b = Cluster.builder().addContactPoints(node.split(COMMA_SEPARATOR));
if (!Strings.isNullOrEmpty(userName) && !Strings.isNullOrEmpty(password)) {
b.withCredentials(userName, password);
}
if (port != null && port != 0) {
b.withPort(port);
}
PoolingOptions poolingOptions = new PoolingOptions();
poolingOptions
.setMaxRequestsPerConnection(HostDistance.LOCAL, 32768)
.setMaxRequestsPerConnection(HostDistance.REMOTE, 10000)
.setMaxConnectionsPerHost(HostDistance.LOCAL, 3)
.setMaxConnectionsPerHost(HostDistance.REMOTE, 3)
.setNewConnectionThreshold(HostDistance.LOCAL, 3)
.setNewConnectionThreshold(HostDistance.REMOTE, 3)
.setCoreConnectionsPerHost(HostDistance.LOCAL, 3)
.setCoreConnectionsPerHost(HostDistance.REMOTE, 3);
b.withSocketOptions(
new SocketOptions()
.setConnectTimeoutMillis(SOCKET_CONNECT_TIMEOUT)
.setReadTimeoutMillis(SOCKET_READ_TIMEOUT));
b.withPoolingOptions(poolingOptions);
cluster = b.build();
session = cluster.connect();
return session;
}
Ниже моя тестовая таблица:
CREATE TABLE my_keyspace.test_table (
id int PRIMARY KEY
)
Для записи на Кассандру я использую session.executeAsync
ихранение фьючерсов в списке и ожидание завершения всех фьючерсов.
Когда я делаю 100000 записей, это занимает 50-65 секунд.Это должно быть так медленно или что-то мне не хватает в конфигурации?Я уже пробовал несколько опций в опциях сокетов и пулах, но это лучшее, что я получил.