Задать вопрос

Как организовать высоконагруженный TCP-сервер?

Имеется постоянно пополняемая БД. Сервер должен выбирать данные из БД и отдавать клиентам, как синхронно (сразу после запроса клиента), так и асинхронно. Другими словами, между клиентами и сервером устанавливается двустороннее соединение. Целевая платформа для сервера — Debian, для клиентов — Windows, Android (+ веб-интерфейс, но тут уже без асинхронности). Все взаимодействия через интернет (у сервера белый IP; клиент может быть где хочешь — за NAT, за Proxy).


Вопрос: как лучше всего реализовать такой TCP-сервер (язык, библиотеки, примеры), чтобы не городить много велосипедов?


Несформированные идеи как попытка симбиоза быстрого гугления и имеющихся навыков:

— написать свой TCP-сервер (Erlang?), начиная с синхронных/асинхронных сокетов, многопоточности и проч.

— или написать модуль для Apache? (плохо предтавляю как это выглядит, да и вряд ли подойдет)

— свой протокол взаимодействия между клиентом и сервером на основе JSON?

— использовать STUNT для обхода NAT-ов?

— использовать SOCKS для прохода TCP-потока через Proxy?

— использовать SSL для защиты TCP-траффика?


У кого есть опыт, помогайте!
  • Вопрос задан
  • 4191 просмотр
Подписаться 7 Оценить 3 комментария
Решение пользователя strib К ответам на вопрос (3)
strib
@strib
Исходя из обсуждения выше рекомендую посмотреть:
1) zeromq.org
2) ampq.org
Ответ написан