📢 Новости о разработке Steemit: разделение Condenser и Mira
Привет, стимеры!
В стремлении держать вас в курсе мы продолжаем публиковать новости о различных проектах, над которыми сейчас работаем. Поскольку наши инженерные команды обычно функционируют в формате 2-недельных спринтов, завершенные на этой неделе задачи в основном являются продолжением изложенных в нашем последнем посте.
Разделение Condenser и кошелька
Мы почти завершили первую стадию разделения Condenser. Выделенное приложение для кошельков будет запущено на отдельном домене.
Кроме того, мы реализуем в социальном приложении диалоговое окно с предупреждением о том, что пользователь пытается войти в систему с помощью чего-либо, кроме своего постинг-ключа. Это подготовка к ограничениям, которые вступят в силу с удалением функционала кошелька из социального приложения и тем самым полностью устранят возможность войти в систему с мастер-паролем. Чтобы узнать подробности о ваших приватных ключах и о том, как их правильно использовать, ознакомьтесь с нашим недавним постом.
После этого нам предстоит проделать завершающую работу, в частности, связанную с улучшением пользовательского опыта и безопасности. Но когда этот последний этап будет пройден, всё станет гораздо интереснее, поскольку два новых выделенных приложения будут куда более безопасными и низкозатратными по сравнению со старым Condenser, что позволит нам добавлять новые функции ещё быстрее.
Снижение затрат
Мы всё так же идём по пути подбора размеров экземпляров и настройки автоматического масштабирования для всех приложений. В процессе выполнения этой задачи для Jussi мы обнаружили, что довольно большая часть наших затрат на передачу данных генерируется неэффективными сторонними приложениями и ботами. У нас есть краткосрочный план, который поможет снизить ущерб от наихудших из них, после чего мы сможем продолжить регулировку размеров экземпляров и автомасштабирование для Jussi наряду с остальными нашими приложениями. Эти изменения не повлияют на 99% приложений, использующих api.steemit.com, и те немногие, которые ощутят их эффект, смогут решить свою проблему, запрашивая данные, которые изменяются нечасто.
Mira/RocksDB
Мы хотели бы немного подробнее рассказать вам о процессе, который используем для оптимизации Mira.
Мы итеративно профилируем реиндекс steemd для выявления медленных точек, которые можно оптимизировать. В самом начале этого процесса мы переиндексировали только первые 500 000 блоков, что заняло несколько минут. Мы смогли оптимизировать некоторые легко достижимые точки, что позволило нам переиндексировать больше блокчейна и профилировать производительность. Сложность, с которой мы сейчас сталкиваемся, заключается в том, что некоторые оптимизации производительности приводят к ее увеличению для одних блоков, но к снижению для других, поскольку рабочая нагрузка блокчейна не является статичной.
Эту проблему наглядно иллюстрирует замедление, которое мы наблюдали на прошлой неделе в районе блока 19 000 000. По какой-то причине производительность переиндексации упала и составляла в среднем один блок в 1,15 секунды. Это неприемлемо для режима реального времени и не менее ужасно для переиндексации. Примерно в это время изменились объем и/или типы операций, производящихся в блокчейне, что и привело к снижению производительности. По итогу исследования мы обнаружили, что некоторые распространенные запросы, такие как: «Какой комментарий будет вознагражден следующим?» потребляли почти всё наше время выполнения. Мы решили внедрить систему, которая кэширует первый ключ в индексе, чтобы быстрее отвечать на запросы, подобные приведенному выше. Вы можете найти коммит, который ввел эту оптимизацию, здесь.
Когда мы запустили переиндексацию с этим изменением, нам удалось добраться до блока 19 000 000 за рекордное для Mira время (18 часов), и мы смогли продвигаться дальше со скоростью примерно один блок в 0,012 секунды! Ранее мы проводили переиндексацию до блоков 500 000 и 2 000 000. С этим изменением наше время переиндексации до блока 500 000 стало немного медленнее, если вообще изменилось. Для 2 000 000 увеличение составило менее 1%, однако для более длительной переиндексации мы наблюдали увеличение производительности более чем на 9 000%!
Это в общих чертах обрисовывает главную проблему, всё ещё стоящую перед нами, пока мы продолжаем оптимизировать Mira.
Поскольку самая большая выгода достигается только при более длительной переиндексации, появляется задержка в определении и оптимизации замедлений. У нас есть круг проблем, над оптимизацией которых мы активно работаем, в то же время продолжая определять следующие цели для оптимизации. И хотя нам предстоит проделать еще много работы, мы стремительно приближаемся к запуску ноды steemd на Mira в режиме реального времени.
Как вы можете видеть из этого обновления, в своем роде уникальная проблема, с которой мы сталкиваемся как команда, заключается в том, что наше внимание разделено между работой над максимально передовым блокчейном и разработкой фронтенда. Большинство, если не все подобные проблемы, являются следствием беспрецедентного объёма трафика (в секторе блокчейнов), который генерируется steemit.com и экосистемой приложений Steem. Это, безусловно, делает нашу работу куда сложнее, и тем не менее мы считаем, что именно наша готовность всесторонне решать эти проблемы позволяет нам оставаться на много шагов впереди конкурентов.
Обязательно подпишитесь, если хотите видеть больше обновлений, подобных этому!
- Команда Steemit
Оригинал поста: ЗДЕСЬ