Cassandra を使用する際のベスト プラクティスは、サービスの存続期間中は 1Cluster
と 1Session
を使用することであるとオンラインで読みました。
私の質問は次のとおりです。
Cassandra サーバーがダウンした場合、Cassandra サーバーがオンラインに戻るまでクラスターやセッションが再接続を試行し続けるようにするにはどうすればよいですか?
再接続を試行するのは、クラスターのみ、セッションのみ、またはその両方ですか?
サービスにはgithub.com/gocql/gocqlを使用Go
しています。
ドキュメントで次のスニペットを見た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 サーバーがオンラインに戻るまで再接続を試行するには、上記のいずれかの方法で十分ですか? そうでない場合、このシナリオのベスト プラクティスは何ですか?