Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Поддержка zstd словаря #184

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

Conversation

SevereCloud
Copy link
Owner

vk.EnableZstd()

err := vk.UpdateZstdDict()
if err != nil {
	log.Fatal(err)
}

Как это работает?

VK поддерживает сжатие запросов используя zstd со словарем. Для получения ссылки на словарь, вызвается метод account.getZSTDDict

type AccountGetZSTDDictResponse struct {
	Link    string `json:"link"`
	Version string `json:"version"`
	Hash    string `json:"hash"`
}

Файл начинается с версии словаря:

00 01 02 03 04 05 06 07 08 09 0A
64 69 63 74 5F 76 32 37 A4 30 EC
d i c t _ v 2 7 0

Сам zstd словарь начинается с магического номера0xEC30A437 в little-endian формате.

Версия словаря передается в поле x-zstd-dict-version

Странности

Сейчас метод account.getZSTDDict не работает(по некоторым причинам). Сам метод можно вызывать только с помощью токена пользователя.

Словарь для json или msgpack?

image

В выступлении(статье) говорится о использовании zstd вместе с msgpack, но сам словарь(data_v2) тренировался на json, что делает его бесполезным с msgpack...

¯_(ツ)_/¯

Проблема загрузки словаря

В модуле github.com/klauspost/compress/zstd используется опциональная функция zstd.WithDecoderDicts(data). Каждый вызов zstd.NewReader(resp.Body, optionWithDecoderDicts) сначала разбирает словарь, а затем добавляет его к ридеру, что может сказаться на перфомансе


This close #180

@SevereCloud SevereCloud linked an issue Jan 31, 2022 that may be closed by this pull request
Base automatically changed from dev-v2.14.0 to master June 16, 2022 06:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Сжатие zstd со словарем
1 participant