Спасибо за публикацию интересных результатов! Пару вопросов:
1. Вы пробовали использовать технологию server push? Если нет, то интересно почему.
2. Проводили ли этот же эксперимент для мобильных сетей, где latency последней мили достаточно высокий?
Тоже используем FastCGI при построении C++ бэкендов. За основу взяли стандартную libfcgi-dev и написали вокруг неё небольшую обвязку на С++. По дизайну библиотека получилась очень похожей на описываемую в статье. Померил предлагаемый в статье пример — получается 2-5 мс. Измерения проводил на рабочей машине (i7, 8GB). Бэкенд работал так же в связке с Nginx, для тестирования использовался тот же ab. Однако, тестирование проводилось через loopback. Считаю такой метод измерений более показательным, т.к. все накладные расходы на tcp-handshake и прочее сводятся к минимуму, измеряется именно эффективность связки Nginx + FastCGI бэкенд. Предлагаю автору попробовать измерить без виртуализации и через loopback:)
ES используют внутренние системы сбора и актуализации информации. Внешние продукты используют нашу собственную разработку — UniSearch. Если кратко — то это кроссплатформенный, офлайновый, встраеваемый движок, заточенный на структуру данных 2ГИС. Sphinx ранее использовался для онлайн-версии 2ГИС. Сейчас там тоже работает UniSearch, вокруг которого для этих целей был построен бэкенд. Попробовать наиболее свежую версию поиска можно здесь.
Кстати, Ростелеком — не только провайдер, но ещё и хостер. Возможно в ближайшем будущем им придётся банить самих себя по IP. Было бы смешно, если бы не было так грустно.
Не соглашусь про карьерный рост — в больших компаниях как правило вижу раздутую иерархию со множеством ступенек. Так же крупным компаниям свойственна «текучка». Эти два фактора обепечивают карьерный рост. Согласен, что далеко не всегда он зависит от роста профессинальных навыков. В маленьких компаниях чаще встречается плоская структура. Вы разработчик, ваш руководитель — тимлид и CTO в одном лице. Расти особо некуда, если компания не растёт.
Так же не совсем соглашусь про рост профессиональный. В больших компаниях, как правильно замечено в статье, нагрузка как правило ниже. Если разработчик не является трутнем, то вакуум рабочего времени можно пустить, например, на рефакторинг кода, улучшение архитектуры и прочие вещи, на которые небольшая компания не будет тратить деньги. Так же в больших компаниях можно продвигать свои технические идеи и интересы. Например, разработчикам интересно сделать проект в облаке. В маленькой компании очень хорошо считают деньги и не выделят бюджет на такие «игрушки» технарям. В большой компании, при «правильной» подаче идеи менеджерам, есть все шансы такой проект реализовать.
Спасибо за хороший перевод интересной презентации.
Лично я когда сталкиваюсь со сложной задачей разбиваю ее на мелкие задачи, а их по возможности еще на более рутинные, часто проблема решается сама собой, или решение приходит во время составления такого плана.
Если задача разбивается на мелкие довольно легко, за небольшое время — она не сложная. Она просто крупная. Для действительно сложной задачи, где нехватает опыта и знаний, процесс разбиения и есть самая сложная и творческая часть. Всегда удивляло, что в книгах и статях по GTD постоянно пишут про нарезку «Слона» на мелкие части, не рассказывая какие подходы и приёмы для этой самой нарезки есть.
Совет от Капитана:
Нужно научиться перключать контекст с работы на спорт/общение/отдых в тот момент, когда ещё есть желание работать, т.е. когда «батарейки» ещё не сели до конца. Это не просто, отроваться от дела, когда «прёт», но сильно помогает сохранить мотивацию.
Библиотека выглядит перспективной, но по объёму функционала пока сильно уступает тем же Boost и Qt. А это означает, что в определённый момент может понадобится тащить что-то из тех же Boost или Qt и устраивать смесь из нескольких фреймворков / библиотек. Что не очень хорошо.
Оффтоп: насколько я понял, автор собирается писать свой собственный HTTP-сервер. Если это не в учебных целях, то советую ещё раз хорошо обдумать, посмотреть/попробовать FastCGI, модули и плагины к open source web-серверам и только потом писать свой сервер. Проверено на собственном опыте. Не спорю, есть класс задач, где нужно изобретать велосипед и писать свой специализированный HTTP-сервер. Но он очень узок.
На самом деле не только maps.2gis.ru, но ещё и API , а так же мобильную и настольную версию справочника. Но это так, для полноты информации.
Будете обозревать компании в академгородке — заходите в гости в академовский офис 2GIS :)
Жаль, что пока нет возможности загружать снимки спутников, именно они бывают наиболее полезны в местах, где нет интернета. Надеюсь её добавят в будущем. Для тех, кому хочется загрузить весь город (вместе с городами-спутниками) разом и работать в оффлайне советую попробовать 2GIS. Правда где-нибудь далеко в горах или тайге он тоже пока не выручит.
Справедливости ради нужно заметить, что современные асинхронные решения также используют многопоточную модель работы. Делается это ради эффективного использования многоядерных процессоров и многопроцессорных систем. В таких решениях запросы, для которых блокирующая операция выполнилилась помещаются в очередь, откуда выбираются одним из рабочих потоков для выполнения неблокирующей операции. Если для нескольких запросов блокирующая операция завершилась одновременно, то они будут выбраны из очереди и неблокирующая часть каждого запроса будет выполнена в отдельном потоке. Таким образом снижается время обслуживания каждого запроса. В таких решениях кол-во потоков относительно небольшое и равно(или кратно) числу ядер. Одним из примеров такого решения является библиотека Boost.Asio. В документации к библиотеке хорошо описан паттерн асинхронной обработки Proactor.
1. Вы пробовали использовать технологию server push? Если нет, то интересно почему.
2. Проводили ли этот же эксперимент для мобильных сетей, где latency последней мили достаточно высокий?
Не соглашусь про карьерный рост — в больших компаниях как правило вижу раздутую иерархию со множеством ступенек. Так же крупным компаниям свойственна «текучка». Эти два фактора обепечивают карьерный рост. Согласен, что далеко не всегда он зависит от роста профессинальных навыков. В маленьких компаниях чаще встречается плоская структура. Вы разработчик, ваш руководитель — тимлид и CTO в одном лице. Расти особо некуда, если компания не растёт.
Так же не совсем соглашусь про рост профессиональный. В больших компаниях, как правильно замечено в статье, нагрузка как правило ниже. Если разработчик не является трутнем, то вакуум рабочего времени можно пустить, например, на рефакторинг кода, улучшение архитектуры и прочие вещи, на которые небольшая компания не будет тратить деньги. Так же в больших компаниях можно продвигать свои технические идеи и интересы. Например, разработчикам интересно сделать проект в облаке. В маленькой компании очень хорошо считают деньги и не выделят бюджет на такие «игрушки» технарям. В большой компании, при «правильной» подаче идеи менеджерам, есть все шансы такой проект реализовать.
Если задача разбивается на мелкие довольно легко, за небольшое время — она не сложная. Она просто крупная. Для действительно сложной задачи, где нехватает опыта и знаний, процесс разбиения и есть самая сложная и творческая часть. Всегда удивляло, что в книгах и статях по GTD постоянно пишут про нарезку «Слона» на мелкие части, не рассказывая какие подходы и приёмы для этой самой нарезки есть.
Нужно научиться перключать контекст с работы на спорт/общение/отдых в тот момент, когда ещё есть желание работать, т.е. когда «батарейки» ещё не сели до конца. Это не просто, отроваться от дела, когда «прёт», но сильно помогает сохранить мотивацию.
Оффтоп: насколько я понял, автор собирается писать свой собственный HTTP-сервер. Если это не в учебных целях, то советую ещё раз хорошо обдумать, посмотреть/попробовать FastCGI, модули и плагины к open source web-серверам и только потом писать свой сервер. Проверено на собственном опыте. Не спорю, есть класс задач, где нужно изобретать велосипед и писать свой специализированный HTTP-сервер. Но он очень узок.
На самом деле не только maps.2gis.ru, но ещё и API , а так же мобильную и настольную версию справочника. Но это так, для полноты информации.
Будете обозревать компании в академгородке — заходите в гости в академовский офис 2GIS :)