Python で単純な分散データベースを設計しています。で通信層を実装することを検討していZeroRPC
ます。キー ルックアップは、req/repパターンを使用する DHT プロトコルによって実装されます。ただし、キーの値によって分散ルックアップを行う機能も必要です。たとえば、特定の値を持つキーをリクエストした場合、すべてのサーバーがローカル ストレージでルックアップを行い、結果をリクエスタに返すようにします。これをpub/subで実装する可能性を考えています。次のようなものです。
#node.py
import zerorpc
class Node:
def query(param):
#lookup code
return result # could be None or [], etc.
sub = zerorpc.Subscriber(Node())
sub.connect('tcp://127.0.0.1:9999')
sub.run()
#requester.py
import zerorpc
pub = zerorpc.Publisher()
pub.bind('tcp://127.0.0.1:9999')
result = pub.query('foo_query') # None
print result # None
問題は、呼び出しの結果を取得できるかどうかです。取得できるpub.query()
場合は、その結果を一連のサブスクライバー ノードから集約できますか。
PS間違った方向に目を向けている可能性があります。他のコミュニケーション手法を使用する必要がありますか?