Это масштабируемая реализация сервера именованных каналов? - PullRequest
1 голос
/ 06 февраля 2010

Глядя на этот пример именованных каналов с использованием перекрывающегося ввода-вывода из MSDN, мне интересно, насколько это масштабируемо?Если вы раскручиваете дюжину клиентов и заставляете их работать на сервере 10 раз в секунду, при этом каждая партия из 10 идет сразу за другой, а затем спит целую секунду, то в конечном итоге некоторые экземпляры клиента становятся голодными.

Реализация сервера: http://msdn.microsoft.com/en-us/library/aa365603%28VS.85%29.aspx

Реализация клиента (при условии, что вызов сделан 10x / сек, и есть дюжина экземпляров).http://msdn.microsoft.com/en-us/library/aa365603%28VS.85%29.aspx

1 Ответ

1 голос
/ 07 февраля 2010

Тот факт, что веб-страница указывает, что:

  • Сервер канала создает фиксированное количество экземпляров канала.

и

  • Хотя в примере показаны одновременные операции на разных экземплярах канала, он избегает одновременных операций на одном экземпляре канала, используя объект события в структуре OVERLAPPED. Поскольку один и тот же объект события используется для операций чтения, записи и подключения для каждого экземпляра, нет способа узнать, какая операция завершилась тем, что событие было установлено в сигнальное состояние для одновременных операций с использованием одного и того же экземпляра канала

вы, вероятно, можете с уверенностью предположить, что это не так масштабируемо, как могло бы быть; в конце концов, это пример использования API; демонстрация функциональности обычно является наиболее важным конструктивным ограничением для такого кода.

Если вам нужно, чтобы 12 клиентов выполняли 10 подключений в секунду, то лично у меня был бы сервер, способный обрабатывать БОЛЬШЕ, чем 12 клиентов, чтобы учесть период, когда сервер готовится к подключению нового клиента ... Лично я я бы переключился на использование сокетов, но это только я (и я искажен таким образом, потому что я проделал много работы с высокопроизводительными сокетами и, соответственно, весь код) ...

...