загрузить всю реализацию для hazelcast

Я пытаюсь использовать сервер hazelcast на нескольких узлах. Я реализовал загрузку полностью в реализации хранилища карт. Мне интересно, должно ли это быть включено только на серверном узле или на всех? Если я разверну то же самое на всех узлах, это не приведет к созданию ненужных операций чтения базы данных. Если мне нужно развернуть нагрузку только на одном узле, какова лучшая стратегия (на основе кода / API-вызовов или конфигурации), которая позволила бы мне чисто реализовать сценарий, при котором только один серверный узел реализует загрузку всей реализации для хранилища карт. Я всегда могу развернуть разный код на разных серверах, но я бы хотел этого избежать и задуматься о лучших вариантах.


person Community    schedule 14.08.2014    source источник
comment
какие-нибудь мысли?   -  person    schedule 14.08.2014


Ответы (1)


Каждый узел должен иметь одинаковую конфигурацию / банки и т. Д.

В настоящее время MapLoader.loadAllKeys выполняется на одном из узлов кластера. После загрузки ключей они назначаются разделам-владельцам, в которые загружаются фактические данные с помощью метода MapLoader.loadAll (keys).

Считаете ли вы, что совместное использование одной и той же конфигурации / jar-файлов является проблемой?

person pveentjer    schedule 15.08.2014
comment
Думаю, я хотел прояснить это. Будет ли hazelcast отвечать за то, чтобы только узел вызывал loadlAll / loadAllkeys, или мне нужно это реализовать? Если код / ​​конфигурация такие же, это было бы здорово (без необходимости реализовывать логику, чтобы убедиться, что только node вызывает loadAll) - person ; 15.08.2014
comment
Вам не нужно его реализовывать; это часть инфраструктуры Hazelcast. - person pveentjer; 17.08.2014
comment
Вероятно, в Hazelcast 3.4 мы собираемся обогатить модель загрузки. Я считаю, что будет больше контроля над загрузкой всех ключей на раздел, потому что в настоящее время 1 машина будет «жертвой» для загрузки всех ключей, но в некоторых случаях лучше распределить нагрузку. - person pveentjer; 17.08.2014
comment
спасибо за комментарий - из этого я понял следующее: я должен просто развернуть свои реализации хранилища карт (с загрузкой всех ключей) на всех узлах - загрузка всех ключей вызывается только из одного узла в кластере - person ; 18.08.2014
comment
В версии hazelcast 3.3 ключи загрузки вызываются один раз, и я возвращаю в них 2 ключа, но когда я дохожу до loadAll, он вызывается дважды с одним ключом в качестве ввода, он работает как load (), а не loadAll (). К вашему сведению, я не настраиваю раздел, ни более 1000 ключей, только два ключа. Где я ошибаюсь ??? Спасибо и привет, Гарри - person Harry; 30.09.2014
comment
Вы не делаете ничего плохого. То, что вы говорите, правильно. Я дам вам более точные цифры. Представьте 27100 ключей в db, тогда loadAllKeys загрузит 27100 ключей за 1 раз. Затем каждый раздел загружает 100 ключей (27100/271) с помощью метода loadKeys. В вашем случае у вас есть только 2 ключа, поэтому, вероятно, каждый ключ попадает в другой раздел, где каждый раздел выполняет loadKeys с одним ключом. Это имеет для вас смысл? Или я вас неправильно понимаю? - person pveentjer; 30.09.2014
comment
Небольшое исправление: каждый раздел будет загружать записи с помощью метода loadAll. - person pveentjer; 30.09.2014