|
|
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
Задача - написать Application Server. Архитектура приблизительно такая: есть некий сервер, который принимает соединения. Обработав соединения, он отправляет на обработку уже полученные данные. Хотелось бы сделать сделать сервер горизонтально масштабируемым, то есть чтобы обработкой данных занимались другие сервера, которые возможно будут находится на удалённых машинах. Как вы считаете, допустима ли подобная архитектура? Если особых нареканий нет, подскажите как организовать межсерверное взаимодействие. Подойдёт ли для эти целей RMI? Возможно, есть какой-нибудь удобный фреймворк для подобных задач? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 11:39:23 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverЗадача - написать Application Server. Архитектура приблизительно такая: есть некий сервер, дак есть или нужно написать? И что именно есть приведите полное название и версию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 12:04:33 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverАрхитектура приблизительно такая: есть некий сервер, который принимает соединения. Обработав соединения, он отправляет на обработку уже полученные данные. load balancer + single point of failure DoSOfRedRiverХотелось бы сделать сделать сервер горизонтально масштабируемым, то есть чтобы обработкой данных занимались другие сервера, которые возможно будут находится на удалённых машинах. Не понятно, нужна ли избытачность, например, для 24x7 или только масштабируемость? Нужно ли разбирвать сложные задачи (Map\Reduce) или просто обрабатывать запросы пользователей? DoSOfRedRiverКак вы считаете, допустима ли подобная архитектура? Нет тут пока никакой архитектуры. DoSOfRedRiverЕсли особых нареканий нет, подскажите как организовать межсерверное взаимодействие. Подойдёт ли для эти целей RMI? Возможно, есть какой-нибудь удобный фреймворк для подобных задач? Хорошо бы с задачей, для начала, определится. А то, как обычно, на форумах, предалгается решение не известно какой проблемы и угадывай что же оно решает. RMI, скорее, нафиг не нужен. Или сразу к JEE стэку привязываться, брать EJB+JMS и готовую кластеризацию JEE сервера. Либо полностью писать своё решение для того чтобы максимально выжать всё возможное - NIO сокет сервер, кастомная кластеризация на jgroups, terracotta и т.п. Быстрая сериализация типа protobuf. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 12:15:19 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
Petro123, Находится в разработке, так сказать. Он почти готов, но вот как раз закрались сомнения по поводу правильности данного решения. BlazkowiczНужно ли разбирвать сложные задачи (Map\Reduce) или просто обрабатывать запросы пользователей? Простая обработка. Данные лежать в BlockingQueue, оттуда хэндлер(ы) их достают, и обрабатывают. BlazkowiczRMI, скорее, нафиг не нужен. Или сразу к JEE стэку привязываться, брать EJB+JMS и готовую кластеризацию JEE сервера. Либо полностью писать своё решение для того чтобы максимально выжать всё возможное - NIO сокет сервер, кастомная кластеризация на jgroups, terracotta и т.п. Быстрая сериализация типа protobuf. Скорее, свою решение. Сервер на Netty. Насчёт protobuf думал, но как то не решился. BlazkowiczХорошо бы с задачей, для начала, определится. Ну дык вот она задача: распараллелить обработку на несколько серверов. Вернее, предусмотреть такую возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 13:22:42 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverНу дык вот она задача: распараллелить обработку на несколько серверов. Вернее, предусмотреть такую возможность. Метод - "кластеризация" не оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 13:25:46 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverПростая обработка. Данные лежать в BlockingQueue, оттуда хэндлер(ы) их достают, и обрабатывают. И при штатной\не штатоной перезагрузке сервер с очередью что происходит? DoSOfRedRiverНу дык вот она задача: распараллелить обработку на несколько серверов. Вернее, предусмотреть такую возможность. ОК. "распараллелить" значит взять одну задачу и паралельно исполнять разные её части. Это Map\Reduce. Фреймверков валом. Обрабатывать запросы разных пользователей разными серверами это банальный load balancing. Тоже есть готовые решения. Что именно у вас вкладываестся в "распараллелить" - придут телепаты и объяснят. Я с утра туплю и не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 13:30:53 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 13:31:13 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
Petro123, Наверное оно. Но я не владею глубокими познаниями в разработке высоко нагруженных серверов. Может подскажете, как, или чем это реализовать? buldozer01, Мне кажется Netty здесь уместней будет. BlazkowiczИ при штатной\не штатоной перезагрузке сервер с очередью что происходит? Ничего. Запросы нужны обрабатывать либо сразу, либо вообще не обрабатывать, потому что Аякс. BlazkowiczОК. "распараллелить" значит взять одну задачу и паралельно исполнять разные её части. Это Map\Reduce. Фреймверков валом. Обрабатывать запросы разных пользователей разными серверами это банальный load balancing. Тоже есть готовые решения. Ну вот же: DoSOfRedRiverХотелось бы сделать сделать сервер горизонтально масштабируемым, то есть чтобы обработкой данных занимались другие сервера DoSOfRedRiverесть некий сервер, который принимает соединения. Обработав соединения, он отправляет на обработку уже полученные данные. DoSOfRedRiverДанные лежать в BlockingQueue, оттуда хэндлер(ы) их достают, и обрабатывают. Хэндлеры исполняются на этом самом кластере, то есть на бэкэнд серверах. Извините, если я не понятно выражаюсь. По поводу "готовых решений". Может вы поделитесь? Проблемы у меня возникли с sharing memory и системой обмена сообщениями, потому как опыта разработки подобных приложений у меня нет почти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 14:11:56 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiver, а задачу на куски как бить будете? Конечная цель и тест-пример "для параллелить" есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 14:16:04 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverНичего. Запросы нужны обрабатывать либо сразу, либо вообще не обрабатывать, потому что Аякс. Ну, т.е. юзеры дружно встали и пошли на юг, пока сервер бутается. DoSOfRedRiverПо поводу "готовых решений". Может вы поделитесь? jgroups, ну и гугл -> java load balancer для ещё пачки вариантов. DoSOfRedRiverПроблемы у меня возникли с sharing memory terracota DoSOfRedRiverи системой обмена сообщениями, потому как опыта разработки подобных приложений у меня нет почти. А зачем shared memory и сообщения в вашей архитектуре? balancer отдал запрос ноде и пусть та обрабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 14:26:58 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
Petro123, Не нужно разбивать задачу, нужно эти самые задачи выполнять параллельно использую все свободные ресурсы. Пришёл запрос1, 2, 3, 4. Аццептор обработал соединение, положил задачи в очередь. Когда освобождается некий ресурс (сервер, поток), он берёт из очереди данные, и выполняет обработку. BlazkowiczНу, т.е. юзеры дружно встали и пошли на юг, пока сервер бутается Это уже не моя проблема. В ТЗ не стоит задачи реализовать SPOF и другие механизмы отказоустойчивости. BlazkowiczА зачем shared memory и сообщения в вашей архитектуре? balancer отдал запрос ноде и пусть та обрабатывает. Ну это возможные пути решения проблемы. В процессе проектирования уже можно сделать выбор в пользу shared memory, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 15:07:35 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiver, >> Мне кажется Netty здесь уместней будет. Откуда такая уверенность ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 15:08:18 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverPetro123, Не нужно разбивать задачу, нужно эти самые задачи выполнять параллельно использую все свободные ресурсы. Пришёл запрос1, 2, 3, 4. Аццептор обработал соединение, положил задачи в очередь. Когда освобождается некий ресурс (сервер, поток), он берёт из очереди данные, и выполняет обработку. я имел ввиду делить общую задачу. Это как у транзакции - неделимость и атомарность куска. Теперь понятно, что: - очерёдность кусков-запросов не имеет значения - нагрузка в виде запросов - каждый запрос - одна транзакция. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 15:20:28 |
|
||
|
Горизонтальное масштабирование. Межсерверная связь.
|
|||
|---|---|---|---|
|
#18+
buldozer01, Я им уже пользуюсь. Мне нравится, недостатков пока ни каких не нашёл. Похоже, там есть всё, что мне нужно. И примеров в сети много, на русском в том числе. Petro123, Вообщем то вы правы, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 15:37:43 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2129894]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get first new msg: |
10ms |
get forum data: |
4ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 449ms |

| 0 / 0 |
