Penso che l'argomento per ogni inquilino sia la scelta giusta.
La convenzione di denominazione potrebbe essere qualcosa del tipo: topic_base_name_tenant_id.
Le ragioni sono:
- Permette configurazione flessibile per ogni conduttore (come @Sebastian detto in precedenza).
- Separazione logica più chiara.
Ora diciamo che useremo un approccio diverso. Ad esempio, partizione per ciascun tenant. Potrebbe essere problematico, poiché:
- Si sta limitando il livello di parallelismo al numero di inquilini.
- Aggiunta di nuovi titolari, risultati che aggiungono nuova partizione → ripubblicare vecchi messaggi (l'algoritmo di partizionamento predefinito è: message_key% partition_size).
Un commento in ritardo per perfezionare questa domanda: Indipendentemente da ciò che si fa sulla fine di Kafka, ogni istanza di Kafka-becco terrà traccia del proprio offset in zookeeper. Per una corretta multi-tenancy è necessario anche vedere come gestire il nodo Zookeeper. Per i beccucci non trident è piuttosto semplice. provando un nodo radice di zookeeper, ma per Trident, posso solo azzardare che il "client-ID" sia in qualche modo equivalente. Soprattutto quando i nomi di Spout sono così magici in Storm-kafka (sono identificatori e condividono informazioni su ZK) è fondamentale essere consapevoli di ciò che sta accadendo in Zookeeper, quando si tenta la multi-tenancy. –