Memandangkan jumlah data terus berkembang, kaedah penyimpanan fail tradisional menjadi semakin sukar untuk memenuhi permintaan. Sebagai kaedah storan baharu, storan objek mempunyai kelebihan iaitu kebolehskalaan yang tinggi, kebolehpercayaan yang tinggi dan konkurensi yang tinggi, dan telah menjadi salah satu bentuk storan yang popular pada masa ini. Artikel ini akan memperkenalkan cara melaksanakan penyimpanan objek di Golang.
1. Fahami storan objek
Storan objek ialah kaedah penyimpanan berdasarkan storan awan Ia menyimpan data dalam bentuk objek. Setiap objek mengandungi pengecam, data dan metadata yang unik. Tidak seperti kaedah penyimpanan fail tradisional, storan objek boleh mencapai pengembangan yang tidak terhingga dan boleh menggunakan berbilang nod untuk sandaran bagi memastikan kebolehpercayaan data yang tinggi. Storan objek biasanya digunakan dalam senario seperti storan data berskala besar dan pengurusan fail besar-besaran.
2. Reka bentuk seni bina
Tugas pertama untuk melaksanakan storan objek ialah mereka bentuk seni bina sistem, termasuk storan data, storan metadata, sandaran data, dsb. Berikut ialah seni bina storan objek mudah:
Dalam rajah di atas, objek yang dimuat naik akan disimpan pada nod data dan direkodkan pada nod metadata untuk Perform index dan object mendapatkan semula. Nod storan akan disandarkan secara kerap untuk memastikan kebolehpercayaan data.
3. Pelaksanaan kod
3.1 Kebergantungan pemasangan
Sebelum membangunkan storan objek Golang, anda perlu memasang pustaka kebergantungan berikut:
rreee3.2 Konfigurasi awal
Gunakan godotenv dalam kod untuk membaca pembolehubah persekitaran, termasuk accessKey, secretKey, baldi dan maklumat lain yang disimpan.
go get github.com/minio/minio-go go get github.com/joho/godotenv
3.3 Sambung ke perkhidmatan storan objek
Gunakan minio-go untuk menyambung ke perkhidmatan storan objek Kod khusus adalah seperti berikut:
err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } accessKey := os.Getenv("ACCESS_KEY") secretKey := os.Getenv("SECRET_KEY") endpoint := os.Getenv("END_POINT") bucket := os.Getenv("BUCKET_NAME") location := os.Getenv("LOCATION")
Dalam kod di atas , gunakan fungsi MakeBucket untuk mencipta baldi ( baldi), langkau penciptaan jika baldi sudah wujud. Jika sambungan berjaya, log "Berjaya disambungkan ke xxx" akan dikeluarkan.
3.4 Memuat naik objek
Selepas berjaya menyambung ke perkhidmatan storan objek, anda boleh menggunakan kod berikut untuk memuat naik objek:
minioClient, err := minio.New(endpoint, accessKey, secretKey, false) if err != nil { log.Fatalln(err) } if err = minioClient.MakeBucket(bucket, location); err != nil { exists, errBucketExists := minioClient.BucketExists(bucket) if errBucketExists == nil && exists { log.Printf("We already own %s ", bucket) } else { log.Fatalln(err) } } else { log.Printf("Successfully created %s ", bucket) } log.Printf("Successfully connected to %s ", endpoint)
Apabila memuat naik objek, anda perlu berikan nama objek dan maklumat relatif objek seperti laluan dan jenis kandungannya, gunakan fungsi PutObject dalam kod untuk memuat naik objek. Selepas muat naik berjaya, maklumat log "Berjaya dimuat naik xxx" dikeluarkan.
3.5 Muat turun objek
Gunakan kod berikut untuk memuat turun fail dari storan objek dan simpannya secara setempat:
filePath := "/path/to/file.jpg" objectName := "file.jpg" contentType := "application/octet-stream" // Open the file for use file, err := os.Open(filePath) if err != nil { log.Fatalln(err) } defer file.Close() // Get file size and read the file content into a buffer fileInfo, _ := file.Stat() var size int64 = fileInfo.Size() buffer := make([]byte, size) file.Read(buffer) // Upload the file to S3 with FPutObject n, err := minioClient.PutObject(bucket, objectName, bytes.NewReader(buffer), size, minio.PutObjectOptions{ContentType: contentType}) if err != nil { log.Fatalln(err) } log.Printf("Successfully uploaded %s with size %d ", objectName, n)
Antaranya, fungsi FGetObject digunakan untuk memuat turun daripada objek perkhidmatan storan Selepas fail berjaya dimuat turun, maklumat log "Berjaya dimuat turun xxx" dikeluarkan.
4. Ringkasan
Artikel ini memperkenalkan pengetahuan berkaitan storan objek dan menggunakan perpustakaan kebergantungan minio-go dan godotenv untuk melaksanakan muat naik dan muat turun storan objek. Dengan mengkaji artikel ini, pembaca boleh mempunyai pemahaman awal tentang prinsip pelaksanaan dan senario aplikasi penyimpanan objek dan cara melaksanakan penyimpanan objek di Golang. Ini hanyalah pelaksanaan yang mudah, dan pembaca boleh menulis sistem penyimpanan objek yang lebih lengkap mengikut keperluan khusus.
Atas ialah kandungan terperinci Penyimpanan objek pelaksanaan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!