[Storage] different order to compress and encrypt (#1182)
* feat(backend): try to compress and encrypt in a new way
This commit is contained in:
parent
41f8b5ad57
commit
ef9fed8bf8
1 changed files with 27 additions and 26 deletions
|
|
@ -186,19 +186,20 @@ func (s *Storage) packSession(task *Task, tp FileType) {
|
|||
mob := task.Mob(tp)
|
||||
|
||||
if tp == DEV || len(mob) <= s.cfg.FileSplitSize {
|
||||
// Encryption
|
||||
start := time.Now()
|
||||
data := s.encryptSession(mob, task.key)
|
||||
metrics.RecordSessionEncryptionDuration(float64(time.Now().Sub(start).Milliseconds()), tp.String())
|
||||
// Compression
|
||||
start = time.Now()
|
||||
result := s.compressSession(data)
|
||||
start := time.Now()
|
||||
data := s.compressSession(mob)
|
||||
metrics.RecordSessionCompressDuration(float64(time.Now().Sub(start).Milliseconds()), tp.String())
|
||||
|
||||
// Encryption
|
||||
start = time.Now()
|
||||
result := s.encryptSession(data.Bytes(), task.key)
|
||||
metrics.RecordSessionEncryptionDuration(float64(time.Now().Sub(start).Milliseconds()), tp.String())
|
||||
|
||||
if tp == DOM {
|
||||
task.doms = result
|
||||
task.doms = bytes.NewBuffer(result)
|
||||
} else {
|
||||
task.dev = result
|
||||
task.dev = bytes.NewBuffer(result)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -210,31 +211,31 @@ func (s *Storage) packSession(task *Task, tp FileType) {
|
|||
|
||||
// DomStart part
|
||||
go func() {
|
||||
// Encryption
|
||||
start := time.Now()
|
||||
data := s.encryptSession(mob[:s.cfg.FileSplitSize], task.key)
|
||||
firstEncrypt = time.Since(start).Milliseconds()
|
||||
|
||||
// Compression
|
||||
start = time.Now()
|
||||
task.doms = s.compressSession(data)
|
||||
start := time.Now()
|
||||
data := s.compressSession(mob[:s.cfg.FileSplitSize])
|
||||
firstPart = time.Since(start).Milliseconds()
|
||||
|
||||
// Encryption
|
||||
start = time.Now()
|
||||
task.doms = bytes.NewBuffer(s.encryptSession(data.Bytes(), task.key))
|
||||
firstEncrypt = time.Since(start).Milliseconds()
|
||||
|
||||
// Finish task
|
||||
wg.Done()
|
||||
}()
|
||||
// DomEnd part
|
||||
go func() {
|
||||
// Encryption
|
||||
start := time.Now()
|
||||
data := s.encryptSession(mob[s.cfg.FileSplitSize:], task.key)
|
||||
secondEncrypt = time.Since(start).Milliseconds()
|
||||
|
||||
// Compression
|
||||
start = time.Now()
|
||||
task.dome = s.compressSession(data)
|
||||
start := time.Now()
|
||||
data := s.compressSession(mob[s.cfg.FileSplitSize:])
|
||||
secondPart = time.Since(start).Milliseconds()
|
||||
|
||||
// Encryption
|
||||
start = time.Now()
|
||||
task.dome = bytes.NewBuffer(s.encryptSession(data.Bytes(), task.key))
|
||||
secondEncrypt = time.Since(start).Milliseconds()
|
||||
|
||||
// Finish task
|
||||
wg.Done()
|
||||
}()
|
||||
|
|
@ -262,7 +263,7 @@ func (s *Storage) encryptSession(data []byte, encryptionKey string) []byte {
|
|||
|
||||
func (s *Storage) compressSession(data []byte) *bytes.Buffer {
|
||||
zippedMob := new(bytes.Buffer)
|
||||
z, _ := gzip.NewWriterLevel(zippedMob, gzip.BestSpeed)
|
||||
z, _ := gzip.NewWriterLevel(zippedMob, gzip.DefaultCompression)
|
||||
if _, err := z.Write(data); err != nil {
|
||||
log.Printf("can't write session data to compressor: %s", err)
|
||||
}
|
||||
|
|
@ -283,7 +284,7 @@ func (s *Storage) uploadSession(task *Task) {
|
|||
go func() {
|
||||
if task.doms != nil {
|
||||
start := time.Now()
|
||||
if err := s.s3.Upload(task.doms, task.id+string(DOM)+"s", "application/octet-stream", true); err != nil {
|
||||
if err := s.s3.Upload(task.doms, task.id+string(DOM)+"s", "application/octet-stream", task.key == ""); err != nil {
|
||||
log.Fatalf("Storage: start upload failed. %s", err)
|
||||
}
|
||||
uploadDoms = time.Now().Sub(start).Milliseconds()
|
||||
|
|
@ -293,7 +294,7 @@ func (s *Storage) uploadSession(task *Task) {
|
|||
go func() {
|
||||
if task.dome != nil {
|
||||
start := time.Now()
|
||||
if err := s.s3.Upload(task.dome, task.id+string(DOM)+"e", "application/octet-stream", true); err != nil {
|
||||
if err := s.s3.Upload(task.dome, task.id+string(DOM)+"e", "application/octet-stream", task.key == ""); err != nil {
|
||||
log.Fatalf("Storage: start upload failed. %s", err)
|
||||
}
|
||||
uploadDome = time.Now().Sub(start).Milliseconds()
|
||||
|
|
@ -303,7 +304,7 @@ func (s *Storage) uploadSession(task *Task) {
|
|||
go func() {
|
||||
if task.dev != nil {
|
||||
start := time.Now()
|
||||
if err := s.s3.Upload(task.dev, task.id+string(DEV), "application/octet-stream", true); err != nil {
|
||||
if err := s.s3.Upload(task.dev, task.id+string(DEV), "application/octet-stream", task.key == ""); err != nil {
|
||||
log.Fatalf("Storage: start upload failed. %s", err)
|
||||
}
|
||||
uploadDev = time.Now().Sub(start).Milliseconds()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue