Отрефакторили NNTP. По идее теперь должен вообще летать. Заодно вчера нашли ошибку, из-за которой загрузка сообщений иногда подвисала. Но теперь все круто. Причем круто даже по меркам инвиженовской версии, потому что гораздо лучше все откешировано. Да и вообще, архитектура сильно выпрямилась в пользу производительности.
Получился демон на перле, который всю информацию берет непосредственно из базы, а аутентификацию и некоторые конфиги тянет по http через подобие RPC. Причем http-запросы хорошо кешируются, что сокращает их количество в сотни раз. Сам демон многопоточный, каждый поток на неограниченное количество клиентов. Блокировки почти отсутствуют (очень короткие, только в пределах 1 потока, только на аутентификации, и только при неотстроенном кэше). Лепота. Завязок на структуру сообщений нет. PHP-шная часть отстраивает индекс ньюс-групп непосредственно в момент добавления постов или любой другой информации. Вот тут и проявились все достоинства воблы перед ipb.
Закончили поздно, на ночь глядя курочить продакшен было стремно. Поэтому тормознем форум сегодня днем минут на десять, чтобы накатить свежую версию. Самому не терпится посмотреть.
Там еще есть чего доделывать, но вещи уже не сильно принципиальные, подождут. Тем более что со вторым программером дело пойдет веселее. А пока наконец-то можно будет заняться накопившимися мелочами.
Почему так много сил тратится на NNTP, которым пользуется мало человек? Потому что большинство тех людей - модераторы 😃 . И удобный инструмент для чтения большого количества сообщений и логов - жизненная необходимость, а не моя персональная придурь.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"4a81295699707300770fa4be","hid":7139,"title":"Закончили рефакторить NNTP","html":"<p>Отрефакторили NNTP. По идее теперь должен вообще летать. Заодно вчера нашли ошибку, из-за которой загрузка сообщений иногда подвисала. Но теперь все круто. Причем круто даже по меркам инвиженовской версии, потому что гораздо лучше все откешировано. Да и вообще, архитектура сильно выпрямилась в пользу производительности.</p>\n<p>Получился демон на перле, который всю информацию берет непосредственно из базы, а аутентификацию и некоторые конфиги тянет по http через подобие RPC. Причем http-запросы хорошо кешируются, что сокращает их количество в сотни раз. Сам демон многопоточный, каждый поток на неограниченное количество клиентов. Блокировки почти отсутствуют (очень короткие, только в пределах 1 потока, только на аутентификации, и только при неотстроенном кэше). Лепота. Завязок на структуру сообщений нет. PHP-шная часть отстраивает индекс ньюс-групп непосредственно в момент добавления постов или любой другой информации. Вот тут и проявились все достоинства воблы перед ipb.</p>\n<p>Закончили поздно, на ночь глядя курочить продакшен было стремно. Поэтому тормознем форум сегодня днем минут на десять, чтобы накатить свежую версию. Самому не терпится посмотреть.</p>\n<p>Там еще есть чего доделывать, но вещи уже не сильно принципиальные, подождут. Тем более что со вторым программером дело пойдет веселее. А пока наконец-то можно будет заняться накопившимися мелочами.</p>\n<!--cut-->\n<p>Почему так много сил тратится на NNTP, которым пользуется мало человек? Потому что большинство тех людей - модераторы <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span> . И удобный инструмент для чтения большого количества сообщений и логов - жизненная необходимость, а не моя персональная придурь.</p>\n","user":"39c21abc3df9550077797d18","ts":"2009-08-11T08:18:30.000Z","st":1,"cache":{"comment_count":0},"views":733,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}