Rumah pembangunan bahagian belakang Golang Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi

Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi

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

Dalam beberapa tahun kebelakangan ini, dengan peningkatan data besar dan komuniti sumber terbuka yang aktif, semakin banyak perusahaan telah mula mencari sistem pemprosesan data interaktif berprestasi tinggi untuk memenuhi keperluan data yang semakin meningkat. Dalam gelombang peningkatan teknologi ini, go-zero dan Kafka+Avro sedang diberi perhatian dan diterima pakai oleh semakin banyak perusahaan.

go-zero ialah rangka kerja mikroperkhidmatan yang dibangunkan berdasarkan bahasa Golang Ia mempunyai ciri-ciri prestasi tinggi, kemudahan penggunaan, pengembangan mudah dan penyelenggaraan yang mudah Ia direka untuk membantu perusahaan membina aplikasi perkhidmatan mikro yang cekap sistem. Pertumbuhan pesatnya adalah disebabkan oleh prestasi cemerlang dan kecekapan pembangunan tinggi Golang itu sendiri, serta lelaran dan pengoptimuman berterusan pasukan go-zero.

Kafka ialah sistem pemprosesan strim teragih yang dibangunkan oleh Apache Ia mempunyai ciri-ciri ketersediaan tinggi dan daya pemprosesan yang tinggi Ia merupakan salah satu baris gilir mesej yang paling popular dalam ekosistem data besar semasa. Avro ialah alat siri data yang dibangunkan oleh Apache, yang boleh menukar aliran data ke dalam format binari, dengan itu meningkatkan pemampatan data dan kecekapan penghantaran. Ia juga boleh menyokong peningkatan dan penukaran format data.

Dalam artikel ini, kami akan memperkenalkan cara menggabungkan go-zero dan Kafka+Avro untuk membina sistem pemprosesan data interaktif berprestasi tinggi. Proses praktikal khusus adalah seperti berikut:

  1. Sepadukan pelanggan Kafka

Pertama, kita perlu menyepadukan pelanggan Kafka dalam perkhidmatan go-zero. go-zero menyediakan pakej Kafka yang boleh berinteraksi dengan Kafka dengan mudah.

Kami hanya perlu memperkenalkan pakej Kafka ke dalam projek dan mengkonfigurasi parameter Kafka dalam fail konfigurasi untuk mencapai sambungan dan interaksi data dengan Kafka. Berikut ialah contoh konfigurasi Kafka:

[kafka]
addrs = ["localhost:9092"]
version = "2.0.0"
maxMessageBytes = 10000000
Salin selepas log masuk

Dalam logik perniagaan tertentu, kami boleh menggunakan API pengeluar dan pengguna yang disediakan oleh Kafka untuk menghantar dan menerima data. Berikut ialah contoh pengeluar 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,
    })
}
Salin selepas log masuk

Dalam contoh di atas, kami telah mencipta topik Kafka bernama "ujian" dan apabila kaedah Hasilkan dipanggil, data dihantar ke topik.

  1. Pesirilan Avro Bersepadu

Seterusnya, kita perlu menukar data ke dalam format Avro untuk penyirian dan penyahserilan. go-zero menyediakan pakej Avro dan menyokong penjanaan kod. Dengan mentakrifkan fail Skema, kami boleh menjana kod Go yang sepadan untuk mengekod dan menyahkod data Avro.

Berikut ialah contoh konfigurasi Avro Schema:

{
    "namespace": "com.example",
    "type": "record",
    "name": "User",
    "fields": [
        {
            "name": "name",
            "type": "string"
        },
        {
            "name": "age",
            "type": "int"
        }
    ]
}
Salin selepas log masuk

Dengan melaksanakan arahan berikut, fail Go yang sepadan boleh dijana secara automatik:

$ go run github.com/gogo/protobuf/protoc-gen-gogofaster --proto_path=./ example.proto --gogofaster_out
Salin selepas log masuk

Dalam fail Go yang dijana, kita boleh melihat kepada hubungan pemetaan antara jenis medan Avro dan jenis data Go yang sepadan, dengan itu merealisasikan pensirilan dan penyahsirilan data.

  1. Membina sistem pemprosesan data interaktif

Selepas menyepadukan Kafka dan Avro, kami boleh mula membina sistem pemprosesan data interaktif berprestasi tinggi. Kami boleh menggunakan Kafka sebagai pusat storan data dan mewujudkan berbilang partition di dalamnya untuk mencapai storan dan pemprosesan data yang diedarkan.

Untuk setiap partition, kami boleh mencipta kumpulan pengguna untuk mencapai pemprosesan selari dan pengimbangan beban data. Pada masa yang sama, kami boleh menggunakan kumpulan coroutine dan saluran penyegerakan yang disediakan oleh go-zero untuk mengoptimumkan prestasi serentak pemprosesan data.

Berikut ialah contoh sistem pemprosesan data interaktif:

// 创建消费组
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
}
Salin selepas log masuk

Dalam contoh di atas, kami mencipta kumpulan pengguna "kumpulan ujian" dan mencipta pengguna yang sepadan. Semasa pemprosesan, kami mula-mula memulakan berbilang coroutine serentak untuk mencapai pemprosesan data selari. Apabila mesej baharu diterima, kami menghantarnya ke saluran segerak dan menggunakan kumpulan coroutine untuk pemprosesan tak segerak.

Melalui pembinaan di atas, kami berjaya menyepadukan go-zero, Kafka dan Avro untuk melaksanakan sistem pemprosesan data interaktif berprestasi tinggi. Menggunakan sistem jenis ini boleh mengendalikan data besar-besaran dengan mudah dan meningkatkan kecekapan pemprosesan dan analisis data.

Atas ialah kandungan terperinci Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan analisis saham masa nyata menggunakan PHP dan Kafka Bagaimana untuk melaksanakan analisis saham masa nyata menggunakan PHP dan Kafka Jun 28, 2023 am 10:04 AM

Dengan perkembangan Internet dan teknologi, pelaburan digital telah menjadi topik yang semakin membimbangkan. Ramai pelabur terus meneroka dan mengkaji strategi pelaburan, dengan harapan memperoleh pulangan pelaburan yang lebih tinggi. Dalam perdagangan saham, analisis saham masa nyata adalah sangat penting untuk membuat keputusan, dan penggunaan baris gilir mesej masa nyata Kafka dan teknologi PHP adalah cara yang cekap dan praktikal. 1. Pengenalan kepada Kafka Kafka ialah sistem pemesejan terbitan dan langgan yang diedarkan tinggi yang dibangunkan oleh LinkedIn. Ciri-ciri utama Kafka ialah

Gunakan go-zero untuk melaksanakan reka bentuk sistem penyewa berbilang dimensi Gunakan go-zero untuk melaksanakan reka bentuk sistem penyewa berbilang dimensi Jun 23, 2023 am 10:49 AM

Dengan perkembangan Internet, semakin banyak perusahaan mula berubah ke arah penyewaan berbilang untuk meningkatkan daya saing mereka. Sistem berbilang penyewa membenarkan berbilang penyewa berkongsi set aplikasi dan infrastruktur yang sama, masing-masing dengan perlindungan data dan privasi mereka sendiri. Untuk melaksanakan sistem berbilang penyewa, reka bentuk berbilang dimensi perlu dipertimbangkan, melibatkan isu seperti pengasingan data dan keselamatan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja go-zero untuk melaksanakan reka bentuk sistem penyewa berbilang dimensi. go-zero ialah rangka kerja perkhidmatan mikro berdasarkan gRPC, yang berprestasi tinggi, cekap dan mudah dikembangkan.

Gunakan go-zero+Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang Gunakan go-zero+Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang Jun 23, 2023 am 08:46 AM

Dalam era Internet yang pesat membangun hari ini, reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan belakang telah menjadi idea reka bentuk yang sangat popular. Menggunakan idea reka bentuk ini, kami boleh membangunkan kod hadapan dan kod belakang secara berasingan, dengan itu mencapai pembangunan yang lebih cekap dan kebolehselenggaraan sistem yang lebih baik. Artikel ini akan memperkenalkan cara melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang dengan menggunakan go-zero dan Vue.js. 1. Kelebihan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan bahagian belakang Kelebihan reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan bahagian hadapan terutamanya merangkumi aspek berikut: Pembangunan

Cara membina aplikasi pemprosesan data masa nyata menggunakan React dan Apache Kafka Cara membina aplikasi pemprosesan data masa nyata menggunakan React dan Apache Kafka Sep 27, 2023 pm 02:25 PM

Cara menggunakan React dan Apache Kafka untuk membina aplikasi pemprosesan data masa nyata Pengenalan: Dengan peningkatan data besar dan pemprosesan data masa nyata, membina aplikasi pemprosesan data masa nyata telah menjadi usaha ramai pembangun. Gabungan React, rangka kerja bahagian hadapan yang popular dan Apache Kafka, sistem pemesejan teragih berprestasi tinggi, boleh membantu kami membina aplikasi pemprosesan data masa nyata. Artikel ini akan memperkenalkan cara menggunakan React dan Apache Kafka untuk membina aplikasi pemprosesan data masa nyata, dan

Lima pilihan alat visualisasi untuk meneroka Kafka Lima pilihan alat visualisasi untuk meneroka Kafka Feb 01, 2024 am 08:03 AM

Lima pilihan untuk alat visualisasi Kafka ApacheKafka ialah platform pemprosesan strim teragih yang mampu memproses sejumlah besar data masa nyata. Ia digunakan secara meluas untuk membina saluran paip data masa nyata, baris gilir mesej dan aplikasi dipacu peristiwa. Alat visualisasi Kafka boleh membantu pengguna memantau dan mengurus kelompok Kafka serta lebih memahami aliran data Kafka. Berikut ialah pengenalan kepada lima alat visualisasi Kafka yang popular: ConfluentControlCenterConfluent

Analisis perbandingan alat visualisasi kafka: Bagaimana untuk memilih alat yang paling sesuai? Analisis perbandingan alat visualisasi kafka: Bagaimana untuk memilih alat yang paling sesuai? Jan 05, 2024 pm 12:15 PM

Bagaimana untuk memilih alat visualisasi Kafka yang betul? Analisis perbandingan lima alat Pengenalan: Kafka ialah sistem baris gilir mesej teragih berprestasi tinggi dan tinggi yang digunakan secara meluas dalam bidang data besar. Dengan populariti Kafka, semakin banyak perusahaan dan pembangun memerlukan alat visual untuk memantau dan mengurus kelompok Kafka dengan mudah. Artikel ini akan memperkenalkan lima alat visualisasi Kafka yang biasa digunakan dan membandingkan ciri serta fungsinya untuk membantu pembaca memilih alat yang sesuai dengan keperluan mereka. 1. KafkaManager

Amalan aplikasi go-zero dan RabbitMQ Amalan aplikasi go-zero dan RabbitMQ Jun 23, 2023 pm 12:54 PM

Kini semakin banyak perusahaan mula menggunakan model seni bina perkhidmatan mikro, dan dalam seni bina ini, baris gilir mesej telah menjadi kaedah komunikasi yang penting, antaranya RabbitMQ digunakan secara meluas. Dalam bahasa Go, go-zero ialah rangka kerja yang telah muncul dalam beberapa tahun kebelakangan ini. Ia menyediakan banyak alat dan kaedah praktikal untuk membolehkan pembangun menggunakan baris gilir mesej dengan lebih mudah Di bawah ini kami akan memperkenalkan go-zero berdasarkan aplikasi praktikal dan amalan aplikasi RabbitMQ. 1.RabbitMQ Gambaran KeseluruhanArnab

Dari kemasukan kepada kemahiran: Menguasai rangka kerja go-zero Dari kemasukan kepada kemahiran: Menguasai rangka kerja go-zero Jun 23, 2023 am 11:37 AM

Go-zero ialah rangka kerja bahasa Go yang sangat baik yang menyediakan set lengkap penyelesaian, termasuk RPC, caching, tugas berjadual dan fungsi lain. Sebenarnya, sangat mudah untuk membina perkhidmatan berprestasi tinggi menggunakan go-zero, malah anda boleh pergi dari pemula kepada mahir dalam beberapa jam. Artikel ini bertujuan untuk memperkenalkan proses membina perkhidmatan berprestasi tinggi menggunakan rangka kerja go-zero dan membantu pembaca memahami dengan cepat konsep teras rangka kerja tersebut. 1. Pemasangan dan konfigurasi Sebelum mula menggunakan go-zero, kita perlu memasangnya dan mengkonfigurasi beberapa persekitaran yang diperlukan. 1

See all articles