Постоянно переподключаться к Кассандре - PullRequest
2 голосов
/ 06 мая 2019

Я прочитал в Интернете, что при использовании Cassandra лучше всего иметь 1 Cluster и 1 Session на весь срок службы.

Мои вопросы:

  1. В случае, если наш сервер Cassandra выходит из строя, как мне убедиться, что мой Кластер и / или Сессия будут пытаться повторно подключиться, пока наш сервер Cassandra не вернется в рабочее состояние?

  2. Должен ли только кластер пытаться повторно подключиться, или только сеанс, или оба?

Мы используем Go и github.com / gocql / gocql service.

В документации gocql я видел следующий фрагмент кода, но, похоже, количество повторов ограничено:

cluster.ReconnectionPolicy = &gocql.ConstantReconnectionPolicy{MaxRetries: 10, Interval: 8 * time.Second}

В Интернете я также нашел следующий фрагмент кода, но не похоже, что он предназначен для обработки этого сценария:

var cluster *gocql.ClusterConfig
var session *gocql.Session

func getCassandraSession() *gocql.Session {
    if session == nil || session.Closed() {
        if cluster == nil {
            cluster = gocql.NewCluster("127.0.0.1:9042")
            cluster.Keyspace = "demodb"
            cluster.Consistency = gocql.One
            cluster.ProtoVersion = 4
        }
        var err error
        if session, err = cluster.CreateSession(); err != nil {
            panic(err)
        }
    }
    return session
}

Достаточен ли какой-либо из перечисленных выше методов для обеспечения попытки повторного подключения до тех пор, пока наш сервер Cassandra не вернется в рабочее состояние?А если нет, какова лучшая практика для этого сценария?

1 Ответ

0 голосов
/ 07 мая 2019

Особая благодарность @ Джиму Вартнику за это.Я просто попытался выключить Cassandra на своем локальном компьютере, а затем снова включить его и gocql мгновенно переподключиться, не используя ни один из приведенных выше фрагментов в моем вопросе.

Пока ваши Cluster и Session подключились к Кассандре хотя бы один раз, даже если Кассандра выйдет из строя, они сразу же подключатся к ней, как только Кассандра вернется в режим онлайн.

Большое спасибо всем, кто помог!

...