Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть работка :) Разработать мини-вебсервер. оплата 200 евро 
:(
    Опции темы
Wowa
Дата 25.4.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Разработать мини-ява вебсервер. Оплата 200 евро.
Подробности тут:
http://vingrad.ru/projects/361.html
PM WWW   Вверх
Vasay
Дата 25.4.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Товарищ Wowa, а Вы форумом не ошиблись  smile  Для найма специалистов есть отдельный форум smile 
Сейчас придет злой админ и Вас забанит  smile 

п.с. пара вопросов
1. не совсем понятен данный пункт: "2. Если нет, то посмотреть в мемкеше на каком-нить другом сервере. Есть ли там такая инфа."
2. Это должен быть именно вебсервер, или это можно сделать на, скажем, TomCat-е?

Опишите подробней задачу.

Это сообщение отредактировал(а) Vasay - 25.4.2009, 17:51


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(Vasay @  25.4.2009,  16:41 Найти цитируемый пост)
1. не совсем понятен данный пункт: "2. Если нет, то посмотреть в мемкеше на каком-нить другом сервере. Есть ли там такая инфа."

объясняю. Планируется высокая нагрузка. Поэтому такие явовские веб-сервера будут запущены на N машинах.  Сначала смотрять наличие данных у себя в памяти, если их нет, то в распредленной кеш-системе мемкеш. К этой кеш-системе все сервера доступ имеют.


Цитата(Vasay @  25.4.2009,  16:41 Найти цитируемый пост)
2. Это должен быть именно вебсервер, или это можно сделать на, скажем, TomCat-а?

именно веб-сервер. т.к. нагрузка планируется большая. Томкат промежуточным слоем делать нет никакой необходимости. Даже мои скажем так скудные знания ява позволяют мне создать на нем веб-сервер за 15 минут.. Т.е. не думаю, что это проблема.

Есть еще вопросы? smile
PM WWW   Вверх
Vasay
Дата 25.4.2009, 18:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Wowa, 

Мне кажется, вы изобретаете велосипед. 

Не стоит гнаться за производительностью (особый прирост все равно не получите). Возьмите сервер приложений в связке с БД. Настройте connection pool. Как только производительности станет не хватать - создайте кластер и настройте балансировку нагрузки (можно делать отдельно для БД и сервера приложений).

Это обойдется вам дешевле, чем писать сервер с нуля. 

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


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
COVD
Дата 25.4.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Томкат промежуточным слоем делать нет никакой необходимости

В Томкате необходимость есть. Потому, что кто-то должен слушать 80 порт, парсить http запросы и отправлять http ответы. Самим писать эту часть, т.е. http server,  давно уже нет необходимости. И этот "Томкат" (или что-то подобное) может быть как standalone , так и компонент сервера приложений. Самим надо писать подготовку ответа на запрос, всю эту логику - поискать там, поискать здесь и т.д. И это приложение (по сути, это сервис), которое будет заниматься подготовкой ответа, никакого отношения к словам web или http не имеет. Если только оно само не реализовано как веб сервис (но в этом нет острой нужды, если это сервис для внутренних нужд и в локальной сети).     


Это сообщение отредактировал(а) COVD - 25.4.2009, 21:22
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(COVD @  25.4.2009,  20:10 Найти цитируемый пост)
В Томкате необходимость есть. Потому, что кто-то должен слушать 80 порт и обрабатывать http запросы. Самим писать эту часть, т.е. http server,  давно уже нет необходимости.

да как же в этом нет необходимости, если это несколько строчек кода всего-лишь? Мне потому и нужна ява, чтобы не использовать громоздкий вебсервер. Иначе бы я Апаче заюзал или его легковесный вариант.

Добавлено @ 21:19
Запускается прога, которая висит в памяти и слушает все время заданный порт. Как только поступает определенный запрос, то прога его обрабатывает.

Добавлено @ 21:26
Вот и весь веб-сервер. С поддержкой тредов.
Код

public final class WebServer {

    static ServerSocket ss;
    static Socket mysocket;

    public static void main(String[] args) {

        // Set the port number.
        int port = 8080;

        // Establish the listen socket.
        try {
            ss = new ServerSocket(port);
        } catch (IOException e) {
            System.out.println("Socket error");
            System.out.println(e);
        }

        try {
            // Process HTTP service requests in an infinite loop.
            while (true) {

                System.out.println("Слушай сокет");
                mysocket = ss.accept();

                HttpRequest request = new HttpRequest(mysocket);
                Thread thread = new Thread(request);
                thread.start();

            }
        } catch (Exception e) {
            System.out.println(e);
        }

    }

}



Код

final class HttpRequest implements Runnable {
....

    // Implement the run() method of the Runnable interface.
    public void run() {
        try {
            processRequest();
        } catch (Exception e) {
            System.out.println(e);
        }

        System.out.println("run");
    }
...

private void processRequest() throws Exception {

        // Get a reference to the socket's input and output streams.
        InputStream is = this.socket.getInputStream();
        DataOutputStream os = new DataOutputStream(this.socket.getOutputStream());

        // Set up input stream filters.
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String requestLine = br.readLine();

...

        // Send to DataOutputStream
        // Send the status line.
        os.writeBytes(statusLine);

        // Send the content type line.
        os.writeBytes(contentTypeLine);

...

        // Close streams and socket.
        os.close();
        br.close();
        socket.close();

    }




}

PM WWW   Вверх
COVD
Дата 25.4.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Запускается прога, которая висит в памяти и слушает все время заданный порт. Как только поступает определенный запрос, то прога его обрабатывает. 

Вот этим Томкат и занимается. Больше ничем и не должен. Сервлет, пропарсив запрос, должен отослать параметры запроса на другое приложение (сервис, который что-то ищет в памяти или еще где),  дождаться ответа сервиса и переслать его клиенту. От Томката больше ничего не требуется. Это http server.  В Апаче функции, аналогичные  сервлету, выполняет cgi скрипт, очевидно. В обоих случаях (Апач или Томкат) не стоит возлагать на них что-либо кроме их прямой обязанности - обслуживания http запрос-ответ. 

Это сообщение отредактировал(а) COVD - 25.4.2009, 21:39
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



COVD, зачем мне томкат, если минимальный код выше делает все необходимое?
PM WWW   Вверх
COVD
Дата 25.4.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

COVD, зачем мне томкат, если код выше делает тоже самое?


Так я вас не отговариваю, используйте свой код. Вы предполагаете, что ваш код лучше работает, чем Апач или Томкат? Или вы место на диске экономите? Они, по крайней мере, являются индустриальным стандартом. 

Это сообщение отредактировал(а) COVD - 25.4.2009, 21:48
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(COVD @  25.4.2009,  20:45 Найти цитируемый пост)
Так я вас не отговариваю, используйте свой код. Вы предполагаете, что это быстрее работает, чем Апач или Томкат? Они по крайней мере являются индустриальным стандартом.  

Ну я же описал задачу, а вы мне Томкат предлагаете, когда необходимый функционал, на мой взгляд, делается кодом изложенным выше и работать будет конечно быстрее чем Апаче и Томкат.
PM WWW   Вверх
COVD
Дата 25.4.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Я не думаю, что отказ от стандартных http серверов решает проблему высокой нагрузки или является весомым вкладом. т.е. я согласен с мнением Vasay "Не стоит гнаться за производительностью..".
PM MAIL   Вверх
Vasay
Дата 25.4.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Wowa, 

Цитата

работать будет конечно быстрее чем Апаче и Томкат. 


Вы в этом так уверены? 

Тот код, который Вы привели до нормальной работоспособности еще писать и писать. 

Для начала нужно ввести ограничение на количество открытых сокетов, придумать, что делать с теми для кого уже нет свободного.... и пошло поехало.

Да, используя томкэт, у вас не будет проблем с балансировкой нагрузки - томкэт умеет работать на кластере.  


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(COVD @  25.4.2009,  21:03 Найти цитируемый пост)
Я не думаю, что отказ от стандартных http серверов решает проблему высокой нагрузки или является весомым вкладом.

нужно ОЧЕНЬ много запросов обрабатывать. Поэтому любая экономия это огромный плюс. Load balancer кидал бы запрос к одному из сотни серверов(с этим вебсервером). Далее явапрога делала бы своё дело.

Добавлено @ 22:09
Цитата(Vasay @  25.4.2009,  21:04 Найти цитируемый пост)
Да, используя томкэт, у вас не будет проблем с балансировкой нагрузки - томкэт умеет работать на кластере.   

а какая у меня сейчас проблема с балансировкой? есть балансировщик и он кидает обращение на любой из серверов.

Добавлено @ 22:11
Цитата(Vasay @  25.4.2009,  21:04 Найти цитируемый пост)
Для начала нужно ввести ограничение на количество открытых сокетов, придумать, что делать с теми для кого уже нет свободного.... и пошло поехало.

что еще нужно?

Добавлено @ 22:12
Цитата(Vasay @  25.4.2009,  21:04 Найти цитируемый пост)
Вы в этом так уверены? 

конечно уверен. Есть апаче, а есть lighthttpd, есть nginx. Это легковесные вебсервера и поэтому работают быстрее. А в моем случае даже их весь функционал не нужен.
PM WWW   Вверх
Vasay
Дата 25.4.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

а какая у меня сейчас проблема с балансировкой? есть балансировщик и он кидает обращение на любой из серверов.


Все зависит от задачи... Может и не будет проблем, может и будут. Как насчет сессий? Кто будет отвечать за их поддержание (если они нужны).



Цитата

что еще нужно?


Придумать как обрабатывать и логгировать эксепшены. 




--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(Vasay @  25.4.2009,  21:39 Найти цитируемый пост)
Все зависит от задачи... Может и не будет проблем, может и будут. Как насчет сессий? Кто будет отвечать за их поддержание (если они нужны).

сессии не нужны.


Цитата(Vasay @  25.4.2009,  21:39 Найти цитируемый пост)
Придумать как обрабатывать и логгировать эксепшены. 

если коннект не произошел, то он не произошел.  Если эксепшен на уровне ниже(например нет коннекта к БД), то его что с Томкатом, что без него обрабатывать надо.

Добавлено @ 22:48
Цитата(Vasay @  25.4.2009,  21:39 Найти цитируемый пост)
Все зависит от задачи... Может и не будет проблем, может и будут. К

Да нет там проблем. Все вебсервера незавимые друг от друга и помимо своего локального кеша, прикрыты центральным кешем-мемкешом(который через сокет работает). Поэтому даже если в локальном кеше какого-то сервера данных не будет, то он их с мемкеша получит. Данные кеша НЕ устаревают, т.е. отсутствует даже проблема их валидации. На один и тот же запрос всегда один и тот же ответ должен приходить.
PM WWW   Вверх
COVD
Дата 25.4.2009, 23:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

нужно ОЧЕНЬ много запросов обрабатывать.

Из заявленного бюджета это было не очевидно  smile .

PM MAIL   Вверх
Vasay
Дата 25.4.2009, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Wowa, 

Ну Вам виднее. Думаю, вебсервер в Вашей системе будет далеко не самым узким местом, и вряд ли прирост производительности менее 10% стоит проблем, которые вы получите с написанием собственного вебсервера. 

Я писал в какой-то степени подобные вещи - на отладку уходит довольно много времени. Причем отладку на реальной нагрузке. Так как многие баги начинают выползать только тогда.  А потом переделал все под TomCat и прошла голова.  

Это сообщение отредактировал(а) Vasay - 25.4.2009, 23:07


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nucer
Дата 25.4.2009, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 21.6.2004
Где: Москва

Репутация: -1
Всего: 0



хех 200 долларов - сумма хочу сказать )
хотя.. кризис... кто знает ))
Я бы на вашем месте сам бы взял и написал такую програмулю, тем более что задача интересная и, видимо, не очень стандартная, а как начнешь делать - там копать и копать, за 200 вряд ли кто то сделает качественно и до конца
НО это всего лишь имхо  smile 
PM MAIL   Вверх
Wowa
Дата 25.4.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(nucer @  25.4.2009,  22:07 Найти цитируемый пост)
хех 200 долларов - сумма хочу сказать )

не долларов, а евро. Я не понимаю насмешек. Тут работы даже мне на день(я в Яве мало программил), ну максимум на два. Не пишу я сам, т.к. занят другой разработкой. Я не могу программить все части системы сам.

P.S. На ПХП такое я бы вообще за час написал. Проблема лишь в том, что на ПХП веб-сервер не сделаешь.


Цитата(Vasay @  25.4.2009,  22:03 Найти цитируемый пост)
и вряд ли прирост производительности менее 10%

Да какие-же там 10%. Там гораздо больше. Иначе следуя твои словам все сервисы должны были бы через Томкат работать. Даже memcache или СУБД. Везде коннект напрямую.
PM WWW   Вверх
Vasay
Дата 26.4.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Wowa, 

Цитата

Да какие-же там 10%. Там гораздо больше. Иначе следуя твои словам все сервисы должны были бы через Томкат работать. Даже memcache или СУБД. Везде коннект напрямую.


Ну так там не нужен http  smile 

Томкэт пишется давно, применяется как основа для серверов приложений. Я думаю, он достаточно неплохо вылизан. Не напишут Вам за 200 евро столь же качественный продукт!  Сейчас напишут, Вы оттестите - вроде все ок,  а когда пойдет работа под нагрузкой - начнутся проблемы... а автора ищи потом. Знаем, плавали!  


Мне кажется, что зря Вы вообще, что-то изобретаете. Почему не воспользоваться готовыми решениями? Вы думаете что они будут медленней? Сильно сомневаюсь. 

Возьмите сервер приложений. Там все уже есть - и load balancing и распределенный кэшь. И головной боли не будет да и скорость всяко не ниже будет!


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
COVD
Дата 26.4.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

P.S. На ПХП такое я бы вообще за час написал. Проблема лишь в том, что на ПХП веб-сервер не сделаешь.

Так мы вас и пытаемся убедить, что не надо вам веб-сервер делать самому. Ни на ПХП, ни на Java.  Используйте Апач, а все остальное за час напишите.
PM MAIL   Вверх
Wowa
Дата 26.4.2009, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(Vasay @  25.4.2009,  23:12 Найти цитируемый пост)
Ну так там не нужен http  smile 

Нужна работа на 80-ом порту, чтобы фаерволлами не блокировалось. http нужен лишь для того, чтобы браузер запрос правильно посылал и результат обрабатывал. Это фунционал реализован в приведенном мною коде выше.


Цитата(Vasay @  25.4.2009,  23:12 Найти цитируемый пост)
Томкэт пишется давно, применяется как основа для серверов приложений. Я думаю, он достаточно неплохо вылизан. Не напишут Вам за 200 евро столь же качественный продукт!  Сейчас напишут, Вы оттестите - вроде все ок,  а когда пойдет работа под нагрузкой - начнутся проблемы..

Вот именно, что Томкат давно пишется и кода там намного больше. Больше кода - больше ошибок и медленнее производительность. 

Цитата

а когда пойдет работа под нагрузкой - начнутся проблемы

Использоваться будут ведь готовые классы с java.net. А код и логика очень простые. Сомневаюсь, что проблемы будут из-за нагрузки будут.

Цитата(Vasay @  25.4.2009,  23:12 Найти цитируемый пост)
. а автора ищи потом. Знаем, плавали!  

код простой. Если будет баг, то его исправить любой разработчик сможет.


Цитата(Vasay @  25.4.2009,  23:12 Найти цитируемый пост)
Мне кажется, что зря Вы вообще, что-то изобретаете. Почему не воспользоваться готовыми решениями? Вы думаете что они будут медленней? Сильно сомневаюсь. 

Что я изобретаю? У нас есть Package java.net и с помощью него легко реализуется мини веб-сервер. Это готовое решение. Необходимо лишь добавить опрос локального и  распределенного кешов + базы, при необходимости.


Цитата(Vasay @  25.4.2009,  23:12 Найти цитируемый пост)
Возьмите сервер приложений. Там все уже есть - и load balancing и распределенный кэшь. И головной боли не будет да и скорость всяко не ниже будет! 

У меня уже есть load balancing и кеш распределенный. Зачем мне сервер приложений.

Добавлено @ 00:38
Цитата(COVD @  25.4.2009,  23:27 Найти цитируемый пост)
Так мы вас и пытаемся убедить, что не надо вам веб-сервер делать самому. Ни на ПХП, ни на Java.  Используйте Апач, а все остальное за час напишите. 

Я не понимаю зачем мне Апач или Томкат. Если я могу сразу прогу повесить слушать 80-ый порт. Поступает запрос - отдаются данные. Всё.
PM WWW   Вверх
Vasay
Дата 26.4.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Wowa, 

Хорошо - вопрос закрыт, Вам виднее.



Тогда разрешите пару замечаний по вашему объявлению:

- по-моему, Вы в ТУ забыли написать про заполнение кэшей.
- свой кэш - это тоже memcached, или его надо реализовать на сервере?

Снова вернусь к вопросу из своего первого поста 
"2. Если нет, то посмотреть в мемкеше на каком-нить другом сервере. Есть ли там такая инфа."

Что значит, "на каком-нить другом сервере"?  Как выбирается этот "какой-нить" сервер?


п.с. Если не секрет - сколько запросов в минуту Вы хотите обрабатывать?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Wowa
Дата 26.4.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(Vasay @  26.4.2009,  00:16 Найти цитируемый пост)
Хорошо - вопрос закрыт, Вам виднее.

я не удтверждаю, что мне виднее. В споре рождается истина. Но пока на мой взгляд никто так и не объяснил аргументированно, чем Томкат или Апаче лучше для данной задачи.


Цитата(Vasay @  26.4.2009,  00:16 Найти цитируемый пост)
- по-моему, Вы в ТУ забыли написать про заполнение кэшей.

Если данных в кеше нет, то они извлекаются из источника(это может быть мемкеш, а если и там нет, то база), заносятся в кеш и отдаются юзеру.


Цитата(Vasay @  26.4.2009,  00:16 Найти цитируемый пост)
- свой кэш - это тоже memcached, или его надо реализовать на сервере?

свой кеш.. Это просто объект... Прога постоянно в памяти ведь висеть будет, а поэтому всё, что в объекте храним - будет доступно. Т.е. я предполгаю, что нужно просто добавлять новые данные в singleton объект и заводить ключ доступа к этим данным. Таких-вот мини-данных может быть очень много, фактически миллионы.. Есть возражения?


Цитата(Vasay @  26.4.2009,  00:16 Найти цитируемый пост)
Что значит, "на каком-нить другом сервере"?  Как выбирается этот "какой-нить" сервер?

Есть методика, которая позволяет по ключу определить мемкеш сервер, на котором находятся данные соответствующие этому ключу.

Цитата(Vasay @  26.4.2009,  00:16 Найти цитируемый пост)
п.с. Если не секрет - сколько запросов в минуту Вы хотите обрабатывать? 

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

А максимально возможное кол-во запросов мы сможем обработать, если напрямую 80-ый порт слушать. Без использования доп. сервера.
PM WWW   Вверх
nucer
Дата 26.4.2009, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 21.6.2004
Где: Москва

Репутация: -1
Всего: 0



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

P.S. и ведь чтобы что то взять нужно сначала что то положить? ))

Это сообщение отредактировал(а) nucer - 26.4.2009, 10:29
PM MAIL   Вверх
Wowa
Дата 26.4.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(nucer @  26.4.2009,  09:27 Найти цитируемый пост)
прпрочитав тему не увидел описания что собственно такое етот мемкеш, точнее как именно он реализован и каким образом джава-програмульки собираются получать к нему доступ?

http://www.danga.com/memcached/

API:
http://code.google.com/p/memcached/wiki/Clients

PM WWW   Вверх
COVD
Дата 26.4.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Wowa. Теперь, наконец, стало понятно, что все, что вы хотели, это прикрутить пример java-client для memcached к вашему java-коду, реализующему http-server. И, действительно, PHP-client вы бы и сами прикрутили наверное за час. А Java вы решили использовать, чтобы ускорить обработку http запросов. И это не подвергается сомнению. Рассуждения Томкат vs ваш код основывались на общих соображениях готовое vs самописное. Но, оказалось, что вам логгирование не нужно, сессии не нужны. Наверное, и авторизация и пул потоков тоже не нужны. Или вы потом добавите.

 




  

Это сообщение отредактировал(а) COVD - 26.4.2009, 13:35
PM MAIL   Вверх
Wowa
Дата 26.4.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(COVD @  26.4.2009,  11:57 Найти цитируемый пост)
Наверное, и авторизация и пул потоков тоже не нужны. 

авторизация не нужна. Насчет пула потоков не знаю. Предполагаю, что наверное имеет смысл создать несколько сотен "ждущих" потоков сразу при запуске проги, чтобы не тратить время на создание нового потока. Хотя все треды будут легкими, т.е. вряд ли долго создаваться должны. Кто-нить может сказать, когда такой пул оправдан?
PM WWW   Вверх
Vasay
Дата 26.4.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Wowa,  Вы уж извините, что мы вместо того, что бы предлагать свои услуги развели тут базардискуссию. Просто раздел форума к этому располагает smile


Цитата

свой кеш.. Это просто объект... Прога постоянно в памяти ведь висеть будет, а поэтому всё, что в объекте храним - будет доступно. Т.е. я предполгаю, что нужно просто добавлять новые данные в singleton объект и заводить ключ доступа к этим данным. Таких-вот мини-данных может быть очень много, фактически миллионы.. Есть возражения?


Есть. И опять сводится к  "готовое vs самописное" Не думаю, что есть смысл реализовывать систему кэша самому. Ведь я так понимаю, нужно контролировать размер, замещать старые объекты... Есть готовые решения: Java Caching System По русски: http://www.ibm.com/developerworks/ru/libra...&S_CMP=GR01  Да можно и memcached поднять.




--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
COVD
Дата 26.4.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Кто-нить может сказать, когда такой пул оправдан?

Если есть запас памяти, чтобы сразу выделить ее под потоки, так и оправдан. Вот кстати пример http://java.sun.com/j2se/1.5.0/docs/api/ja...torService.html
PM MAIL   Вверх
powerOn
Дата 26.4.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Есть вариант использовать Grizzly + Jersey для решения этой задачи. 
Скажу сразу: я имел опыт работы с Jersey, а Grizzly только "щупал" и не могу 100% утверждать что это решение подойдет. Хотя у меня есть ощущение что это то что нужно. 
Что эта связка даст:
1) Маленький, шустрый, построенный на базе NIO многопоточный http сервер, который работает в embedded режиме. 
2) Переносимые RESTful сервисы c обменом данными по http-протоколу. 
3) Звучит громоздко, но на самом деле это все очень легковесные решения.

С целью уменьшения рисков, я могу написать тестовый протопит (бесплатно конечно), по которому можно сделать некоторые суждения о пригодности технологии к данной задаче. Если тестовый прототип не понравится, то это никого ни к чему не обязывает - будете искать другое решение. В ином случае можно обсудить детали разработки рабочего приложения (время/деньги/качествофункицонал smile. Думаю, это наилучший подход как для вас так и для меня. 

P.S.: Что касается кэшей и прочей оптимизации, то тут нужно смотреть по факту - выявлять узкие места на рабочем сервисе. Техническая возможность для оптимизации в случае использования вышеуказанного решения имеется. (В XP программирование есть такой принцип YAGNI - You Ain't Gonna Need It - "не делай того что тебе в последствии не понадобится", а еще есть анти-паттерн "предварительная оптимизация" ;-)


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Platon
Дата 26.4.2009, 19:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Попробую пристроить свою статью в этот топик
PM MAIL ICQ   Вверх
Wowa
Дата 26.4.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Цитата(Vasay @  26.4.2009,  13:36 Найти цитируемый пост)
Wowa,  Вы уж извините, что мы вместо того, что бы предлагать свои услуги развели тут базардискуссию. Просто раздел форума к этому располагает smile

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


Цитата(powerOn @  26.4.2009,  17:45 Найти цитируемый пост)
Есть вариант использовать Grizzly + Jersey для решения этой задачи. 

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


Цитата(Vasay @  26.4.2009,  13:36 Найти цитируемый пост)
Да можно и memcached поднять.

memcached итак есть. Но он не панацея, т.к. это распределенный кеш. Его нужно дергать через сеть. Когда запросов много, то сеть также не выдерживает. Именно поэтому я хочу опрос сначала локального кеша делать, лишь потом смотреть в мемкеше и базе.


Цитата(COVD @  26.4.2009,  15:35 Найти цитируемый пост)
Если есть запас памяти, чтобы сразу выделить ее под потоки, так и оправдан. Вот кстати пример

Спасибо за инфу. Запас памяти есть и я готов выделять сервера лишь под работу этого мини-сервера. Т.е. например, можно 4-8Гб выделить. Если нужно, можно и больше.
PM WWW   Вверх
powerOn
Дата 26.4.2009, 20:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(Wowa @  26.4.2009,  21:17 Найти цитируемый пост)
Боюсь, что действительно громоздно выйдет и получится зависимость от этих систем и от разработчика. 


Ну, в данном случае громоздкость это примерно 3 - 4 Мб библиотек, а по разработке/отладке значительно меньше усилий нежели написание своего микро-сервера. Что касается производительности, то я и предлагаю её проверить на прототипе. От разработчика точно нет зависимости - все технологии просты, открыты и хорошо документированы. Да и с учетом планируемой вами простоты системы такая зависимость маловероятна. 

Цитата(Wowa @  26.4.2009,  21:17 Найти цитируемый пост)
Чтобы делать с использованием этих систем "как надо" должен бюджет выше быть. Но в целесообразности их использования для этого проекта я сомневаюсь. Слишком лишь простые вещи "мини-сервер" делать должен.


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

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



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Vasay
Дата 26.4.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

memcached итак есть. Но он не панацея, т.к. это распределенный кеш. Его нужно дергать через сеть. Когда запросов много, то сеть также не выдерживает. Именно поэтому я хочу опрос сначала локального кеша делать, лишь потом смотреть в мемкеше и базе.


Я и имел ввиду локально. Просто, зачем программировать свой кэш для этого пункта "1. Посмотреть в у себя кеше, если такая инфа есть, то вернуть её", когда есть готовые решения. Тот же Java Caching System, или если Вы привыкли работать с memcached, то почему его не использовать не только для распределенного кэша, но и для локального (т.е. поднять локально на том же компьютере где и web сервер)?



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.