Rumah >pembangunan bahagian belakang >Golang >Cipta sistem teragih menggunakan rangka kerja perkhidmatan mikro Golang
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
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.
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.
Terdapat banyak rangka kerja perkhidmatan mikro yang tersedia untuk Golang, antara yang paling popular termasuk:
go mod init microserviceSeterusnya, pasang rangka kerja Gin:
go get github.com/gin-gonic/ginBuat penghala Gin baharu:
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() }Untuk tambah titik tamat
Gin.RouterGroup
Objek: func main() { r := gin.Default() r.GET("/hello", func(c *gin.Context) { c.JSON(200, gin.H{"message": "Hello, World!"}) }) }
Gin.RouterGroup
对象:go build . ./microservice
要部署微服务,请构建并运行应用程序:
func main() { r := gin.Default() r.GET("/orders", func(c *gin.Context) { // 获取所有订单 }) r.POST("/orders", func(c *gin.Context) { // 创建新订单 }) }
让我们创建一个订单管理系统,其中包含一个处理用户订单的微服务。
创建订单微服务
使用相同的步骤创建一个新的 Gin 微服务,并添加以下端点:
func main() { r := gin.Default() r.GET("/stock/:product_id", func(c *gin.Context) { // 获取产品的库存数量 }) }
创建库存微服务
库存微服务将跟踪产品可用性。使用相同的步骤创建一个新的 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 { // 处理错误 } }
连接微服务
为了让微服务相互通信,我们需要使用一个消息传递系统。在本例中,我们将使用 Kafka。
brew install 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 } } }
sarama
Menggunakan perkhidmatan mikro 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!