powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Архитектура клиент-сервер. Вопрос, как правильно сделать?
10 сообщений из 10, страница 1 из 1
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39222962
MathewSun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, всем привет.
Вопрос по архитектуре.
У меня есть сайт, который работает на ASP.Net C#.
Есть клиент, Win-приложение, так же написанное на C#.
Клиентов таких огромное количество, пользователи скачивают в свобоном доступе и запускают на своих компьютерах.
Вопрос заключается в том, как правильно организовать раздачу заданий данным клиентам.
У меня сейчас организовано через обычный web-сервис .asmx - на клиенте делаю задержку в 3 секунды и опрашиваю сервер на наличие задания.
На сервере каждый раз из базы выгребается не простой процедуркой задача, и если есть такая - то отдается на клиент.
Клиент по выполнению задания - так же отдает результат на сервер через сервис.
Понимаю что при росте числа клиентов у меня мой сервер начнёт постепенно загибаться.
в данный момент около 50 клиентов нормально работает.
Но планы на 1000 как минимум, а то и на 1кк клиентов. Как быть в данном случае?
Благодарю за любую информацию.
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223017
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSun,

Сначала нужно определить узкое место. Почему 1к клиентов могут нагнуть сервер?
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223124
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSun,

Нужно провести нагрузочное тестирование:

100 клиентов,
500 клиентов,
1000 клиентов.

Для этого сами клиенты не нужны, нужно только обращение к веб-сервису.

Снять метрики, выявить узкое место, закатать рукава и заняться оптимизацией.

Основная техника оптимизации -- это кеширование на сервере для снижения количества обращений к СУБД, для снижения нагрузки на сервер также поможет кеширование на клиенте, чтобы не запрашивать каждый раз одно и тоже.

Вот как быть.
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223179
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSunНа сервере каждый раз из базы выгребается не простой процедуркой задача, и если есть такая - то отдается на клиент.
ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки.
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223273
MathewSun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAMathewSunНа сервере каждый раз из базы выгребается не простой процедуркой задача, и если есть такая - то отдается на клиент.
ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки.

Для каждого клиента выдаются разные задания.. И они могут зависить от уже выполненных другим клиентом. Запросы уже оптимизированы.

Кеширование тут тоже не поможет, это не странички, а ответы на методы сервиса. Они все уникальные.

С нагрузками так и займемся, будем искать точку падения. Спасибо.

Интересны примеры, как организованы архитектурно такие проекты. Например та же icq. Сотни тысяч клиентов шлют запросы. Хотя? как я понимаю тот же youtube и vkontakte этот тот же сервер, который отдает клиенту результат. И если веб-серверы (ns) разные, то обращение все равно идет к одной машине с базой (которая кластер).

Как я понмиаю тут нужно выяснить предел текущей нагрузки, максимально оптимизировать код и уже если будут расти нагрузки - увеличивать мощность рабочей станции.

Вопрос наверно по самой архитектуре. Правильно ли с клиентов опрашивать каждые три секунды сервер. Хотя другого пути наверно нет.
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223288
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSunskyANAпропущено...

ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки.
Интересны примеры, как организованы архитектурно такие проекты. Например та же icq. Сотни тысяч клиентов шлют запросы. Хотя? как я понимаю тот же youtube и vkontakte этот тот же сервер, который отдает клиенту результат. И если веб-серверы (ns) разные, то обращение все равно идет к одной машине с базой (которая кластер).
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223290
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что и где применять сильно зависит от проекта, данных, их динамики, характера нагрузки.
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223291
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSunskyANAпропущено...

ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки.
Вопрос наверно по самой архитектуре. Правильно ли с клиентов опрашивать каждые три секунды сервер. Хотя другого пути наверно нет.
Вы сами не хотите рассмотреть другие пути...

MathewSunДля каждого клиента выдаются разные задания..почему это проблема?

MathewSunИ они могут зависить от уже выполненных другим клиентом. Запросы уже оптимизированы.задания орашиваются каждые 3 секунды, а выполняются очевидно во много раз дольше.
То есть пересчитать зависимости при сохранении выполненного задания - это гораздо более редкая процедура и сильно снижает нагрузку на сервер БД.
а так всё идёт через один Web-service, то можно это делать асинхронно прямо в памяти сервиса.

MathewSunЗапросы уже оптимизированы.и выполняются за 10 ms? Тогда зачем что-то менять?
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223294
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSunКак я понмиаю тут нужно выяснить предел текущей нагрузки, максимально оптимизировать код и уже если будут расти нагрузки - увеличивать мощность рабочей станции.
Да, но для начала тупо запустите Perfomance Monitor..
У Вас в пике 17 запросов в секунду - это какбы совершенно ни о чём для современных рабочих станций.
А рабочая нагрузка может легко оказаться в 5 раз меньше.
...
Рейтинг: 0 / 0
Архитектура клиент-сервер. Вопрос, как правильно сделать?
    #39223295
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MathewSun, кстати когда клиент выполняет задачу, он продолжает опрашивать сервер на предмет новых, или нет?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Архитектура клиент-сервер. Вопрос, как правильно сделать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]