不断重新连接到 Cassandra
Constantly Reconnect to Cassandra
我在网上看到,使用 Cassandra 的最佳做法是在服务的整个生命周期内拥有 1 Cluster
和 1 Session
。
我的问题是:
如果我们的 Cassandra 服务器出现故障,我如何确保我的集群 and/or 会话将继续尝试重新连接,直到我们的 Cassandra 服务器重新联机?
应该只尝试重新连接集群,还是只尝试重新连接会话,或者两者都尝试?
我们正在使用 Go
和 github.com/gocql/gocql 来提供我们的服务。
我在 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 服务器重新联机之前尝试重新连接?如果不是,这种情况下的最佳做法是什么?
为此特别感谢 @Jim Wartnick。我只是尝试在我的本地机器上关闭 Cassandra,然后重新打开它,gocql
立即重新连接,而无需在我的问题中使用上述任何片段。
只要您的 Cluster
和 Session
至少连接到 Cassandra 一次,即使 Cassandra 出现故障,他们也会在 Cassandra 恢复在线后立即重新连接。
非常感谢所有帮助过的人!
我在网上看到,使用 Cassandra 的最佳做法是在服务的整个生命周期内拥有 1 Cluster
和 1 Session
。
我的问题是:
如果我们的 Cassandra 服务器出现故障,我如何确保我的集群 and/or 会话将继续尝试重新连接,直到我们的 Cassandra 服务器重新联机?
应该只尝试重新连接集群,还是只尝试重新连接会话,或者两者都尝试?
我们正在使用 Go
和 github.com/gocql/gocql 来提供我们的服务。
我在 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 服务器重新联机之前尝试重新连接?如果不是,这种情况下的最佳做法是什么?
为此特别感谢 @Jim Wartnick。我只是尝试在我的本地机器上关闭 Cassandra,然后重新打开它,gocql
立即重新连接,而无需在我的问题中使用上述任何片段。
只要您的 Cluster
和 Session
至少连接到 Cassandra 一次,即使 Cassandra 出现故障,他们也会在 Cassandra 恢复在线后立即重新连接。
非常感谢所有帮助过的人!