Все домены мира в RAM процесса Бэкенд, теория программирования

Доклад принят в программу конференции
Евгений Буевич
RU-CENTER

Ведущий разработчик компании RU-CENTER. Разработка сетевых и высоконагруженных приложений на языках C и Perl.

evgbuevich@nic.ru
Тезисы

В мире в настоящее время зарегистрировано, зарезервировано и имеет специальную цену регистрации около полумиллиарда доменных имен. Данные об их состоянии приходят в виде набора snapshot'ов на сотни миллионов строк. Как хранить эту информацию, обновлять ее по полученным спискам и быстро находить в ней состояние нужного домена?

Мы пробовали использовать для этой цели postresql, redis и остановились на встраиваемом разделенном kv-хранилище собственной разработки. В результате мы получили скорость добавления новых данных 3M ключей в секунду (3 минуты в сутки на обновление/восстановление всей БД вместо часов), скорость чтения 4M ключей на CPU сервера и минимальную инфраструктуру.

В докладе рассказывается о технических проблемах, с которыми мы столкнулись, и о способах их решения.
Будет рассказано о том, как мы:
- оптимизировали хэш-таблицу под кэш CPU;
- ускорили добавление новых данных;
- решили проблемы user-space RCU для нескольких процессов в Linux-системе;
- комбинировали способы lock-free-синхронизации;
- боролись с дисковым кэшем Linux и проиграли;
- неожиданно написали очень быстрый IPC-модуль для Perl.

C/C++
,
Perl
,
Организация системы кеширования
,
Оптимизация производительности
,
Разработка библиотек, включая open source библиотеки

Другие доклады секции Бэкенд, теория программирования