Maison  >  Article  >  développement back-end  >  Est-il possible de créer un service dans Go qui consomme à la fois un flux de messages (de Kafka) et lit les requêtes API REST ?

Est-il possible de créer un service dans Go qui consomme à la fois un flux de messages (de Kafka) et lit les requêtes API REST ?

王林
王林avant
2024-02-12 18:06:05889parcourir

是否可以在 Go 中创建一个既使用消息流(来自 Kafka)又读取 REST API 请求的服务?

Contenu de la question

J'ai récemment lu un article "Partage de données entre microservices à grande échelle"

Cette image concerne les connexions asynchrones.

Si je me souviens bien, le service Page de commande sur cette image semble être capable de lire le flux de messages de Kafka, ainsi que de lire les requêtes API REST de l'application frontale.

Donc, je me demande s'il est possible d'écrire un service capable d'effectuer les deux tâches en même temps :

  • Lire le flux de messages de Kafka
  • Lire la demande d'API REST

Uniquement en 1 service, comme en Go.

Est-ce une bonne idée ?

Solution de contournement

Oui, vous pouvez certainement écrire un service Go qui consomme de Kafka et expose un point de terminaison REST. Cependant, ce n’est pas une décision de conception idéale.

Un système de streaming basé sur Kafka permet une communication asynchrone entre producteurs et consommateurs. Cependant, les systèmes basés sur l'API REST communiquent de manière synchrone entre l'appelant et l'appelé.

Les garanties de disponibilité sont différentes entre la communication en mode synchrone et synchrone. Un système basé sur Kafka Streams aura des garanties de disponibilité différentes de celles d'une API REST. Dans les systèmes de streaming, nous nous concentrons sur le débit de traitement des messages, tandis que dans la communication synchrone de bout en bout, la latence est la principale préoccupation (vous ne voulez pas faire attendre l'appelant longtemps pour obtenir le résultat).

Si nous regroupons ces deux types de systèmes dans un seul service, il sera difficile de connaître la disponibilité du service. De plus, une partie asynchrone ou synchrone d'un service peut jouer sur un voisin bruyant de l'autre côté, rendant le service indisponible.

Donc, en général, il est recommandé de traiter les API basées sur REST et les flux Kafka comme deux services indépendants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer