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:
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
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!

Golangisidealforperformance-CriticalApplicationsandCurrentProgramming, pemprosesDataSincience.2) forhigh-thoRencurrencyFiSurs.2 fordata -dataSdataS.2

Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran: 1.Goroutine adalah benang ringan, bermula dengan kata kunci Go; 2. Channel digunakan untuk komunikasi yang selamat antara goroutin untuk mengelakkan keadaan kaum; 3. Contoh penggunaan menunjukkan penggunaan asas dan lanjutan; 4. Kesilapan umum termasuk kebuntuan dan persaingan data, yang dapat dikesan oleh Gorun-Race; 5. Pengoptimuman prestasi mencadangkan mengurangkan penggunaan saluran, dengan munasabah menetapkan bilangan goroutine, dan menggunakan sync.pool untuk menguruskan memori.

Golang lebih sesuai untuk pengaturcaraan sistem dan aplikasi konvensional yang tinggi, manakala Python lebih sesuai untuk sains data dan perkembangan pesat. 1) Golang dibangunkan oleh Google, menaip secara statik, menekankan kesederhanaan dan kecekapan, dan sesuai untuk senario konvensional yang tinggi. 2) Python dicipta oleh Guidovan Rossum, sintaks yang dinamik, sintaks ringkas, aplikasi yang luas, sesuai untuk pemula dan pemprosesan data.

Golang lebih baik daripada Python dari segi prestasi dan skalabiliti. 1) Ciri-ciri jenis kompilasi Golang dan model konkurensi yang cekap menjadikannya berfungsi dengan baik dalam senario konvensional yang tinggi. 2) Python, sebagai bahasa yang ditafsirkan, melaksanakan perlahan -lahan, tetapi dapat mengoptimumkan prestasi melalui alat seperti Cython.

GO Language mempunyai kelebihan yang unik dalam pengaturcaraan serentak, prestasi, lengkung pembelajaran, dan lain -lain: 1 Pengaturcaraan serentak direalisasikan melalui goroutine dan saluran, yang ringan dan cekap. 2. Kelajuan penyusunan adalah pantas dan prestasi operasi hampir dengan bahasa C. 3. Tatabahasa adalah ringkas, lengkung pembelajaran lancar, dan ekosistemnya kaya.

Perbezaan utama antara Golang dan Python adalah model konvensional, sistem jenis, prestasi dan kelajuan pelaksanaan. 1. Golang menggunakan model CSP, yang sesuai untuk tugas serentak yang tinggi; Python bergantung pada multi-threading dan gil, yang sesuai untuk tugas I/O-intensif. 2. Golang adalah jenis statik, dan Python adalah jenis dinamik. 3. Golang mengumpulkan kelajuan pelaksanaan bahasa adalah cepat, dan pembangunan bahasa yang ditafsirkan Python adalah pantas.

Golang biasanya lebih perlahan daripada C, tetapi Golang mempunyai lebih banyak kelebihan dalam pengaturcaraan serentak dan kecekapan pembangunan: 1) Koleksi sampah Golang dan model konkurensi menjadikannya berfungsi dengan baik dalam senario konvensyen yang tinggi; 2) C memperoleh prestasi yang lebih tinggi melalui pengurusan memori manual dan pengoptimuman perkakasan, tetapi mempunyai kerumitan pembangunan yang lebih tinggi.

Golang digunakan secara meluas dalam pengkomputeran awan dan devOps, dan kelebihannya terletak pada kesederhanaan, kecekapan dan keupayaan pengaturcaraan serentak. 1) Dalam pengkomputeran awan, Golang dengan cekap mengendalikan permintaan serentak melalui mekanisme goroutine dan saluran. 2) Di DevOps, kompilasi cepat Golang dan ciri-ciri silang platform menjadikannya pilihan pertama untuk alat automasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa