Рабочий код:
using System;
using Cassandra;
namespace CassandraSelectTest
{
class Program
{
static void Main(string[] args)
{
var cluster = Cluster.Builder()
.AddContactPoints("192.168.0.18","192.168.0.21","192.168.0.22","192.168.0.23","192.168.0.24")
.WithPort(9042)
.Build();
var session = cluster.Connect("test_keyspace");
var results = session.Execute("SELECT * FROM test_table");
foreach(var result in results)
{
Console.WriteLine(result.GetValue<string>("col1"));
}
Console.WriteLine($"Finished");
Console.ReadKey();
}
}
}
Настройки:
Nodes = 5
Replication = 5
Consistency = 1
Тест:
Удалите 1 узел за раз, чтобы увидеть, продолжает ли работать приведенный выше код.
Результат:
Код продолжаетсяработать после того, как каждый узел отключается, а затем выдает ошибку, как и ожидалось, когда все узлы отключены. Однако чем больше узлов переходит в автономный режим, тем больше времени требуется для выполнения кода. Примерно 5 секунд на каждый автономный узел.
Скорости:
5 nodes online = 1 second
4 nodes online = 5 seconds
3 nodes online = 10 seconds
2 nodes online = 15 seconds
1 node online = 20 seconds
Вопрос:
Можно ли ускорить запрос в коде, чтобы он не занимал больше времени, когда узлы отключены? Или, по крайней мере, сократить время, необходимое для выполнения запроса, если большинство узлов отключены?