Maison développement back-end Golang La pratique du go-zero et Kafka+Avro : construire un système de traitement de données interactif performant

La pratique du go-zero et Kafka+Avro : construire un système de traitement de données interactif performant

Jun 23, 2023 am 09:04 AM
kafka go-zero avro

Ces dernières années, avec l'essor du big data et des communautés open source actives, de plus en plus d'entreprises ont commencé à rechercher des systèmes de traitement de données interactifs hautes performances pour répondre aux besoins croissants en matière de données. Dans cette vague de mises à niveau technologiques, le go-zero et Kafka+Avro suscitent l’attention et sont adoptés par de plus en plus d’entreprises.

go-zero est un framework de microservices développé sur la base du langage Golang. Il présente les caractéristiques de hautes performances, de facilité d'utilisation, d'extension facile et de maintenance facile. Il est conçu pour aider les entreprises à créer rapidement des systèmes d'applications de microservices efficaces. Sa croissance rapide est due aux excellentes performances et à la haute efficacité de développement de Golang lui-même, ainsi qu'à l'itération et à l'optimisation continues de l'équipe go-zero.

Kafka est un système de traitement de flux distribué développé par Apache. Il présente les caractéristiques d'une haute disponibilité et d'un débit élevé. Il s'agit de l'une des files d'attente de messages les plus populaires de l'écosystème actuel du Big Data. Avro est un outil de sérialisation de données développé par Apache, qui peut convertir les flux de données en formats binaires, améliorant ainsi la compression des données et l'efficacité de la transmission. Il peut également prendre en charge les mises à niveau et les conversions de formats de données.

Dans cet article, nous présenterons comment combiner go-zero et Kafka+Avro pour créer un système de traitement de données interactif haute performance. Le processus pratique spécifique est le suivant :

  1. Intégrer le client Kafka

Tout d'abord, nous devons intégrer le client Kafka dans le service go-zero. go-zero fournit un package Kafka qui peut facilement interagir avec Kafka.

Il nous suffit d'introduire le package Kafka dans le projet et de configurer les paramètres Kafka dans le fichier de configuration pour obtenir la connexion et l'interaction des données avec Kafka. Voici un exemple de configuration Kafka :

[kafka]
addrs = ["localhost:9092"]
version = "2.0.0"
maxMessageBytes = 10000000
Copier après la connexion

Dans une logique métier spécifique, nous pouvons utiliser les API producteur et consommateur fournies par Kafka pour envoyer et recevoir des données. Voici un exemple de producteur Kafka :

var (
    topic = "test"
)

func (s *Service) Produce(msg []byte) error {
    p, err := kafka.NewProducer(s.cfg.Kafka)
    if err != nil {
        return err
    }
    defer p.Close()

    return p.Send(context.TODO(), &kafka.Message{
        Key:   []byte(topic),
        Value: msg,
    })
}
Copier après la connexion

Dans l'exemple ci-dessus, nous avons créé un sujet Kafka nommé "test" et lorsque la méthode Produce est appelée, les données sont envoyées au sujet.

  1. Sérialisation Avro intégrée

Ensuite, nous devons convertir les données au format Avro pour la sérialisation et la désérialisation. go-zero fournit un package Avro et prend en charge la génération de code. En définissant le fichier Schema, nous pouvons générer le code Go correspondant pour encoder et décoder les données Avro.

Ce qui suit est un exemple de configuration du schéma Avro :

{
    "namespace": "com.example",
    "type": "record",
    "name": "User",
    "fields": [
        {
            "name": "name",
            "type": "string"
        },
        {
            "name": "age",
            "type": "int"
        }
    ]
}
Copier après la connexion

En exécutant la commande suivante, le fichier Go correspondant peut être automatiquement généré :

$ go run github.com/gogo/protobuf/protoc-gen-gogofaster --proto_path=./ example.proto --gogofaster_out
Copier après la connexion

Dans le fichier Go généré, nous pouvons voir la relation entre le type de champ Avro et le Type de données Go correspondant La relation de mappage réalise la sérialisation et la désérialisation des données.

  1. Construire un système de traitement de données interactif

Après avoir intégré Kafka et Avro, nous pouvons commencer à construire un système de traitement de données interactif haute performance. Nous pouvons utiliser Kafka comme centre de stockage de données et y établir plusieurs partitions pour réaliser un stockage et un traitement distribués des données.

Pour chaque partition, nous pouvons créer un groupe de consommateurs pour réaliser un traitement parallèle et un équilibrage de charge des données. Dans le même temps, nous pouvons utiliser le pool de coroutines et le canal de synchronisation fournis par go-zero pour optimiser les performances de concurrence du traitement des données.

Ce qui suit est un exemple de système de traitement de données interactif :

// 创建消费组
group, err := kafka.NewGroup(s.cfg.Kafka, "test", kafka.WithGroupID("test-group"))
if err != nil {
    return nil, err
}
// 创建消费者
consumer, err := group.NewConsumer(context.Background(), []string{"test"})
if err != nil {
    return nil, err
}
// 启动并发协程
for i := 0; i < s.cfg.WorkerNum; i++ {
    go func() {
        for {
            select {
                // 从同步通道中获取新消息
                case msg := <-msgs:
                    if err := s.processMsg(msg); err != nil {
                        log.Errorf("failed to process message(%v): %v", msg.Value, err)
                    }
                }
        }
    }()
}
// 消费数据
for {
    m, err := consumer.FetchMessage(context.Background())
    if err != nil {
        log.Errorf("failed to fetch message: %v", err)
        continue
    }
    // 将新消息发送到同步通道中
    msgs <- m
}
Copier après la connexion

Dans l'exemple ci-dessus, nous avons créé un groupe de consommateurs « test-group » et créé le consommateur correspondant. Pendant le traitement, nous démarrons d'abord plusieurs coroutines simultanées pour réaliser un traitement parallèle des données. Lorsqu'un nouveau message est reçu, nous l'envoyons à un canal synchrone et utilisons un pool de coroutines pour le traitement asynchrone.

Grâce à la construction ci-dessus, nous avons intégré avec succès go-zero, Kafka et Avro pour mettre en œuvre un système de traitement de données interactif haute performance. L’utilisation de ce type de système permet de gérer facilement des données massives et d’améliorer l’efficacité du traitement et de l’analyse des données.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en œuvre une analyse boursière en temps réel à l'aide de PHP et Kafka Comment mettre en œuvre une analyse boursière en temps réel à l'aide de PHP et Kafka Jun 28, 2023 am 10:04 AM

Avec le développement d’Internet et de la technologie, l’investissement numérique est devenu un sujet de préoccupation croissant. De nombreux investisseurs continuent d’explorer et d’étudier des stratégies d’investissement, dans l’espoir d’obtenir un retour sur investissement plus élevé. Dans le domaine du trading d'actions, l'analyse boursière en temps réel est très importante pour la prise de décision, et l'utilisation de la file d'attente de messages en temps réel Kafka et de la technologie PHP constitue un moyen efficace et pratique. 1. Introduction à Kafka Kafka est un système de messagerie distribué de publication et d'abonnement à haut débit développé par LinkedIn. Les principales fonctionnalités de Kafka sont

Utilisez go-zero pour mettre en œuvre une conception de système multidimensionnel et multi-locataires Utilisez go-zero pour mettre en œuvre une conception de système multidimensionnel et multi-locataires Jun 23, 2023 am 10:49 AM

Avec le développement d’Internet, de plus en plus d’entreprises commencent à se tourner vers le multi-location pour améliorer leur compétitivité. Les systèmes multi-locataires permettent à plusieurs locataires de partager le même ensemble d'applications et d'infrastructures, chacun avec sa propre protection des données et de la confidentialité. Afin de mettre en œuvre un système multi-tenant, une conception multidimensionnelle doit être prise en compte, impliquant des problèmes tels que l'isolation et la sécurité des données. Cet article présentera comment utiliser le framework go-zero pour implémenter la conception de systèmes multidimensionnels multi-locataires. go-zero est un framework de microservices basé sur gRPC, performant, efficace et facile à développer.

Utilisez go-zero+Vue.js pour implémenter une conception de services API séparés front-end et back-end Utilisez go-zero+Vue.js pour implémenter une conception de services API séparés front-end et back-end Jun 23, 2023 am 08:46 AM

À l'ère du développement rapide d'Internet, la conception de services API séparés front-end et back-end est devenue une idée de conception très populaire. En utilisant cette idée de conception, nous pouvons développer séparément le code front-end et le code back-end, obtenant ainsi un développement plus efficace et une meilleure maintenabilité du système. Cet article explique comment implémenter une conception de services API séparés front-end et back-end à l'aide de go-zero et Vue.js. 1. Avantages de la conception de services API séparés front-end et back-end Les avantages de la conception de services API séparés front-end et back-end incluent principalement les aspects suivants : Développement

Cinq sélections d'outils de visualisation pour explorer Kafka Cinq sélections d'outils de visualisation pour explorer Kafka Feb 01, 2024 am 08:03 AM

Cinq options pour les outils de visualisation Kafka ApacheKafka est une plateforme de traitement de flux distribué capable de traiter de grandes quantités de données en temps réel. Il est largement utilisé pour créer des pipelines de données en temps réel, des files d'attente de messages et des applications basées sur des événements. Les outils de visualisation de Kafka peuvent aider les utilisateurs à surveiller et gérer les clusters Kafka et à mieux comprendre les flux de données Kafka. Ce qui suit est une introduction à cinq outils de visualisation Kafka populaires : ConfluentControlCenterConfluent

Analyse comparative des outils de visualisation kafka : Comment choisir l'outil le plus approprié ? Analyse comparative des outils de visualisation kafka : Comment choisir l'outil le plus approprié ? Jan 05, 2024 pm 12:15 PM

Comment choisir le bon outil de visualisation Kafka ? Analyse comparative de cinq outils Introduction : Kafka est un système de file d'attente de messages distribué à haute performance et à haut débit, largement utilisé dans le domaine du Big Data. Avec la popularité de Kafka, de plus en plus d'entreprises et de développeurs ont besoin d'un outil visuel pour surveiller et gérer facilement les clusters Kafka. Cet article présentera cinq outils de visualisation Kafka couramment utilisés et comparera leurs caractéristiques et fonctions pour aider les lecteurs à choisir l'outil qui répond à leurs besoins. 1. KafkaManager

Pratique d'application de go-zero et RabbitMQ Pratique d'application de go-zero et RabbitMQ Jun 23, 2023 pm 12:54 PM

Aujourd'hui, de plus en plus d'entreprises commencent à adopter le modèle d'architecture de microservices, et dans cette architecture, les files d'attente de messages sont devenues une méthode de communication importante, parmi laquelle RabbitMQ est largement utilisé. Dans le langage Go, go-zero est un framework qui a émergé ces dernières années. Il fournit de nombreux outils et méthodes pratiques pour permettre aux développeurs d'utiliser plus facilement les files d'attente de messages. Ci-dessous, nous présenterons go-zero basé sur des applications pratiques et leur utilisation. et pratique d'application de RabbitMQ. 1.RabbitMQ PrésentationLapin

De l'entrée à la compétence : maîtriser le cadre go-zero De l'entrée à la compétence : maîtriser le cadre go-zero Jun 23, 2023 am 11:37 AM

Go-zero est un excellent framework de langage Go qui fournit un ensemble complet de solutions, notamment RPC, mise en cache, tâches planifiées et autres fonctions. En fait, il est très simple de créer un service performant en utilisant go-zero, et vous pouvez même passer de débutant à compétent en quelques heures. Cet article vise à présenter le processus de création de services hautes performances à l'aide du framework go-zero et à aider les lecteurs à comprendre rapidement les concepts fondamentaux du framework. 1. Installation et configuration Avant de commencer à utiliser go-zero, nous devons l'installer et configurer certains environnements nécessaires. 1

Comment installer Apache Kafka sur Rocky Linux ? Comment installer Apache Kafka sur Rocky Linux ? Mar 01, 2024 pm 10:37 PM

Pour installer ApacheKafka sur RockyLinux, vous pouvez suivre les étapes suivantes : Mettre à jour le système : Tout d'abord, assurez-vous que votre système RockyLinux est à jour, exécutez la commande suivante pour mettre à jour les packages système : sudoyumupdate Installer Java : ApacheKafka dépend de Java, vous vous devez d'abord installer JavaDevelopmentKit (JDK). OpenJDK peut être installé via la commande suivante : sudoyuminstalljava-1.8.0-openjdk-devel Télécharger et décompresser : Visitez le site officiel d'ApacheKafka () pour télécharger le dernier package binaire. Choisissez une version stable

See all articles