|
|
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Всем привет. Помогите решить проблемку: Задача - написать своего рода многопоточный серверный crawler или парсер с веб интерфейсом и высокой производительностью. Т.е. пользователь добавляет некие данные через веб интерфейс а система начинает лазить по сети и искать нужную информацию попутно занося результаты в БД. Проблемы - я новичек в ява и никогда не занимался разработкой такого софта :-) т.ч. подскажите где и что, пожалуйста. Система должна состаять из некого сервиса\даемона,веб интерфейса,и базы данных. В даемоне посути крутится цикл который проверяет поступили ли новые данные для обработки, если да то смотрит не достигнуто ли придельное кол-во потоков если всё ок создает новый поток если нет уходит опять в спячку... Я правильно размышляю? Дальше поток конектится к хосту качает инфу парсит и резалты возвращает даемону. Даемон заносит всё в БД. 1)На базе чего лучше реализовать коннект по http? Что бы быстро и отказоустойчиво. Библиотеки? Jakarta? 2)Есть ли готовые библиотеки для контроля потоков? Когда их один-два всё просто а когда 1000? 3)Быстрая бд? 4)Как реализовать daemon\сервис? Разработка и первоначальное преминение будет на винде, а потом перенесено на linux... 5)Как реализовывать веб интерфейс, на базе каких технологий? Как передавать данные от интерфейса к даемону - заносить в бд? Заранее спасибо за ответы, извиняюсь если где-то глупость сморозил. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 16:34:15 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
оповещать демона имхо логично через JMS. интерфейс - обычные сервлеты под Tomcat. в качестве БД берите Mysql - хватит вполне. демон будет представлять обычное Java приложение. При запуске встает в очередь слушателей JMS. Также демон должен хранить пул crawl-еров. сервлет при очередной порции данных для парсинга отправляет в очередь сообщение. демон отлавливает сообщение, берет очередной crawl и запускает его. если свободных crawl-ов нет, то кладет сообщение в очередь. crawl-ер парсит страницы и обновляет БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 16:44:43 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Сейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 18:19:40 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
ShadowSmileСейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь? А вы что именно будете сохранять своим crawler'ом? Все страницы целиком? Или специальным образом проиндексированные данные? Или хотите переложить текстовую индексацию на плечи СУБД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 18:29:56 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
raidan А вы что именно будете сохранять своим crawler'ом? Все страницы целиком? Или специальным образом проиндексированные данные? Или хотите переложить текстовую индексацию на плечи СУБД? Нет не страницы целиком, а отфильтрованную информацию например все ссылки на странице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 18:38:54 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
ShadowSmile Нет не страницы целиком, а отфильтрованную информацию например все ссылки на странице. Попробуйте рассчитать средний объем страницы, скорость вашего интернет-соединения, среднее количество ссылок на странице и сопоставить всё это со скоростью, которую обеспечивает MySQL при выполнении нужным вам действий одновременно (т.е. несколько вставок или несколько вставок и несколько выборок одновременно) — таким образом вы можете примерно представить, что является тормозящим фактором — либо MySQL (не позволяет так быстро вставлять в него отфильтрованную информацию), либо crawler'ы, которые не могут загрузить работой СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 18:48:55 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
А какие еще есть варианты кроме JMS? raidan Спасибо, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 21:08:53 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Кроме JMS можно использовать сокеты. Есть клиентская прога и демон, демон находится в режиме ожидания, объект класса ServerSocket в этом поможет, клиент посылает сокет, содержащий запрос, демон запускает crawl для этого запроса в отдельном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 17:34:01 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
На самом деле быстро делать нельзя. После каждого запроса к вебсайту надо делать интервал секунд 5. По 2м причинам: 1) перегружаете сайт 2) на приличных сайтах ето будет обнаружено и Вам отрубят доступ. Так что mysql должен справится. Проще правда все было бы на скриптах заделать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 20:23:46 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
A. Fig Lee: На самом деле 5 секунд не помогут, если с той стороны есть DoS guardian. Автору: Вполне возможно Вам прийдется столкнуться еще с одной проблемой, которая тут нигде не упомянута - с зацикливанием crawler'а - и тупое сохранение всех пройденных урлов еще не решает проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 14:31:02 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
BetterA. Fig Lee: На самом деле 5 секунд не помогут, если с той стороны есть DoS guardian. Автору: Вполне возможно Вам прийдется столкнуться еще с одной проблемой, которая тут нигде не упомянута - с зацикливанием crawler'а - и тупое сохранение всех пройденных урлов еще не решает проблему.да, один симлинк много крови может попортить :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 17:33:32 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
BetterA. Fig Lee: На самом деле 5 секунд не помогут, если с той стороны есть DoS guardian. Автору: Вполне возможно Вам прийдется столкнуться еще с одной проблемой, которая тут нигде не упомянута - с зацикливанием crawler'а - и тупое сохранение всех пройденных урлов еще не решает проблему. Почему не поможет? 5 сек - ето не денайал оф сервис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:26:01 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
2 stdio: Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :) 2 A. Fig Lee: Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено. Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 14:44:59 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
ShadowSmileСейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь? Правильно гложат. Рассмотрите PostgreSQL. Она лучше для вашей задачки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 15:18:35 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
andrushok ShadowSmileСейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь? Правильно гложат. Рассмотрите PostgreSQL. Она лучше для вашей задачки. А аргументировать? В плане производительности для данной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 15:32:10 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Никак в толк не возьму, почему бы не использовать nutch? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2007, 17:14:47 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Better2 stdio: Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :) 2 A. Fig Lee: Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено. Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи. Ето только на мелких, мало популярных сайтах может быть. Иначе слишком много инфо для анализа надо держать. Держать всю инфо за 5 сек по запросам на яху например - захлебнутся в инфо можно. Не производительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 18:50:28 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
На счет dos я думаю в моём случае это не актуально т.к. краулер довольно грамотно стучится на сайты и в итоге получается максимум 2-3 запроса на сайт, что не особо на атаку смахивает =) У меня просто ситуация несколько иная много сайтов и соответственно потоков, а контента с них тянуть на пару запросов. Пока стоит mysql после серии тестов уже будет понятно справляется она или нет. Пока реализовал сам краулер и его внутренние алгоритмы, работу с бд и внешним интерфейсом вынес в отдельные класы так что при необходимости лекго перепишу. Управление думаю реализовать в итоге через php и сокеты... хотя еще до конца не ясно. Больно уж не хочется мне заморачиваться с j2ee, я с этими технологиями незнаком, а учить там до чертиков. ArmenAА это подарок . Спасибо за подарок, парочку методов уже прихватил =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2007, 22:51:13 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
A. Fig Lee Better2 stdio: Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :) 2 A. Fig Lee: Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено. Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи. Ето только на мелких, мало популярных сайтах может быть. Иначе слишком много инфо для анализа надо держать. Держать всю инфо за 5 сек по запросам на яху например - захлебнутся в инфо можно. Не производительно. Вы это с такой уверенностью говорите, что я даже начинаю верить в эту чушь! Google, видимо, как раз один из таких мелких, мало популярных сайтов ? См. аттач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 15:04:25 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Better A. Fig Lee Better2 stdio: Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :) 2 A. Fig Lee: Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено. Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи. Ето только на мелких, мало популярных сайтах может быть. Иначе слишком много инфо для анализа надо держать. Держать всю инфо за 5 сек по запросам на яху например - захлебнутся в инфо можно. Не производительно. Вы это с такой уверенностью говорите, что я даже начинаю верить в эту чушь! Google, видимо, как раз один из таких мелких, мало популярных сайтов ? См. аттач. Ну смотрю. Какой интервал был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 17:54:47 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Всем привет, возник еще вопросик: мне нужно ограничивать размер страницы например до 100кб, но если я это делаю появляются дикие тормоза из-за переконвертации возможно ли как-нибуть решить эту проблему? Тормозящий код закоментирован. Заранее спасибо. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 02:32:41 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 18:22:32 |
|
||
|
Web Crawler
|
|||
|---|---|---|---|
|
#18+
A. Fig Lee Спасибо, что-то я стормозил =) Еще вопросик =) Подвисают потоки, в самом конце из 100 остаётся ~25-30 потоков которые явно не стучатся в сеть... Я предпологаю что может подвисает стрим где-то в середине сайта, а httpclient ждет бесконечно данных... Может такое быть? или я не там ищу... Есть идеи как с этим бороться и вычислять пробему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2007, 00:22:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34355927&tid=2144670]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 308ms |
| total: | 466ms |

| 0 / 0 |
