Какова правильная структура асинхронного TCP-сервера в Go?
У меня есть клиент, отправляющий около 500 тыс. Запросов (сообщений)/ мин. Каждое сообщение будет около 200 байтов до 2 КБ. Каждое сообщение будет сохранено в базе данных (например, Couchbase).
Как правильно структурировать сервер Go TCP с точки зрения ядер, портов, соединений и подпрограмм, чтобы справиться с этой нагрузкой?
1 ответ
Как упоминает JimB, сервер TCP не должен быть сложным, чтобы встать и начать тестирование в соответствии с вашими потребностями. Простая схема состоит в том, чтобы ожидать входящие TCP-соединения и затем выполнять процедуру go для ее обработки. В этой процедуре вы можете поместить любой код блокировки, который вы хотите, в этом случае записать в БД. Вот ссылка на простой пример:
Как только вы начнете работать, вы можете сделать его более сложным, если он не соответствует вашим стандартам производительности. Вот хороший пример использования рабочего пула для обработки 1M HTTP-запросов в минуту.