2
votes

Ai-je besoin d'un ou plusieurs sarama.SyncProducer dans mon application Golang?

Je suis nouveau dans Golang, j'ai besoin d'écrire l'application qui publiera les événements sur kafka, je ne trouve pas les réponses aux questions suivantes:

  1. De combien de sarama.SyncProducer ai-je besoin?
  2. Puis-je en utiliser un dans toutes les applications? Dois-je avoir une sorte de pool de producteurs?

1 commentaires

Depuis le référentiel github officiel: Une chose importante à noter est que SyncProducer et AsyncProducer sont thread-safe. Le serveur http.Server de Go gère les requêtes simultanément dans différentes goroutines, mais vous pouvez utiliser un seul producteur en toute sécurité. Cela permettra en fait de gagner en efficacité car le producteur sera en mesure de regrouper les messages provenant de demandes simultanées.


3 Réponses :


3
votes

À moins que les données ne soient publiées à un taux beaucoup plus élevé que celui que l'éditeur peut publier (?), étant donné que l'éditeur de sarama est asynchrone et simultané , je dirais que vous n'avez pas besoin de plus d'un éditeur. Donc, pour répondre directement à vos questions:

  1. J'en choisirais un, sans connaître vos besoins.
  2. Oui. J'imagine qu'il est plus probable que l'on ait besoin d'un pool de consommateurs, étant donné, bien sûr, le taux élevé de messages publiés.

2 commentaires

Donc, il me semble que j'ai besoin d'un AsyncProducer à la place :)


Je le dirais sans connaître vos besoins spécifiques, mais aussi sur la base de mon expérience actuelle (~ 3 ans) avec sarama & kafka :)



1
votes
  1. Cela dépend du fonctionnement de votre application. Dans la plupart des cas, un seul producteur suffit. Il peut interagir avec de nombreux sujets ... Je vous laisse lire l ' exemple

  2. Oui, c'est très bien. Vous pouvez voir le producteur comme la porte de sortie de votre application.

Mais, vous devriez utiliser un producteur asynchrone. Sarama est asynchrone si je ne me trompe pas.


0 commentaires

0
votes

SyncProducer ou AsyncProducer renvoie une structure de producteur avec une connexion au courtier définie dans sarama.Config.

  1. De combien de sarama.SyncProducer ai-je besoin?

Vous n'avez besoin que d'une seule structure de producteur avec des configurations initialisées à définir sur plusieurs courtiers.

  1. Puis-je en utiliser un dans toutes les applications? Dois-je avoir une sorte de pool de producteurs?

Il n'y a rien de tel qu'un seul producteur puisse être utilisé dans toutes les applications. La seule chose est que vous pouvez vous connecter au même courtier en utilisant les mêmes configurations. Parce que s'il existe une application différente, vous devez créer un nouveau producteur avec des configurations similaires.


0 commentaires