是否可以強制Python驅動程序連接到單個指定節點(並且不創建具有其他節點的集合池和/或是否需要令牌)?Cassandra Python驅動程序:強制使用單個節點
在我的具體情況下,我有兩個不同的網絡,除了一臺「看到」兩個網絡的機器外,看不到對方。
在某些情況下,我想從「外部」網絡連接到Cassandra,從而使用該特殊機器。我看到兩個問題:我可以讓該機器成爲環的一部分,但不能保存任何數據?是否有可能強制Python驅動程序只連接到該機器?
是否可以強制Python驅動程序連接到單個指定節點(並且不創建具有其他節點的集合池和/或是否需要令牌)?Cassandra Python驅動程序:強制使用單個節點
在我的具體情況下,我有兩個不同的網絡,除了一臺「看到」兩個網絡的機器外,看不到對方。
在某些情況下,我想從「外部」網絡連接到Cassandra,從而使用該特殊機器。我看到兩個問題:我可以讓該機器成爲環的一部分,但不能保存任何數據?是否有可能強制Python驅動程序只連接到該機器?
是否可以強制Python驅動程序只連接到該機器?
雖然堅持機器在它自己的數據中心將工作有另一個,也許更簡單的解決方案。您可以使用白名單策略,並僅向其提供您希望與之通信的一個節點。
cluster = Cluster(contact_points=contact_points, load_balancing_policy=WhiteListRoundRobinPolicy(contact_points))
通過這樣做,您可以限制驅動程序並讓它只接觸一個節點。 但是我會警告你,如果該節點停止運行,你的應用程序將會關閉,因爲它無法與環中的任何其他人通信。
不完全確定你想要在這裏完成什麼,但是如果我根據自己的優點查看你的問題,我確實有一些想法。免責聲明:這是一些嘗試......可能會或可能不會工作。
我可以讓那臺機器成爲環的一部分,但沒有任何數據?
你可以在這裏做的一件事是將該機器放在自己的邏輯數據中心。然後根據您的每個密鑰空間的複製因子,您可以(或不能)將數據複製到它。
是否可以強制Python驅動程序只連接到該機器?
假設你有一臺機器在其自己的邏輯數據中心(正如我上面所建議的),你可以指示數據中心在連接屬性偏愛:
cluster = Cluster(
['10.1.1.1'],
load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='DATACENTER_NAME'),
port=9042)
當然Python的司機仍然會通過八卦「發現」其他節點的拓撲結構。但是,只要您在LOCAL一致性級別上進行查詢,您的驅動程序就應該保留在您首選的DC中。
我會試試,這或多或少是我想的。所以你認爲一個數據中心的複製因子爲0可能會起作用? –
@CedricH。是的,我會嘗試射頻零。它*應該*讓你指定。 – Aaron
不錯!我不知道這個白名單的事情。謝謝。 –