Rumah pembangunan bahagian belakang Golang Amalan giliran tugasan yang diedarkan berdasarkan go-zero

Amalan giliran tugasan yang diedarkan berdasarkan go-zero

Jun 22, 2023 am 08:23 AM
diedarkan barisan tugas go-zero

Dengan perkembangan teknologi Internet, teknologi yang diedarkan menjadi semakin matang, dan senario aplikasinya menjadi semakin meluas. Dalam sistem teragih, baris gilir tugas ialah komponen biasa yang boleh memproses tugasan secara tidak segerak, mengurangkan tekanan sistem dan meningkatkan prestasi sistem. Artikel ini akan memperkenalkan amalan baris gilir tugasan teragih berdasarkan go-zero.

1. Pengenalan kepada go-zero

go-zero ialah rangka kerja mikro yang menyepadukan pelbagai komponen, termasuk rangka kerja RPC, rangka kerja web, komponen cache, pengehadan semasa, pemutus litar, dsb. Komponen biasa. Mudah digunakan dan berkuasa dalam prestasi, ia adalah pilihan terbaik untuk membangunkan aplikasi perkhidmatan mikro.

2. Pengenalan kepada baris gilir tugas

Baris gilir tugas ialah komponen sistem teragih biasa, yang digunakan terutamanya untuk tugas pemprosesan tak segerak. Barisan tugasan boleh digunakan untuk memotong puncak dan mengisi lembah, mengurangkan beban sistem dan meningkatkan prestasi sistem. Barisan tugasan biasanya terdiri daripada dua bahagian: pengeluar dan pengguna Pengeluar bertanggungjawab menjana tugas dan meletakkannya ke dalam baris gilir tugas, manakala pengguna bertanggungjawab untuk mendapatkan semula tugasan daripada baris gilir tugas dan melaksanakannya.

3. Pelaksanaan baris gilir tugas dalam go-zero

Baris gilir tugas dalam go-zero dilaksanakan menggunakan struktur senarai redis. Dalam go-zero, anda boleh membuat baris gilir tugas dengan mudah Operasi khusus adalah seperti berikut:

1 Cipta struktur tugas

Struktur tugas mengandungi maklumat seperti jenis tugas, data perniagaan , dsb., seperti berikut Reka bentuk mengikut keperluan sebenar.

taip struct Tugasan {

Type int //任务类型
Data interface{} //业务数据
Salin selepas log masuk

}

2 Cipta baris gilir tugasan

Gunakan struktur senarai redis untuk melaksanakan baris gilir tugasan, dan gunakan. arahan lpush redis Letakkan tugasan ke dalam baris gilir dan dapatkan tugasan daripada baris gilir melalui arahan rpop. Dalam go-zero, anda boleh menyambung ke perkhidmatan redis melalui pakej goredis dan melaksanakan arahan yang berkaitan.

func pushTask(task Task) {

data, _ := json.Marshal(task)
conn := redis.RedisClient().Get()
defer conn.Close()
conn.Do("lpush", "task_queue", data)
Salin selepas log masuk

}

func popTask() Task {

conn := redis.RedisClient().Get()
defer conn.Close()
taskStr, _ := redis.String(conn.Do("rpop", "task_queue"))
var task Task
json.Unmarshal([]byte(taskStr), &task)
return task
Salin selepas log masuk

}

Dalam keadaan sebenar projek , baris gilir tugas boleh dikembangkan mengikut keperluan, seperti meningkatkan masa tamat tugas, mekanisme percubaan semula tugas, dsb.

4. Tugas pemprosesan teragih

Dalam sistem teragih sebenar, baris gilir tugas biasanya digunakan pada pelayan bebas dan nod perkhidmatan yang berbeza disambungkan kepada baris gilir tugas yang sama untuk pemprosesan tugas. Untuk mencapai pengimbangan beban dan ketersediaan tinggi, penyebaran baris gilir tugas boleh dicapai dengan memperkenalkan perisian tengah yang biasa digunakan termasuk kafka, rabbitmq, dsb.

Dalam go-zero, kami boleh menyepadukan baris gilir tugas dengan lancar dengan perisian tengah melalui storan perpustakaan.

1 Cipta baris gilir tugasan

Mencipta baris gilir tugasan dalam go-zero memerlukan penciptaan memori dahulu, yang melaluinya memori boleh disambungkan ke perisian tengah yang berbeza.

// Cipta storan
c := &redis.CacheConf{

CacheConf: cache.CacheConf{
    Mode: cache.CacheRedis,
    Redis: redis.RedisConf{
        Type:     redis.NodeType,
        Node:     redisConfig.Redis.Node,
        Name:     redisConfig.Redis.Name,
        Password: redisConfig.Redis.Password,
    },
},
Salin selepas log masuk

}

// Cipta baris gilir tugas melalui storan
taskQueue := queue.Baharu ("task_queue", c)

2. Cipta pengeluar dan pengguna

Pengeluar dan pengguna disambungkan melalui baris gilir tugasan Pengeluar bertanggungjawab menghantar tugasan ke baris gilir tugas, dan pengguna Bertanggungjawab untuk mendapatkan tugas daripada baris gilir tugas dan melaksanakannya.

// Buat pengeluar
producer := taskQueue.Producer()

// Buat kumpulan pengguna dan langgan baris gilir tugas
consumer := taskQueue.NewConsumerGroup(

"task_group",
[]string{"task_queue"},
handleTask,
queue.WithConsumerGroupConcurrency(concurrency),
Salin selepas log masuk

)

3. Tulis fungsi pemprosesan tugas

Fungsi pemprosesan tugasan digunakan untuk melaksanakan logik pemprosesan tugas tertentu dan boleh disesuaikan mengikut keperluan projek sebenar.

func handleTask(ctx context.Context, msgs []*primitive.Message) error {

for _, msg := range msgs {
    fmt.Printf("Received message: %s
Salin selepas log masuk

", msg.Body)

    // TODO: 处理具体业务逻辑
}
return nil
Salin selepas log masuk

}

Melalui langkah di atas, kami boleh menyepadukan baris gilir tugas dengan lancar dengan lancar untuk mencapai pemprosesan tugas teragih

5 Ringkasan

Melalui amalan di atas, kami telah mempelajari tentang go- Bagaimana baris gilir tugasan. dilaksanakan dalam sifar, dan cara menyepadukan baris gilir tugas dengan lancar untuk mencapai pemprosesan tugas teragih Sebagai rangka kerja mikro berprestasi tinggi, go-zero mempunyai set komponen yang kaya yang boleh membantu pembangun membina sistem teragih berprestasi tinggi alami pesona go-zero bersama-sama!

Atas ialah kandungan terperinci Amalan giliran tugasan yang diedarkan berdasarkan go-zero. 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)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 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)

Cara menggunakan Redis untuk mencapai penyegerakan data teragih Cara menggunakan Redis untuk mencapai penyegerakan data teragih Nov 07, 2023 pm 03:55 PM

Cara menggunakan Redis untuk mencapai penyegerakan data teragih Dengan perkembangan teknologi Internet dan senario aplikasi yang semakin kompleks, konsep sistem teragih semakin diterima pakai secara meluas. Dalam sistem teragih, penyegerakan data merupakan isu penting. Sebagai pangkalan data dalam memori berprestasi tinggi, Redis bukan sahaja boleh digunakan untuk menyimpan data, tetapi juga boleh digunakan untuk mencapai penyegerakan data teragih. Untuk penyegerakan data teragih, biasanya terdapat dua mod biasa: mod terbitkan/langgan (Terbitkan/Langgan) dan replikasi induk-hamba (Master-slave).

Berkongsi pengalaman menggunakan MongoDB untuk melaksanakan penjadualan dan pelaksanaan tugas teragih Berkongsi pengalaman menggunakan MongoDB untuk melaksanakan penjadualan dan pelaksanaan tugas teragih Nov 02, 2023 am 09:39 AM

MongoDB ialah pangkalan data NoSQL sumber terbuka dengan prestasi tinggi, berskala dan fleksibiliti. Dalam sistem teragih, penjadualan tugas dan pelaksanaan adalah isu utama Dengan menggunakan ciri-ciri MongoDB, penjadualan tugasan dan penyelesaian pelaksanaan boleh direalisasikan. 1. Analisis Keperluan untuk Penjadualan Tugasan Teragih Dalam sistem teragih, penjadualan tugas ialah proses memperuntukkan tugas kepada nod yang berbeza untuk dilaksanakan. Keperluan penjadualan tugas biasa termasuk: 1. Pengagihan permintaan tugas: Hantar permintaan tugas ke nod pelaksanaan yang tersedia.

Cara melaksanakan baris gilir tugas menggunakan bahasa Go dan Redis Cara melaksanakan baris gilir tugas menggunakan bahasa Go dan Redis Oct 26, 2023 am 09:02 AM

Cara melaksanakan baris gilir tugas menggunakan bahasa Go dan Redis Pengenalan: Dalam pembangunan perisian sebenar, kami sering menghadapi senario di mana sejumlah besar tugas perlu diproses. Untuk meningkatkan kecekapan dan kebolehpercayaan pemprosesan, kami boleh menggunakan baris gilir tugas untuk mengagihkan dan melaksanakan tugasan ini. Artikel ini akan memperkenalkan cara menggunakan bahasa Go dan Redis untuk melaksanakan baris gilir tugas yang mudah, serta contoh kod khusus. 1. Apakah giliran tugasan? Barisan tugas ialah mekanisme biasa untuk mengagihkan dan melaksanakan tugas. Ia menyimpan tugas yang belum selesai dalam baris gilir, yang kemudiannya diproses oleh berbilang pengguna (juga dikenali sebagai

Cara menggunakan Swoole untuk melaksanakan penjadualan tugas berjadual teragih Cara menggunakan Swoole untuk melaksanakan penjadualan tugas berjadual teragih Nov 07, 2023 am 11:04 AM

Cara menggunakan Swoole untuk melaksanakan penjadualan tugas berjadual teragih Pengenalan: Dalam pembangunan PHP tradisional, kami sering menggunakan cron untuk melaksanakan penjadualan tugas berjadual, tetapi cron hanya boleh melaksanakan tugas pada pelayan tunggal dan tidak dapat menangani senario konkurensi yang tinggi. Swoole ialah rangka kerja serentak tak segerak berprestasi tinggi berdasarkan PHP Ia menyediakan keupayaan komunikasi rangkaian yang lengkap dan sokongan berbilang proses, membolehkan kami melaksanakan penjadualan tugas berjadual dengan mudah. Artikel ini akan memperkenalkan cara menggunakan Swoole untuk melaksanakan penjadualan tugas berjadual teragih

Cara Redis melaksanakan pengurusan sesi teragih Cara Redis melaksanakan pengurusan sesi teragih Nov 07, 2023 am 11:10 AM

Cara Redis melaksanakan pengurusan sesi teragih memerlukan contoh kod khusus Pengurusan sesi teragih adalah salah satu topik hangat di Internet hari ini Dalam menghadapi kesesuaian yang tinggi dan volum data yang besar, kaedah pengurusan sesi tradisional secara beransur-ansur menjadi tidak mencukupi. Sebagai pangkalan data nilai kunci berprestasi tinggi, Redis menyediakan penyelesaian pengurusan sesi teragih. Artikel ini akan memperkenalkan cara menggunakan Redis untuk melaksanakan pengurusan sesi teragih dan memberikan contoh kod khusus. 1. Pengenalan kepada Redis sebagai storan sesi teragih Kaedah pengurusan sesi tradisional adalah untuk menyimpan maklumat sesi

Menggunakan Redis untuk mencapai ketekalan cache yang diedarkan Menggunakan Redis untuk mencapai ketekalan cache yang diedarkan Nov 07, 2023 pm 12:05 PM

Menggunakan Redis untuk mencapai ketekalan cache teragih Dalam sistem teragih moden, cache memainkan peranan yang sangat penting. Ia boleh mengurangkan kekerapan capaian sistem kepada pangkalan data dan meningkatkan prestasi dan daya pemprosesan sistem. Dalam sistem yang diedarkan, untuk memastikan ketekalan cache, kita perlu menyelesaikan masalah penyegerakan data antara berbilang nod. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Redis untuk mencapai ketekalan cache yang diedarkan dan memberikan contoh kod khusus. Redis ialah pangkalan data nilai kunci berprestasi tinggi yang menyokong kegigihan, replikasi dan pengumpulan

Menggunakan Redis untuk melaksanakan penjadualan tugas teragih Menggunakan Redis untuk melaksanakan penjadualan tugas teragih Nov 07, 2023 am 08:15 AM

Menggunakan Redis untuk melaksanakan penjadualan tugas teragih Dengan pengembangan perniagaan dan pembangunan sistem, banyak perniagaan perlu melaksanakan penjadualan tugas teragih untuk memastikan tugas boleh dilaksanakan pada berbilang nod pada masa yang sama, dengan itu meningkatkan kestabilan dan ketersediaan sistem. Sebagai produk penyimpanan data memori berprestasi tinggi, Redis mempunyai ciri pengedaran, ketersediaan tinggi dan prestasi tinggi, dan sangat sesuai untuk melaksanakan penjadualan tugas teragih. Artikel ini akan memperkenalkan cara menggunakan Redis untuk melaksanakan penjadualan tugas teragih dan menyediakan contoh kod yang sepadan. 1. Pangkalan Redis

Perkongsian pengalaman praktikal pembangunan Java: membina fungsi pengumpulan log teragih Perkongsian pengalaman praktikal pembangunan Java: membina fungsi pengumpulan log teragih Nov 20, 2023 pm 01:17 PM

Berkongsi pengalaman praktikal dalam pembangunan Java: Membina fungsi pengumpulan log teragih Pengenalan: Dengan perkembangan pesat Internet dan kemunculan data berskala besar, aplikasi sistem teragih menjadi semakin meluas. Dalam sistem teragih, pengumpulan dan analisis log adalah bahagian yang sangat penting. Artikel ini akan berkongsi pengalaman membina fungsi pengumpulan log teragih dalam pembangunan Java, dengan harapan dapat membantu pembaca. 1. Pengenalan latar belakang Dalam sistem teragih, setiap nod menjana sejumlah besar maklumat log. Maklumat log ini berguna untuk pemantauan prestasi sistem, penyelesaian masalah dan analisis data.

See all articles