2016-01-14 36 views
1

是否可以強制Python驅動程序連接到單個指定節點(並且不創建具有其他節點的集合池和/或是否需要令牌)?Cassandra Python驅動程序:強制使用單個節點

在我的具體情況下,我有兩個不同的網絡,除了一臺「看到」兩個網絡的機器外,看不到對方。

在某些情況下,我想從「外部」網絡連接到Cassandra,從而使用該特殊機器。我看到兩個問題:我可以讓該機器成爲環的一部分,但不能保存任何數據?是否有可能強制Python驅動程序只連接到該機器?

回答

2

是否可以強制Python驅動程序只連接到該機器?

雖然堅持機器在它自己的數據中心將工作有另一個,也許更簡單的解決方案。您可以使用白名單策略,並僅向其提供您希望與之通信的一個節點。

cluster = Cluster(contact_points=contact_points, load_balancing_policy=WhiteListRoundRobinPolicy(contact_points)) 

通過這樣做,您可以限制驅動程序並讓它只接觸一個節點。 但是我會警告你,如果該節點停止運行,你的應用程序將會關閉,因爲它無法與環中的任何其他人通信。

+0

不錯!我不知道這個白名單的事情。謝謝。 –

1

不完全確定你想要在這裏完成什麼,但是如果我根據自己的優點查看你的問題,我確實有一些想法。免責聲明:這是一些嘗試......可能會或可能不會工作。

我可以讓那臺機器成爲環的一部分,但沒有任何數據?

你可以在這裏做的一件事是將該機器放在自己的邏輯數據中心。然後根據您的每個密鑰空間的複製因子,您可以(或不能)將數據複製到它。

是否可以強制Python驅動程序只連接到該機器?

假設你有一臺機器在其自己的邏輯數據中心(正如我上面所建議的),你可以指示數據中心在連接屬性偏愛:

cluster = Cluster(
['10.1.1.1'], 
load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='DATACENTER_NAME'), 
port=9042) 

當然Python的司機仍然會通過八卦「發現」其他節點的拓撲結構。但是,只要您在LOCAL一致性級別上進行查詢,您的驅動程序就應該保留在您首選的DC中。

+0

我會試試,這或多或少是我想的。所以你認爲一個數據中心的複製因子爲0可能會起作用? –

+0

@CedricH。是的,我會嘗試射頻零。它*應該*讓你指定。 – Aaron

相關問題