Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Voinko käyttää vain eteenpäin suuntautuvaa lukijaa suurten tiedostojen lataamiseen S3:een Golangissa


Voinko käyttää vain eteenpäin suuntautuvaa lukijaa suurten tiedostojen lataamiseen S3:een Golangissa


Hakutulosten perusteella näyttää siltä, ​​että vain eteenpäin suuntautuvan lukijan, kuten Go "tar" -lukijan, käyttäminen voi olla haastavaa ladattaessa suuria tiedostoja Amazon S3:een käyttämällä AWS SDK for Go -sovellusta.

Pääkohdat ovat:

1. Muistinhallintaongelmat: Go:n S3-latausohjelman AWS SDK varaa ja täyttää koko tiedoston puskurit ennen niiden lataamista. Tämä voi aiheuttaa prosessin muistin loppumisen, kun lähetät suuria tiedostoja lukijalla, joka ei tue "Seek"- tai "ReadAt"-toimintoja, kuten Go Tar -lukija.

2. Älykäs paloittelu: GitHub-ongelma #1104 viittaa siihen, että SDK:ta voitaisiin parantaa käyttämään älykkäämpää jakamista, kun käsitellä lukijoita, jotka eivät tue "Seek"- ja "ReadAt"-toimintoja. Tämä auttaisi hallitsemaan muistin käyttöä paremmin suurten tiedostojen latauksen aikana.

3. Suoratoisto ja moniosaiset lataukset: AWS SDK for Go tukee suoratoistoa ja moniosaisia ​​latauksia, mikä voi auttaa hallitsemaan muistin käyttöä suurten tiedostojen latauksen aikana. Nämä ominaisuudet eivät kuitenkaan välttämättä toimi yhtä hyvin vain eteenpäin suuntautuvan lukijan kanssa.

4. Vaihtoehtoiset ratkaisut: Hakutuloksissa suositellaan Minio SDK:n tai Google CDK:n käyttöä, joilla voi olla parempi tuki suurten tiedostojen suoratoistolle S3:lle. Lisäksi aws-s3-reader-seeker -projekti tarjoaa mukautetun lukijan toteutuksen, joka pystyy käsittelemään suuria S3-objekteja paremmin tehokkaasti.

Yhteenvetona voidaan todeta, että vaikka on mahdollista käyttää vain eteenpäin suuntautuvaa Go Tar -lukijaa suurten tiedostojen lataamiseen S3:lle Go:n AWS SDK:n avulla, se ei ehkä ole tehokkain tai muistiystävällisin tapa. Vaihtoehtoisten ratkaisujen harkitseminen tai SDK:n suoratoisto- ja moniosaisten latausominaisuuksien käyttö voi olla parempi vaihtoehto tällaisissa tapauksissa.

Lainaukset:
[1] https://github.com/aws/aws-sdk-go/issues/1104
[2] https://github.com/nikolaydubina/aws-s3-reader/blob/master/aws_s3_reader_seeker.go
[3] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/
[4] https://www.linkedin.com/pulse/golang-uploading-files-aws-s3-bucket-using-pre-signed-tiago-melo
[5] https://pkg.go.dev/github.com/SnellerInc/sneller/aws/s3