Penyimpanan objek pelaksanaan golang

WBOY
Lepaskan: 2023-05-13 09:11:36
asal
649 orang telah melayarinya

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:

Penyimpanan objek pelaksanaan golang

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:

rreee
  • minio-go: Pustaka pelanggan Golang S3 sumber terbuka.
  • godotenv: digunakan untuk membaca pembolehubah persekitaran.

3.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
Salin selepas log masuk

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")
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!