LINUX.ORG.RU

Вопрос по использованию инструментов для реализации многопоточного нагруженного проекта.


0

0

Здравствуйте, уважаемы форумчане.

Существует задача: Есть несколько сотен web-серверов одинаковой тематики. Каждый из этих серверов должен вести идентичные журналы по работе различных сервисов, соединений, работе ботов, посещаемости, итд. (Мехинизм журнализации будет написан своими силами). Существует также отдельный сервер, который будет инициировать соединения и собирать все эти логи с web-серверов одновременно в несколько потоков и закачивать на этот сервер, обрабатывать также одновременно и складывать в базу данных. (А на web-серверах забранные логи стирать) Нужно учитывать, что все логи со всех сайтов собрать будет малореально, так как проседания каналов, падение сервисов итд. Тоесть надо в следующую сессию добирать старые и собирать новые логи и без конфликтов обрабатывать и также складывать в базу. Узкие моменты это: 1) Собирать логи в несколько потоков одновременно 2) Обработка всех логов в несколько потоков??? и выбор времени обработки 3) Отсеивание ненужной информации в логах (например всякие google-bots...)

Вопрос: Какой инструментарий лучше использовать для разработки данной системы с учетом того что ее необходимо писать с нуля? Имеется ввиду языки программирования, подходящие под эту задачу лучше всего, и оптимальная схема построения системы?

С уважением,

★★

Ответ на: комментарий от LamerOk

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

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

очевидно же, ассемблер! будет быстрее :) очевидно же, лисп! будем мудрее :) очевидно же, PHP! его знают ваши программисты :)

anonymous
()

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

Cy6erBr4in ★★★
()
Ответ на: комментарий от Cy6erBr4in

>а для вашей задачи не подойдет ли syslog-ng, который умеет логи слать на удаленный сервер?

обычный syslog тоже умеет. а если еще точнее, rsyslog, который сейчас в по умолчанию в большинстве популярных дистрибутивах. он кстати и в mysql сразу складывать может.

я бы рекомендовал автору не страдать NIH.

anonymous
()

Возьми Prelude IDS и будет счастье. Ясно, что в общем не то, но если пользоваться им только как системой доставки сообщений, наверное, покатит.

arhibot
()
Ответ на: комментарий от Cy6erBr4in

Повторюсь, логи будут специализированными, мониторить будут не только стандартные сервисы, а специфичные события в приложении, писать их выгрузку из приложения, будем скорее всего сами. По поводу Erlang'а, обоснуйте свое утверждение более детально, почему он нам подойдет?))) Я слышал о таких довольно серьезных языках программирования, как Erlang-Fort-Haskell-Lisp)))

ChAnton ★★
() автор топика
Ответ на: комментарий от anonymous

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

Вобщем если не трудно, нужен конуретный совет.

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

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

Может, и тебе пойдет этот спред.. потыкай ;)

aol ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

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

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

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

Бери rsyslog

anonymous
()
Ответ на: комментарий от ChAnton

Спасибо, уже изучаю. Посмотрим что за зверь........

ChAnton ★★
() автор топика
Ответ на: комментарий от Flavio_German_Davino_Rodriguez

Спасибо, капнем и в эту сторону)))

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

вроде де факто, используется с поисковых движках многих контор.

Lee_Noox ★★★
()
Ответ на: комментарий от ChAnton

> Я слышал о таких довольно серьезных языках программирования, как Erlang-Fort-Haskell-Lisp)))

Надо понимать, это был неудачный юмор с учетом следующего:

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

Вам бы что-нибудь по-проще и примитивнее. Perl, Питон или Java, думаю, подойдут. Можете на Си попробовать написать - многие с него начинают изучать программирование. За «серьезные» языки браться еще рано по-моему ;)

dave ★★★★★
()
Ответ на: комментарий от dave

Может быть))) Тогда поясните, пожалуйста, что в Вашем непосредственном понимании означает выражение: «серьезные языки», и как Вы их разделяете? И почему за «серьезные языки»))) браться рано? Только конкретики побольше пожалуйста, а не пафоса и эмоций.

Пока что я никакой смысловой нагрузки в Вашем изречении не увидел, извините за резкость конечно.

С уважением,

ChAnton ★★
() автор топика
Ответ на: комментарий от Flavio_German_Davino_Rodriguez

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

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

У тебя архитектура наизнанку вывернута.

Я бы на каждом веб-сервере поднял amqp-клиента (или что-то подобное из мессейджинга, с брокером и persistence сообщениями на нём), и слал логи через него. По другой конец брокера сидел бы скрипт/бинарник, который логи выгребал и обрабатывал. Если клиентов реально много (тысячи), и брокер не поддерживает федерацию (обработка одной очереди на нескольких узлах), то сообщения с пучка клиентов аггрегировал бы на отдельном узле и потом слал пачкой на основной узел, чтобы сеть на брокере не умирала. Или прямо на отдельном узле и обрабатывал.

mv ★★★★★
()

Согласен с двумя подходами.

1. Либо пересматриваете подход и переходите на syslog-based. За его выбор:

  • Готовые решения,
  • достаточно документации,
  • Ничего не выдумываете!!!

2. Либо Erlang. За его выбор:

  • Из функциональных языков он больше предназначен для многопоточных систем, причем ему практически фиолетово, работает программа на одном или нескольких компах.
  • Разбирать логи с конфликтами, будет на много проще применяя функциональный подход. Да и писать анализаторы станет намного проще и понятней.

З.Ы.: http://www.slideshare.net/j2a/ss-4625844

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

>Либо Erlang. За его выбор:
Ох, он тут может быть только как транспорт, с его дико медленным io только логи и парсить (да и вообще та еще черепашка). А нафига еще один велосипед, если есть rabbitmq не ясно. mv отличный вариант предложил с ampq.

arhibot
()
Ответ на: комментарий от mv

Поддерживаю вариант с очередью. Только боюсь не сможет очередь такой мощный поток сообщений обрабатывать. . *Внезапно* а почему бы логи не анализировать прямо на серваках и сразу не писать в одну БД? Чтоб не лочилось писать каждому серваку в свою табличку. Не?

dizza ★★★★★
()
Ответ на: комментарий от arhibot

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

dizza ★★★★★
()
Ответ на: комментарий от dizza

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

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

*Внезапно* а почему бы логи не анализировать прямо на серваках и сразу не писать в одну БД?

Потому что клиентов тыщи.

mv ★★★★★
()
Ответ на: комментарий от dave

Да, я первый использовал это понятие))) Прошу прощения. Я руководствовался чужим мнением. Но возможно частично, это мнение верно? Ничем не хотел Вас обидеть. Просто слышал что языки редкие и сильно функциональные.

ChAnton ★★
() автор топика
Ответ на: комментарий от mv

Архитектура должна быть именно такая: Только бот-сборщик логов должен инициировать соединения и забор логов для обработки статистики уже на центральном сервере, только так и никак иначе, так как ни под каким предлогом нельзя светить в программах/конфигах/логах информацию о сборщике логов и сервере обработки. Вот в том числе и по этому был задан данный вопрос на форуме.

PS: А то что с предложенным Вами вариантом существует большое число законченных решений я в курсе, спасибо.

С уважением,

ChAnton ★★
() автор топика
Ответ на: комментарий от dizza

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

ChAnton ★★
() автор топика
Ответ на: комментарий от dizza

>Начнем с того, что оно имеет довольно хламные драйверы субд.
Не надо грязи. epgsql тот весьма хорош

arhibot
()
Ответ на: комментарий от ChAnton

Да, ладно, ерунда. И как будто это плохо, что они функциональные (кстати, не все). По-моему это скорее плюс, чем минус.

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

dave ★★★★★
()
Ответ на: комментарий от dave

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

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

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

И ты собрался такую приложуху писать?! Готов поспорить, что ты еще сетевую архитектуру не знаешь.

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от ChAnton

ни под каким предлогом нельзя светить в программах/конфигах/логах информацию о сборщике логов и сервере обработки

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

PS: А то что с предложенным Вами вариантом существует большое число законченных решений я в курсе, спасибо.

Это не законченное решение, а технология передачи сообщений, отработанная с учётом ошибок и трудностей, возникших в предыдущих версиях или других системах.

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

mv ★★★★★
()
Ответ на: комментарий от ChAnton

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

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

Толку будет с вашей архитектуры, если она от реалий нашей вселенной оторвана будут?

mv ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

Уважаемый, для того, чтобы принять решение на глобальном уровне на начальном этапе, знаний в области программирования и сетевой архитектуре вполне хватит, не переживай!))) А я вот готов поспорить, что человек который обладает реальными знаниями по теме форума (в том числе и по программированию и «сетевой архитектуре», как прошу заметить ты не совсем корректно выразился), и которому есть/нет что сказать ПО СУЩЕСТВУ, а также у которого имеется хоть мало-мальское чувство такта, скажет ПО СУЩЕСТВУ, а не станет гнать пургу и писать пакости и провоцировать на флуд не по теме, ну прям как юнец не воспитанный, в самом деле.

С уважением,

ChAnton ★★
() автор топика
Ответ на: комментарий от mv

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

С уважением,

ChAnton ★★
() автор топика
Ответ на: комментарий от mv

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

ChAnton ★★
() автор топика

ключевые слова: scribe, hadoop, pig

мне можно написать в jabber или почту и получить более ясные ответы.

catap ★★★★★
()
Ответ на: комментарий от mv

>>Это не законченное решение, а технология передачи сообщений, отработанная с учётом ошибок и трудностей, возникших в предыдущих версиях или других системах.

))))Пеоверьте мне, технология также может быть законченным решением, так как она прописана в стандарте (если Вы знаете что это такое). А если она не прописана в стандарте-это не законченное решение.

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

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

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

Во-вторых, на основании чего Вы сделали вывод о наличии/отсутствии того или иного опыта у меня? - Это два.

С программированием на настоящий момент я знаком на очень посредственном уровне. У меня несколько другая специализация.

Про вселенную-это вообще нипонятно к чему и зачем Вы написали-это три.

К тому, что не имея экспертных знаний в какой-либо области, нельзя в этой области что-то спроектировать.

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

Вам не только конкретное (и правильное) направление дали, но ещё и набросок структуры накидали. В своей конторе вы можете быть большим, уважаемым человеком, но на моём ЛОРе вы - очередной дилетант с необъёмным самомнением. В необъёмном самомнении ничего плохого нет, только ему нужно соответствовать.

mv ★★★★★
()
Ответ на: комментарий от mv

>>То, о чём вы спрашиваете, лежит в экспертной области знаний. Расскажите эксперту, что вам в итоге нужно получить, он сам разберётся, как лучше сделать.

Разве я этого здесь не делаю? Не спрашиваю экспертного (которым Вы очевидно не обладаете) мнения людей на ЛОРе?

С программированием на настоящий момент я знаком на очень посредственном уровне. У меня несколько другая специализация.

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

К тому, что не имея экспертных знаний в какой-либо области, нельзя в этой области что-то спроектировать.

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

Вам не только конкретное (и правильное) направление дали, но ещё и набросок структуры накидали. В своей конторе вы можете быть большим, уважаемым человеком, но на моём ЛОРе вы - очередной дилетант с необъёмным самомнением. В необъёмном самомнении ничего плохого нет, только ему нужно соответствовать.

Лично Вы, уважаемый, не дали ни конкретного направления, ни набросков структуры, точнее дали, но не то, поскольку неправильно или не до конца прочитали и осмыслили суть вопроса, об этом я уже написал. Так что я не знаю, что там происходит на ВАШЕМ ЛОРе, но на linux.ogr.ru-вы очевидно не обладаете должным уровнем компетентности внимательности.

PS: Хотя некоторые советы на ветке были и дельные, могу признать.

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

Слушай, думаю если было бы все так хорошо как ты пишешь, ты бы такое не спрашивал, а уже задавал вопросы про конкретные проблемы связанные с кодом и т.п.

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от Boy_from_Jungle

Ну вот наконец то, хоть тон сменили, и то хорошо. Я пишу только на классическом Си, немного на PHP и других скриптовых языках на уровне, нужном системному администратору. Потому как моя специализация-администрирование. Знаний и навыков в программировании, необходимых конкретно для написания подобных приложений у меня не достаточно. Хотя базовый уровень знаний для принятия решения для подобной задачи достаточен. Настроить готовые решения, может быть немного их изменив и дописав-я могу, но с нуля-нет. У меня другие задачи. А задаю вопрос на форуме я с целью начально определиться с задачей и поиском ее дальнейших решений. Ведь именно для этого предназначены подобные ресурсы. А лезть в бычку и флудить, вместо того чтобы просто дать совет-это признак не только дурного тона, но и отсутствия должной компетентности.

С уважением,

ChAnton ★★
() автор топика
Ответ на: комментарий от ChAnton

Уважаемый, ваши «должным уровнем компетентности внимательности» наводят на мысли ещё и о явной глупости, при стремлении выглядеть умно. Применяемый в каждом абзаце, да ещё и не в завуалированном виде психологический трюк «подняться морально на принижении уровня другого» говорит о том же. Упорное отстаивание своих заблуждений - о том же, плюс о занудстве. Вы - необразованная, глупая зануда.

У нас же тут на linux.org.ru - кружок общения квалифицированных специалистов, с яркими личностями и эрудированными мозгами.

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.