2015-10-26 3 views
0

У меня мало опыта с Oracle Service Bus, я пытаюсь разработать решение для ведения журнала с помощью BigData.Сервисный автобус Oracle с BigData

Как я читал, активность журнала и отчета по умолчанию в OSB будет помещать данные в файл журнала сервера домена или в базу данных, где мы настраиваем домен сервера. Если я хочу поместить все журналы в отдельную базу данных BigData. Мне нужно будет сделать любой из этих подходов:

  1. Выноска Java, используйте JMS или другую технологию для отправки данных на сервер bigdata.
  2. Выноска веб-сервиса, создайте отдельный веб-сервис для ведения журнала.
  3. Создайте собственный поставщик отчетов, который заменит значение по умолчанию в отчетах OSB.
  4. Что-то другое

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

ответ

1

Является ли фреймворк регистрации в weblogic на основе Log4j? Это означает, что вы можете использовать JMSAppender (возможно, разумно обернуть приложение Async log4j, если сможете) и обрабатывать его, как вы хотите.

Или, если вы говорите о рамках ОСБ отчетности, есть несколько вариантов:

  1. Настройка по умолчанию JMS reporting provider (который использует основную базу данных SOAINFRA, который, мы надеемся, настроенное быть что-то лучше, чем по умолчанию Derby), затем напишите MDB, который вытаскивает отчеты из очереди и вставляет их в SAS BigData
  2. Отключите JMS-провайдера и используйте custom provider, который может делать все, что вы хотите. Если вы хотите, вы все равно можете выполнить двухэтапный процесс, когда сам поставщик отчетов ставит отчеты в очередь JMS, чтобы он быстро возвращался, а другой MDB отключает сообщения и сохраняет их в своем собственном темпе.

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

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

Если у вас есть буфер, похожий на JMS-очередь, то вы можете обрабатывать пики, планируя заранее. Вы можете сказать: «На самом деле, я хочу, чтобы очередь JMS насчитывала 10 000 сообщений, и если это происходит по какой-либо причине, я хочу (переместить переполнение в отдельную очередь в этом другом поле) или (отфильтровать все несущественные сообщения) или (отбросьте новые сообщения) или (действие по вашему выбору). О да, и если база данных протоколирования терпит неудачу, я попробую 3 раза выполнить фиксацию, а если нет, переместите ее в эту другую очередь ». Или что угодно.

+0

Можно ли использовать JMS и очереди, чтобы отправить данные журнала на большой сервер данных? Log4j logging просто может не сработать для нас в этом случае. Так что я либо могу использовать java callout реализовать JMS внутри java-кода, сделать его похожим на его синхронизацию. Или просто создайте собственный поставщик отчетов, который выполняет одно и то же задание (используйте JMS для отправки данных журнала на большой сервер данных) и замените поставщика отчетов по умолчанию. Будет ли это работать? Спасибо. –

+0

Отредактировал мой главный вопрос, но короче, да. –

+0

Большое вам спасибо за подробный ответ. –

0

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

Вы также можете написать небольшую рутину such as this (либо ОСБ или за его пределами), которые могут читать все, что вы регистрируетесь (например, с помощью журнала активности, но и дополнительных метаданных, фиксируемая при включении monitoring ОРБА компоненты) и делать с ним все, что необходимо (например, нажимать его на базу данных или в хранилище BigData).

Ключ, чтобы избежать написания явного вызова службы в каждом конвейере/потока и выше подход (ы) использовать standard OSB/ODL* loggers

* Oracle Diagnostic Logging

Смежные вопросы