問題タブ [astyanax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 4 つのノードすべてを使用して cassandra データベースに接続する方法
最近、Cassandra データベースの使用を開始しました。Netflix クライアントを使用して、Cassandra データベースからデータを取り込み、読み取ります。
4 つのノードを持つ単一のクラスターがあります。このようなキースペースを作成しました-
そして、私の列ファミリー名は-profile_columnfamily
これらは私の 4 つのノードです。
現在、上記のノードを 1 つだけ使用して、Cassandra データベースに接続し、データを入力しています。しかし、私の DBA によると、接続するには 4 つのノードすべてを使用する必要があります。
Netflixクライアントを使用して接続を確立するために4つのノードすべてを使用する方法がわかりませんか? 誰でもそれで私を助けることができますか?
助けてくれてありがとう。
java - Astyanax クライアントの setMaxConns および setMaxConnsPerHost
Astyanax client
からデータを読み取るために使用していますCassandra database
。私は を持ってsingle cluster
いfour nodes
ます。私は持っていreplication factor of 2
ます。私は違いが何であるかを理解しようとしています
Astyanax クライアントのメソッド? これに関する適切なドキュメントが見つかりません。
複数のスレッドを生成し、Cassandra データベースへの接続を 1 回だけ作成して (シングルトンであるため)、他の要求のために再利用し続けるマルチスレッド コードがあります。
上記の2つの方法が読み取りパフォーマンスにどのように影響するかを理解しようとしていますか? そして、それらの値はどのように設定する必要がありますか?
そして、上記の2つの方法を次のように設定している場合-
それではどういう意味ですか?どんな説明でも大いに役立ちます。
更新されたコード:-
以下はコードです。接続を確立するために使用しています-
このコードをデバッグしている場合、BagOfConnectionsConnectionPoolImpl
クラスにヒットしていません。接続やその他のデフォルト パラメータがどのように使用されているかを確認するために、同じクラスに多くのブレークポイントを配置しました。しかし、なぜそのクラスにヒットしないのかわかりません。
scala - astyanax クライアントを使用して scala コードをコンパイルする際の問題
上記は、Cassandra でカウンターとして使用するための列ファミリーを作成しています。なんらかの理由で、コンパイルは次のように失敗します。
java - Astyanax クライアントの TOKEN_AWARE としての NodeDiscoveryType の意味は何ですか?
com.netflix.astyanax.connectionpool.NodeDiscoveryTypeTOKEN_AWARE
で Cassandra の Astyanax クライアントの列挙値を見つけましたが、それが何をするのか理解しようとしていますか?
cross colo cluster
PHXcolo/datacenter
に 12 ノード、 SLC に 12ノードの24 ノードがあるとしcolo/datacenter
ます。
そして、次のように Astyanax クライアントを使用して Cassandra に接続しています。
ofとTOKEN_AWARE
ofの違いを説明できる人NodeDiscoveryType
はいますか?TOKEN_AWARE
ConnectionPoolType
助けてくれてありがとう。
更新されたコード
以下は、変更を加えた後、これまでに使用しているコードです-
あなたはあなたの例で、あなたが使用することを述べました-
この二つ一緒ですよね?しかし、私はTOKEN_AWARE ConnectionPoolType
デフォルトで使用していると信じてRING_DESCRIBE
いるので、再度追加しても意味がありません. 私は正しいですか?
私が間違っている場合は修正してください。
java - Astyanax クライアントでの Cassandra 読み取りパフォーマンス
を使用してCassandra database in production environment
います。single cross colo cluster of 24 nodes
意味が12 nodes in PHX
あり12 nodes in SLC colo
ます。というreplication factor of 4
意味があり2 copies will be there in each datacenter
ます。
以下は、keyspace
とcolumn families
が作成された方法Production DBA's
です。
placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy' および strategy_options = {slc:2,phx:2} でキースペース プロファイルを作成します。
私たちは実行Cassandra 1.2.2
しておりorg.apache.cassandra.dht.Murmur3Partitioner
、 、 with KeyCaching
、SizeTieredCompactionStrategy
およびVirtual Nodes
enabled も持っています。Cassandra ノードはHDD instead of
SSD にデプロイされます。
を使用Astyanax client
してデータを読み取るためにCassandra database
使用していconsistency level as ONE
ます。50 Millions records
を使用して実稼働クラスターに (24 ノードで合計約 285GB のデータ)を挿入Astyanax client
し、圧縮が完了した後、実行を開始しread against the Cassandra production database
ました。
以下は、次を使用して接続構成を作成するコードですAstyanax client
-
ほとんどの場合、私は95th percentile read performance
動き回ってい8/9/10 ms
ます。
私は、私がより良くなる方法があるかどうかを見ようとしていread performance
ますCassandra database
. 私は 95 パーセンタイルを取得するという印象を受けました1 or 2 ms
が、実稼働クラスターでいくつかのテストを行った後、私の仮説はすべて間違っていました。クライアント プログラムを実行している場所から Cassandra 本番ノードへの ping 時間は です0.3ms average
。
以下は私が得ている結果です。
優れた読み取りレイテンシーパフォーマンスを達成するために他に試してみることができることについて、誰かが光を当てることができますか? 私と同じ状況で、Cassandra を本番環境で使用している同様の人がいる可能性があることはわかっています。どんな助けでも大歓迎です。
助けてくれてありがとう。
java - Astyanax の EntityPersister とコレクションの更新
バックグラウンド
Astyanax の Entity Persister は、エンティティのマップを複数の列に保存します。形式は mapVariable.key です。
問題:
astyanax の Entity Persister は、エンティティ内のマップが更新されたときに、削除されたキーと値のペアを cassandra から削除しません。
私が現在使用しているソリューション(悪いアプローチ)
行全体を削除してから再挿入します
追加情報
astyanax の Entity Persister (com.netflix.astyanax.entitystore) を使用して、cassandra で Java オブジェクトを永続化します。
私が気付いたのは、エンティティのマップがたとえば2つの値で永続化されている場合: testkey:testvalue & testkey2:testvalue2、および次回同じエンティティのマップが1つの値で永続化される(1つのキーと値のペアが削除された) : testkey:testvalue、testkey2:testvalue2 は列ファミリーから削除されません。
したがって、回避策として、行全体を削除してから再挿入する必要があります。
私の挿入コード:
私は何が欠けていますか?これは非常に非効率的であり、astyanax のエンティティ永続化機能がこれを独自に処理することになっていると思います。
何かご意見は?