• Высоконагруженный сокет-сервер?

    ramilexe
    @ramilexe
    Попробуйте посмотреть исходники проекта raknet. Это опенсорсный движок для сетевых игр. Может поможет.
    Ответ написан
    1 комментарий
  • Высоконагруженный сокет-сервер?

    vanxant
    @vanxant
    1. Забудьте про треды и тем более процессы, 5-10к тредов не выдержит никакая ось.
    2. Соответственно только неблокирующий ввод-вывод. Один поток занимается только i/o и сбрасывает полученные данные другим потокам… Вы бы сказали всё же какая у вас задача, а то это пальцем в небо.
    3. Нормально реализовать неблокирующий и/о с первого раза сложно, со второго тоже… Там внутрях каждой оси много «трюков», которые нет-нет да заблокируют ваш поток. Очень советую использовать libevent или что-то вроде того.
    4. Если уж собираете статистику и всё такое, не изобретайте велосипед и возьмите хотя бы SQLite. Иначе опять же соберете кучу граблей и косяков с конкурентностью, взаимными блокировками потоков, крахом базы при падении сервера, рейсами и прочими прелестями многопоточки. SQLite можно встроить прямо в вашу прогу, для внешнего наблюдателя её как бы и не будет.
    Ответ написан
    1 комментарий
  • Высоконагруженный сокет-сервер?

    akzhan
    @akzhan
    смотрите в сторону libev, livevent, libux.

    можете посмотреть исходные тексты Node.JS. Или просто писать на Node.JS, скорость удивит.
    Ответ написан
    2 комментария
  • Высоконагруженный сокет-сервер?

    @rPman
    Я не специалист, но фраза 'какой из механизмов IPC выдержит' немного странная, какая разница, если в ОС штатно только один — message queue, shared memory и semaphore, что бы вы не выбрали, будет использовать их (особо кривые что то одно).

    Не совсем веб-проект, но для распараллеливания задачи пришлось использовать и очереди и семафоры (очень активное использование), рекомендую не передавать данные в очереди, она быстро кончается… максимум идентификаторы и подробности через shared memory или другие механизмы.
    Возможно, не стоит создавать один семафор на все, лучше под напрячься и по семафору на объект или хотя бы группу (чтобы блокировать только на доступ к группе а не всех ко всему) — этот подход может дать наверное максимально возможный прирост, когда упретесь в потолок (особенно грустно когда процессоры еще не нагружен и демоны чего то ждут), это в смысле организации многопроцессорного демона (или демон на ядро, так удобнее).
    Ответ написан
    2 комментария
  • Высоконагруженный сокет-сервер?

    @korvindest
    Мне кажется вам лучше смотреть в сторону openSource СУБД типа PostgreSQL ведь СУБД то как раз должны держать коннект, до тех пор пока он не будет разорван клиентом.

    Хотя конечно, подозреваю, что выковыривать от туда сей механизм будет не просто.
    Ответ написан
    1 комментарий
  • Что должен знать Senior C++ Developer?

    afiskon
    @afiskon
    Советую найти работу — удаленную или на пол ставки. Студентов, готовых работать за 10-20к разбирают, как горячие пирожки. В связи с этим можешь сразу пойти на собеседование в 3-5 мест и найти наиболее интересное/удобное для тебя. Опыт и особые знания не нужны, главное — мозги.

    Только (очень важно!) советую сразу искать место, где будет интересно работать после получения диплома. А также, где имеет место командная работа (в смысле — настоящая, с документацией, svn и тп) и желательно — иногда говорят на английском. Если к этому всему прибавить высоконагруженные проекты — вообще супер. К окончанию института уже будешь иметь и знания и продакшн-опыт.

    Как программист C++, ты обязан хорошо разбираться в STL и Boost, отладочных средствах и API под платформу, под которую пишешь (UNIX/Windows), а также десятке кроссплатформеных библиотеках (Crypto++, cURLpp, Qt, wxWidgets, ...). Знание ассемблера не повредит. Ну и изучай процессы разработки, правила написания читабельного и легкого в сопровождении кода, UML, сети и тп.
    Ответ написан
    3 комментария
  • VPN сервер на VDS

    @omegian
    я бы всёже выбрал openvpn, пользуюсь им очень давно, есть клиенты и для iphone www.guizmovpn.com/ и для андроида. плюс — поддержка работа через NAT и http/socks прокси.
    Ответ написан
    1 комментарий