我們正在建立一個 Cassandra 集群,使用 k8ssandra helm chart,它公開了幾個服務,我們的客戶端應用程式使用 datastax Java-Driver 并在與 Cassandra 集群相同的 k8s 集群中運行(這是測驗階段)
CqlSessionBuilder builder = CqlSession.builder();
將應用程式(通過驅動程式)連接到 Cassandra 的推薦方法是什么?
添加所有節點?
for (String node :nodes) {
builder.addContactPoint(new InetSocketAddress(node, 9042));
}
只添加服務地址?
builder.addContactPoint(new InetSocketAddress(service-dns-name , 9042))
將服務地址添加為未決議?(這甚至可以作業嗎?)
builder.addContactPoint(InetSocketAddress.createUnresolved(service-dns-name , 9042))
uj5u.com熱心網友回復:
除了許多其他資源之外,k8ssandra Helm 圖表還部署了一個 CassandraDatacenter 物件和 cass-operator。cass-operator 負責管理 CassandraDatacenter。它創建了 StatefulSet(s) 并創建了幾個無頭服務,包括:
- 資料中心服務
- 種子服務
- 所有豆莢服務
種子服務僅決議為種子的豆莢。它的名字是這樣的形式<cluster-name>-seed-service。由于 pod 的短暫性,cass-operator 可能會指定不同的 C* 節點作為種子節點。不要使用種子服務來連接客戶端應用程式。
all pods 服務決議為所有 Cassandra pod,無論它們是否準備就緒。它的名字是這樣的形式<cluster-name>-<dc-name>-all-pods-service。此服務旨在促進監控。不要使用 all pods 服務來連接客戶端應用程式。
資料中心服務決議為就緒的 pod。它的名稱格式為<cluster-name>-<dc-name>-serviceThis is the service that you should use to connect client applications。不要直接使用 pod IP,因為它們會隨著時間的推移而改變。
uj5u.com熱心網友回復:
添加所有節點?
您絕對不需要將所有節點都添加為接觸點。即使在香草 Cassandra 中,只添加幾個也可以,因為司機會閑聊并找到其余的。
只添加服務地址?
您只需要做的就是系結服務地址的第二個選項。服務地址的好處在于它將考慮更改/洗掉集群中的 IP。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370057.html
