不断重新连接Cassandra

hc2pp10m  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(754)

我在网上读到,使用cassandra的最佳实践是1 Cluster 和1 Session 为你服务的一生。
我的问题是:
如果我们的cassandra服务器宕机,我如何确保我的集群和/或会话将继续尝试重新连接,直到我们的cassandra服务器恢复联机?
应该只有集群尝试重新连接,还是只有会话尝试重新连接,或者两者都尝试?
我们正在使用 Go 以及github.com/gocql/gocql。
我已在中看到以下片段 gocql 文档,但它似乎只有有限的重试次数:

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

我也在网上找到了下面的代码片段,但它看起来不像是为处理这种情况而设计的:

  1. var cluster *gocql.ClusterConfig
  2. var session *gocql.Session
  3. func getCassandraSession() *gocql.Session {
  4. if session == nil || session.Closed() {
  5. if cluster == nil {
  6. cluster = gocql.NewCluster("127.0.0.1:9042")
  7. cluster.Keyspace = "demodb"
  8. cluster.Consistency = gocql.One
  9. cluster.ProtoVersion = 4
  10. }
  11. var err error
  12. if session, err = cluster.CreateSession(); err != nil {
  13. panic(err)
  14. }
  15. }
  16. return session
  17. }

上述方法是否足以确保在cassandra服务器恢复联机之前尝试重新连接?如果没有,那么这种情况下的最佳实践是什么?

ecfsfe2w

ecfsfe2w1#

特别感谢@jim wartnick。我只是试着关掉Cassandra在我的本地机器上,然后再打开它 gocql 立即重新连接,而不必使用任何上述片段在我的问题。
只要你 Cluster 以及 Session 已经连接到Cassandra至少一次,即使Cassandra去了,他们会立即重新连接到它一旦Cassandra回到网上。
非常感谢所有帮助过你的人!

相关问题