Cipta sistem teragih menggunakan rangka kerja perkhidmatan mikro Golang

王林
Lepaskan: 2024-06-05 18:36:00
asal
1170 orang telah melayarinya

Buat sistem teragih menggunakan rangka kerja mikroperkhidmatan Golang: Pasang Golang, pilih rangka kerja mikroperkhidmatan (seperti Gin) untuk mencipta perkhidmatan mikro Gin, tambah titik akhir untuk menggunakan perkhidmatan mikro, bina dan jalankan aplikasi untuk membuat pesanan dan inventori perkhidmatan mikro, gunakan titik akhir untuk memproses pesanan dan Inventori Gunakan sistem pemesejan seperti Kafka untuk menyambungkan perkhidmatan mikro Gunakan perpustakaan sarama untuk menghasilkan dan menggunakan maklumat pesanan

使用 Golang 微服务框架创建分布式系统

Buat sistem teragih menggunakan rangka kerja mikroperkhidmatan Golang

Dalam artikel ini, kami akan membimbing anda langkah demi langkah untuk membuat pengedaran menggunakan sistem formula rangka kerja mikro Golang. Kami juga akan menyediakan contoh praktikal yang menunjukkan cara mencipta aplikasi dunia sebenar menggunakan corak perkhidmatan mikro.

Prasyarat

  • Golang dipasang dan dikonfigurasikan pada sistem anda
  • Pengetahuan Asas Golang

Pengenalan kepada Microservices

Seni bina perkhidmatan mikro ialah pendekatan reka bentuk perisian yang membahagikan aplikasi kepada modul bebas. Setiap perkhidmatan mikro mengendalikan fungsi tertentu dan boleh digunakan, diskalakan dan diselenggara secara bebas.

Rangka Kerja Perkhidmatan Mikro Golang

Terdapat banyak rangka kerja perkhidmatan mikro yang tersedia untuk Golang, antara yang paling popular termasuk:

  • Gin: rangka kerja web yang ringkas dan cekap
  • berprestasi tinggi dan mudah gema -gunakan rangka kerja Web yang digunakan
  • Fiber: Rangka kerja web yang pantas dan ringan
Dalam panduan ini, kami akan menggunakan rangka kerja Gin untuk menunjukkan proses penciptaan perkhidmatan mikro.

Buat perkhidmatan mikro Gin

Mula-mula, buat modul Go baharu:

go mod init microservice
Salin selepas log masuk

Seterusnya, pasang rangka kerja Gin:

go get github.com/gin-gonic/gin
Salin selepas log masuk

Buat penghala Gin baharu:

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
}
Salin selepas log masuk

Untuk tambah titik tamat

, sila tambah pada titik akhir

gunakan Gin.RouterGroup Objek:

func main() {
    r := gin.Default()
    r.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "Hello, World!"})
    })
}
Salin selepas log masuk
Gin.RouterGroup 对象:

go build .
./microservice
Salin selepas log masuk

部署微服务

要部署微服务,请构建并运行应用程序:

func main() {
    r := gin.Default()
    r.GET("/orders", func(c *gin.Context) {
        // 获取所有订单
    })
    r.POST("/orders", func(c *gin.Context) {
        // 创建新订单
    })
}
Salin selepas log masuk

实战案例:订单管理系统

让我们创建一个订单管理系统,其中包含一个处理用户订单的微服务。

创建订单微服务

使用相同的步骤创建一个新的 Gin 微服务,并添加以下端点:

func main() {
    r := gin.Default()
    r.GET("/stock/:product_id", func(c *gin.Context) {
        // 获取产品的库存数量
    })
}
Salin selepas log masuk

创建库存微服务

库存微服务将跟踪产品可用性。使用相同的步骤创建一个新的 Gin 微服务,并添加以下端点:

import (
    "context"
    "time"

    "github.com/Shopify/sarama"
)

func main() {
    producer, err := sarama.NewSyncProducer([]string{"localhost:9092"}, nil)
    if err != nil {
        // 处理错误
    }
    msg := &sarama.ProducerMessage{
        Topic: "orders",
        Value: sarama.StringEncoder("new order"),
    }
    _, _, err = producer.SendMessage(msg)
    if err != nil {
        // 处理错误
    }
}
Salin selepas log masuk

连接微服务

为了让微服务相互通信,我们需要使用一个消息传递系统。在本例中,我们将使用 Kafka。

  • 安装 Kafka:brew install kafka
  • 创建一个 Kafka 主题:kafka-topics --create --topic orders
  • 在订单微服务中,使用 sarama 库生产订单:
import (
    "context"
    "log"
    "time"

    "github.com/Shopify/sarama"
)

func main() {
    consumer, err := sarama.NewConsumer([]string{"localhost:9092"}, nil)
    if err != nil {
        // 处理错误
    }
    defer consumer.Close()
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    consumer.ConsumePartition("orders", 0, sarama.OffsetNewest)
    for {
        select {
        case msg := <-consumer.Messages():
            log.Printf("Received message: %s\n", string(msg.Value))
        case err := <-consumer.Errors():
            log.Printf("Received consumer error: %s\n", err.Error())
        case <-ctx.Done():
            cancel()
            return
        }
    }
}
Salin selepas log masuk

  • 在库存微服务中,使用 sarama Menggunakan perkhidmatan mikro
Untuk menggunakan perkhidmatan mikro, bina dan jalankan aplikasi:

rrreee

Kes praktikal: Sistem pengurusan pesanan

Mari kita buat Sistem pengurusan pesanan yang mengandungi perkhidmatan mikro yang mengendalikan pesanan pengguna. 🎜🎜🎜Buat Pesanan Mikroperkhidmatan🎜🎜🎜Gunakan langkah yang sama untuk mencipta perkhidmatan mikro Gin baharu dan tambah titik akhir berikut: 🎜rrreee🎜🎜Buat Perkhidmatan Mikro Inventori 🎜🎜🎜Perkhidmatan mikro inventori akan menjejaki ketersediaan produk. Cipta perkhidmatan mikro Gin baharu menggunakan langkah yang sama dan tambahkan titik akhir berikut: 🎜rrreee🎜🎜Menghubungkan Perkhidmatan Mikro🎜🎜🎜Untuk membolehkan perkhidmatan mikro berkomunikasi antara satu sama lain, kita perlu menggunakan sistem pemesejan. Dalam contoh ini, kita akan menggunakan Kafka. 🎜🎜🎜Pasang Kafka: bancuh pasang kafka🎜🎜Buat topik Kafka: topik-kafka --buat --perintah topik🎜🎜Dalam perkhidmatan mikro pesanan, gunakan sarama pesanan pengeluaran perpustakaan: 🎜🎜rrreee🎜🎜Dalam mikroperkhidmatan inventori, gunakan sarama pesanan penggunaan perpustakaan: 🎜🎜rrreee🎜Ringkasan🎜🎜Menggunakan rangka kerja mikroperkhidmatan Golang, anda boleh Cipta diedarkan sistem dengan mudah. Dengan mengikuti langkah dalam artikel ini, anda akan dapat membina sistem pengurusan pesanan yang menggunakan pemesejan untuk menyelaraskan perkhidmatan mikro. 🎜

Atas ialah kandungan terperinci Cipta sistem teragih menggunakan rangka kerja perkhidmatan mikro Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan