2012-10-18 15 views
5

我們有一個創造性地命名爲「bootstrap」的進程,它爲環境中的給定版本的軟件(Dev1,Dev2,QA,...,PROD)設置我們的Cassandra集羣。此引導程序創建/更新密鑰空間和列族以及在非prod中填充初始數據。如何查詢Cassandra集羣的元數據?

我們使用Astyanax,但我們可以使用Hector進行自舉。

鑑於另一個團隊已經決定每個環境都有自己的數據中心名稱。 而且,當我們從兩個數據中心走向更多數據中心時,我希望這一點能夠發揮作用。 並考慮到我們將使用PropertyFileSnitch:

我怎麼能要求它的佈局卡桑德拉集羣? (沒有脫殼到nodetool ring

具體來說,我需要知道數據中心的名稱,以便在使用NetworkTopologyStrategy時可以使用策略選項的正確設置創建或更新密鑰空間。我們每個數據中心需要3份拷貝。一些env有一個和幾個有兩個,最終生產會有更多。

有CQL或舊貨電話,這將使我關於集羣佈局信息?

我已經在各種文檔集合看起來雖然幾個TOC中,並用Google搜索了一下。我想在挖掘nodetool代碼之前先問一下。

回答

4

我不知道赫克託或Astyanax如何揭露這一點,但基本的儲蓄方法describeRing(keyspace)應該給你你在找什麼。的,它包含的信息部分是EndpointDetails結構看起來像這樣:

endpoint_details=[EndpointDetails(datacenter='datacenter1', host='127.0.0.1', rack='rack1')] 

隨着從該方法的結果的其餘部分,你應該能夠找出令牌,DCS,衣架,等等,爲集羣中的每個節點。

由於您使用的是Java客戶端,您還可以使用一些JMX方法(這nodetool用途)來描述羣集的更多選擇部分。例如,您可以查看一下告密者mbean("org.apache.cassandra.db:type=EndpointSnitchInfo"),特別是getDatacenter(ip)getRack(ip)方法。

0

那麼,另一種選擇(間接回答)是你可以做什麼PlayOrm在做什麼,所有通過創建CF的去和你保存一些數據,你要這樣,你可以查詢自己的數據,雖然這意味着其他團隊,你最好經歷同一個中間人,所有的信息都在那裏。那麼,可能不希望你想要,但只是一個想法,讓你考慮其他潛在的解決方案。