Разработка базы данных на Golang Go в продуктовой разработке

Программный комитет ещё не принял решения по этому докладу
Вадим Кулибаба
mail.ru

Люблю придумывать новое, запускать в прод и наблюдать взлетит/не взлетит. Написал интересный проект - за который чуть не "сел". За другой интересный проект был удален из google. Теперь работаю в mail.ru и сплю спокойно.

http://t.me/recoilme
Тезисы

Мы любим Go прежде всего за высокую продуктивность и производительность. Но расплатой за "лёгкость" и скорость разработки являются задержки на сборку мусора, обработку блокировок и не всегда оптимальное хранение данных в памяти. Данные проблемы, часто провоцируют переписывание критичных к времени отклика сервисов, таких, как базы данных, на использование более низкоуровневых языков (C/C++/Rust). Мы рассмотрим, как обойти некоторые ограничения Go и реализовать высоконагруженный сервис для хранения данных в формате ключ/значение, реализовав как компактный движок, малоподверженный проблемам сборки мусора и аллокаций, так и высокопроизводительный сокет сервер, обслуживающий десятки тысяч запросов в секунду с минимальной задержкой. Исходный код предлагаемых решений открыт:

https://github.com/recoilme/sniper - компактное, эффективное решение для хранения данных, сопоставимое по производительности с решениями на низкоуровневых языках

https://github.com/recoilme/b52 - экспериментальный, совместимый с мемкеш сервер базы данных ключ/значение

Данные решения разработаны под специфическую задачу, хранения рекомендаций. С одной стороны в них много специфики (например, не нужны транзакции и тп), но с другой стороны они успешно эксплуатируются и использованные подходы, являются довольно общими и могут быть заимствованы при разработке других высоконагруженных сервисов.

Другие доклады секции Go в продуктовой разработке