Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188

Клиент в клиент-серверном приложении

07.08.2014, 19:08. Показов 2912. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, делаю тестовое задание для прохождения стажировки. Задействованы MySQL, Hibernate. Вот само задание
Кликните здесь для просмотра всего текста
Исследование AccountService'а
------------------------------------------------------------------------------------------------------
Цель: создать сервис и оценить время доступа к нему в зависимости от входных параметров
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
1. Создать сервис со следующим интерфейсом:
------------------------------------------------------------------------------------------------------
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public interface AccountService
{
 /**
 * Retrieves current balance or zero if addAmount() method was not called before for specified id
 *
 * @param id balance identifier
 */
 Long getAmount(Integer id);
 /**
 * Increases balance or set if addAmount() method was called first time
 *
 * @param id balance identifier
 * @param value positive or negative value, which must be added to current balance
 */
 void addAmount(Integer id, Long value);
}
Сервис будет работать в высоконагруженной отказоустойчивой системе.
Сервис должен кэшировать данные в памяти и сохранять данные в БД (Oracle, PostgreSQL,
MySQL)
или бросать Exception'ы если выполнить операцию не удалось.
В качестве транспортного слоя можно выбрать любой из протоколов RMI, Hessian, HTTP
------------------------------------------------------------------------------------------------------
2. Создать тестового клиента
------------------------------------------------------------------------------------------------------
Тестовый клиент должен уметь запускать несколько конкурентных потоков на определённом
подмножестве идентификаторов
- rCount - количество читателей вызывающих метод getAmount(id)
- wCount - количество читателей вызывающих метод addAmount(id,value)
- idList - список или доапазон ключей которые будут использоваться для тестирования
Эти параметры можно задавать через командную строчку или конфигурационный файл.
Одновременно можно запускать несколько тестовых клиентов на одном или разных
компьютерах.
------------------------------------------------------------------------------------------------------
3. Получить стаистику обрабатки запросов на сервере AccountService'ом
------------------------------------------------------------------------------------------------------
Для каждого из двух методов AccountService'а (getAmount, addAmount) нужно получить
- кол-во запросов обрабатываемых в единицу времени на сервере (!!! не на клиенте)
- общее кол-во запросов от всех клентов

Статистику с сервиса можно получать по требованию любым способом
или сбрасывать в лог с определённой периодичностью.
Предусмотреть возможность сбросить статистику в ноль на работающем сервисе.


Прошу пояснить полностью второй пункт(про подмножества идентификаторов), т.к. из написанного там вообще ничего не понятно. Также хочу спросить, лучше клиент делать в вебе или десктопный?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2014, 19:08
Ответы с готовыми решениями:

Аутентификация в клиент-серверном приложении
Доброго времени суток, граждане. Делаю клиент-серверное приложение с толстым клиентом. Соединение происходит с помощью контрактов WCF....

Шифрование данных в клиент-серверном приложении
Всем привет :) Возникла острая необходимость шифрования текста. В чем соль. Результат шифровки должен выходить в строку с латинскими...

Организация авторизации в клиент-серверном приложении
Доброе утро. Пишу приложение - есть tcp-сервер и tcp-клиент. Нужно реализовать авторизацию клиента на сервере. Вот есть на стороне...

12
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
08.08.2014, 11:28
Добрый день.
Множество идентификаторов - к примеру 100-1000000, думается должно быть неким задаваемым
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
08.08.2014, 13:22  [ТС]
edwin3d, что-то я совсем запутался. rCount, wCount, idList - это и есть эти идентификаторы или это просто параметры? И еще, судя по описанию этих параметров, кажется, что они имеют отношение к серверной части, а не клиентской.
0
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
08.08.2014, 13:29
Вот смотрите, написано:
" - rCount - количество читателей вызывающих метод getAmount(id)"
Неважно КАК мы будем дергать этот метод, через RMI или HTTP, суть в том, что мы его будем дергать.
А "читатели" и будут его "дергать", а значит они и есть компоненты клиента
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
08.08.2014, 14:03  [ТС]
edwin3d, понятно, что читатели будут его дергать. Но каждый читатель в определенный момент времени будет дергать только один раз этот метод, а тут идет речь о количестве читателей ВЫЗЫВАЮЩИХ(т.е. в один и тот же момент) метод. Как я понимаю считается количество клиентов, вызывающих этот метод. По-моему может это делаться только на сервере.
0
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
08.08.2014, 14:19
Кто Вам сказал про то, что дергать метод в тот или иной момент времени будет только один читатель ? Ведь их множество и соот. конкуренция - это совершенно здравая ситуация тут.
Т.е. встраивается схема клиент, у которого Н читателей. К примеру каждый читатель "живет" в отдельном потоке
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
08.08.2014, 18:54  [ТС]
edwin3d, понятное дело, что читателей несколько, т.к. несколько клиентов. Но из каждого клиента то дергаться будет только один метод. А у каждого клиента один читатель(т.е. пользователь).
0
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
09.08.2014, 16:17
Вы не поняли. У вас будет многопоточный клиент.
Количество потоков = количеству читателей. Это все может быть в одном клиенте.

Один клиент. У него много потоков. В каждом потоке по читателю. Вам нужно задать количество потоков, которое будет создавать ваш клиент.
Естественно, одновременного (в общепризнанном понимании) чтения не будет. Но переключение между потоками будет проходить за доли секунды. Так что можно легко заспамить ваш сервер (если он слабый и не успевает обрабатывать такое количество запросов сразу). В этом и суть его тестирования.
1
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
09.08.2014, 23:15  [ТС]
Virkom, кажется начинаю понимать. Но: допустим в клиенте две кнопки(для чтения и записи), как тогда протестировать это, выполнение запросов будет происходить явно быстрее, чем я успею нажать кнопки.
0
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
10.08.2014, 17:14
Лучший ответ Сообщение было отмечено ivan92 как решение

Решение

Алгоритм в общем виде:

1. Вы вводите количество создаваемых потоков (N).
2. Нажимаете кнопку "Чтение".
3. Программа создает первый поток и обращается к серверу.
4. Программа создает второй поток и обращается к серверу.
5. Программа создает третий поток и обращается к серверу.
.....
n. Программа создает N-ный поток и обращается к серверу.
n+1. Сервер не сдох? - Тест пройден успешно. Закрываем все потоки и завершаем работу клиента.

При этом можно установить временную задержку. Между запросами.
Например, программа-клиент создает один поток и устанавливает для него задержку в одну секунду. Т.е. этот поток будет каждую секунду "теребить" сервер.
Программа-клиент создает второй поток и опять же ставит для него задержку в одну секунду. Теперь работают два потока и сообщений на сервер сыплется каждую секунду в два раза больше.
И так далее.

Нажимаете кнопку вы один раз. Остальное делает программа-клиент. Почитайте про процессы/потоки.
1
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
10.08.2014, 19:33
Если сервер использует HTTP то тестовым клиентом может выступить apache jmeter. Думаю использование готового решения вместо траты времени на написание своего (если готовое решение отвечает требованием и достаточно гибкое) является лучшей альтернативой. К тому же в задании сказанно создать клиента а не написать
0
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
11.08.2014, 12:54  [ТС]
Virkom, о потоках и потоках в java я более-менее осведомлен, спасибо за развернутый ответ)

Добавлено через 2 минуты
KEKCoGEN, решил все таки остановиться на свинге. Ведь транспортному слой между свинговым клиентом и сервером соответствует протокол RMI?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
11.08.2014, 16:09
Цитата Сообщение от ivan92 Посмотреть сообщение
Ведь транспортному слой между свинговым клиентом и сервером соответствует протокол RMI?
Зависит от того какую технологию вы выберите. Выберите RMI будет RMI
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.08.2014, 16:09
Помогаю со студенческими работами здесь

Не передается файл в клиент-серверном приложении
Привет всем! Написал простой клиент -сервер, но возникла проблема. Клиент видет с сервер. Пытаюсь передать файл (бинарный) в ...

Авторизация в клиент-серверном приложении (simplemembership?)
Добрый день. Хотелось бы узнать, как устроить авторизацию в случае клиент-серверного приложения. Хотелось использовать...

Передача данных в клиент-серверном приложении
Добрый день. Я новичок в C# и возможно мой вопрос будет глупым, но сильно не ругайте, а подскажите. Разработал приложение, которое...

Обработка ошибки в Клиент - Серверном приложении
Доброго времени суток. Писал чат на сокетах. Есть приложение Сервер и приложение Клиент. Клиент работает, естественно, только тогда,...

Передача файлов в клиент-серверном приложении
помогите плиииз.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru