Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java RMI. Балансировка нагрузки, резервирование / 16 сообщений из 16, страница 1 из 1
29.04.2016, 15:00
    #39227546
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Существуют ли простые способы для Subj или проще реализовать свой велосипед?

По сути, от RMI мне нужно только создать соединение, вызвать 1-2 метода на ремоут хосте, получить ответ. Все методы работают a la REST, никакой сессии не имеют. Но желателен Subj. Т.е. потенциально иметь возможность:

1. Если какой-то сервер в момент вызова/коннекта не отвечает - переключится на резервный
2. Какая-то банальная балансировка нагрузки. Например один вызов на один сервер, следующий на второй, следующий обратно на первый.

Погуглил в И-нет, балансировщики есть, но какие-то уж сильно Enterprise уровня (a la Weblogic). Мне такое не нужно. Пока делаю свой велосипед (вроде не сложно), но чувство, что велосипедостроение не есть хорошо - остается.
...
Рейтинг: 0 / 0
29.04.2016, 15:34
    #39227581
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Leonid Kudryavtsev,

JBoss + Stateless Session Bean

В принципе, и руками должно быть не сложно.
Балансировщик - вообще любой удобный для вашей сети
Резервирование - любой распределенный кэш
...
Рейтинг: 0 / 0
29.04.2016, 15:40
    #39227586
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Если все методы работают методы работают a la REST то надо было и создавать Rest.
...
Рейтинг: 0 / 0
29.04.2016, 15:49
    #39227597
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
У меня кол-во вызовов достаточное большое/частое + сейчас много активных потоков плодится (>30-40). Как-то есть подозрение, что HTTP будет недостаточно быстро + большие накладные расходы.

Сейчас многопотоковость вычислений реализовал (>30-40 потоков), даже задержки на RMI стали заметны, т.ч. например сейчас все java.io.Serialization меняю на java.io.Externalization. А при HTTP, подозреваю, вообще можно будет тушить свет ))).

Про HTTP задумываюсь, но в одном месте он 100% не пролезет по скорости. Т.ч. от RMI не уйти. А мне кажется, мешать в одном проекте два транспортных протокола - то же не есть хорошо.

В принципе, и руками должно быть не сложно.

Ну да. Получается максимум пара десятков/сотен строк кода.
Правда как его отлаживать - не очень понятно. Я опыта построения высоконагруженных систем не имею.
...
Рейтинг: 0 / 0
29.04.2016, 15:51
    #39227603
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
maytonЕсли все методы работают методы работают a la REST то надо было и создавать Rest.
Ну у меня REST и есть, только не HTTP )))

Если читать Вики,
https://ru.wikipedia.org/wiki/REST

То нигде не сказано, что протокол ТРАНСПОРТНОГО уровня обязательно должен быть HTTP )))
...
Рейтинг: 0 / 0
29.04.2016, 15:59
    #39227622
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
BlazkowiczРезервирование - любой распределенный кэш
А что общего между кешем и резервированием ?

И еще вопрос по кэшам. Нужен кэш/прокси, но со специфическим поведением:

1. В кэш должен помещаться запрос ДО ОКОНЧАНИЯ его обработки. Т.к. высока вероятность (очень часто!), что придет несколько одинаковых запросов и, в этом случае, нужно понять что они одинаковые и выполнить только один.

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

3. Скорость работы критична

Я смотрел на кеши, но наверное, нужно было смотреть на прокси (((. Не уверен, как прокси будут требованию N1 удовлетворять. Если подходящий прокси найдется - то тогда можно и от RPC попытаться уйти.
...
Рейтинг: 0 / 0
29.04.2016, 16:12
    #39227646
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Leonid KudryavtsevА что общего между кешем и резервированием ?

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


Leonid KudryavtsevИ еще вопрос по кэшам. Нужен кэш/прокси, но со специфическим поведением:
1. В кэш должен помещаться запрос ДО ОКОНЧАНИЯ его обработки. Т.к. высока вероятность (очень часто!), что придет несколько одинаковых запросов и, в этом случае, нужно понять что они одинаковые и выполнить только один.
2. Должна быть возможность гибко прописывать политику времени жизни объектов. Т.е. в зависимости от данных запроса, время его жизни в кэше может сильно отличаться.
3. Скорость работы критична

EhCache + Terracotta. Но, надо, конечно, планировать в зависимости от того на сколько критично случайное выполнение одинаковых запросов, если они на разные узлы пошли. Если критично, то можно выделить один сервер под задачу унификации запросов, а само выполнение уже распределять.

Leonid KudryavtsevЯ смотрел на кеши, но наверное, нужно было смотреть на прокси (((. Не уверен, как прокси будут требованию N1 удовлетворять. Если подходящий прокси найдется - то тогда можно и от RPC попытаться уйти.
Не догоняю при чем тут прокси.
...
Рейтинг: 0 / 0
29.04.2016, 16:22
    #39227663
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Leonid KudryavtsevТо нигде не сказано, что протокол ТРАНСПОРТНОГО уровня обязательно должен быть HTTP )))
Ого... ну может быть и не сказано.
...
Рейтинг: 0 / 0
29.04.2016, 17:22
    #39227715
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
BlazkowiczLeonid KudryavtsevИ еще вопрос по кэшам. Нужен кэш/прокси, но со специфическим поведением:
1. В кэш должен помещаться запрос ДО ОКОНЧАНИЯ его обработки. Т.к. высока вероятность (очень часто!), что придет несколько одинаковых запросов и, в этом случае, нужно понять что они одинаковые и выполнить только один.

EhCache + Terracotta.

По EhCache доку смотрел, но как сделать такое сделать - мне не очень понятно.

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

Критично. Сейчас даже сильно критично, т.к. последние оптимизации кода привела к тому, что ~ 70% будет похожих и будут приходить почти одновременно.

Но задача "унификации запросов" уже автоматически несет за собой почти полное создание функционала кэша. Т.ч. получается, что если ее делать самому, то в общем и кэшь не нужен ))) Просто HashMap в котором запросы "унифицировали" сделать большего размера ))).
...
Рейтинг: 0 / 0
29.04.2016, 17:34
    #39227719
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
И еще один вопрос:

А кто чем пользуется для мониторинга серверов?
1. Что бы была достаточно тесная интеграция с Java / JVM: память, thread, RMI, какие-то свои метрики.
2. Сбор log'ов с серверов в одно централизованное место.
...
Рейтинг: 0 / 0
29.04.2016, 19:02
    #39227767
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Leonid Kudryavtsev, у тебя к каталоге /bin лежит JVisualVm. Запускай смотри.
Поставь плагин для JMX, полезная штука. Поставь плагины для мониторинга
CPU/Heap. И прочие.

JMX - это аналог icmp для Java.

Аналогичным функционалом обладает JBoss. Он показывает веб-морду
для JMX. Давно лет 5 назад было также полезное веб-приложение PSIProbe.
Щас поддерживается или нет - невкурсе.
...
Рейтинг: 0 / 0
29.04.2016, 19:04
    #39227770
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Чтобы поднялся JMX-сетевой порт надо java запускать с ключиками. Иначе - только локальные процессы видны.
...
Рейтинг: 0 / 0
29.04.2016, 19:18
    #39227774
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Leonid Kudryavtsev, насчет сбора логов - сложный вопрос. И наверное не в тему Java.
Я-бы стаскивал логи как-то по другому.

Но у Log4j (старой версии 1.2.x) есть много альтернативных Appenders которе могут писать в syslog, Windows-syslog,
jdbc-базу, многое другое. Причем код переписывать не нужно. Достаточно только конфигурирования
базового конфига log4j.
...
Рейтинг: 0 / 0
29.04.2016, 21:36
    #39227818
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
maytonLeonid Kudryavtsev, у тебя к каталоге /bin лежит JVisualVm. Запускай смотри.
Поставь плагин для JMX, полезная штука. Поставь плагины для мониторинга
CPU/Heap. И прочие.

JMX - это аналог icmp для Java.

От JVisualVM до адекватной системы мониторинга... как пешком до луны. IMHO

Попытаюсь Zabbix поставить, посмотрю на него
...
Рейтинг: 0 / 0
30.04.2016, 00:19
    #39227880
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
Leonid Kudryavtsev, ты правильно вопрос формулируй.

Zabbix - это вообще более общая штука.
...
Рейтинг: 0 / 0
30.04.2016, 09:43
    #39227942
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java RMI. Балансировка нагрузки, резервирование
может обычный http с keep alive + zookeper для discovery?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java RMI. Балансировка нагрузки, резервирование / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]