102 тыс подписчиков
Как засунуть Protobuf в CEL и выиграть (или проиграть): опыт MWS Cloud Platform
Представьте поток событий k8s, которые сыплются в микросервис без остановки, и каждое надо прогнать через валидацию на CEL. И тут же выясняется неприятное. Чтобы движок проверил жалкие два-три поля, компактный Protobuf распаковывается целиком, память улетает под всё дерево объектов ради пары значений. Большая часть распакованных данных интерпретатору просто не нужна.
Раз так, почему бы не отдать CEL сырые байты и не научить его выдёргивать поля лениво, ровно в момент обращения. Команда MWS Cloud Platform залезла во внутренности обоих форматов, собрала ленивый парсер и запустила бенчмарки. На тяжёлых манифестах аллокации памяти рухнули в 15-20 раз. Мечта. А потом этот код взяли и выкинули...
Около минуты
Вчера