Детали подключения к клиентскому серверу Hazelcast

Я установил двухузловой Hazelcast-кластер на Amazon EC2. На одном из узлов у меня есть клиентская программа, которая подключается к кластеру и запускает атомарную операцию увеличения и получения счетчика.

Как я могу узнать, к какому узлу сервера Hazelcast подключился клиент и выполнил операцию incrementAndGet?

Спасибо


person Santhosh S    schedule 30.12.2013    source источник
comment
Какую версию Hazelcast вы используете. Итак, вы используете 2.x или 3.x.   -  person pveentjer    schedule 30.12.2013
comment
Hazelcast версии 3.1.3   -  person Santhosh S    schedule 31.12.2013


Ответы (1)


AtomicLong принадлежит одному разделу, а раздел принадлежит одному члену.

В Hazelcast 3 клиент знает, какой член владеет какими разделами, поэтому он автоматически перенаправит вызов AtomicLong на нужную машину.

[править] Зачем вам это нужно знать?

person pveentjer    schedule 31.12.2013
comment
Спасибо. Как я уже упоминал, у меня есть кластер hazelcast с двумя узлами, и на каждом из этих узлов у меня работает клиент. Я хотел знать, подключается ли клиент к локальному серверу hazelcast или к удаленному серверу hazelcast. Как включить подробное ведение журнала на hazelcastclient, чтобы узнать, на какой сервер hazelcast клиент также отправляет запросы? - person Santhosh S; 31.12.2013
comment
Клиент будет автоматически подключен ко всем участникам; после подключения к одному он будет постоянно обновляться информацией о членах / разделах. - person pveentjer; 31.12.2013
comment
Я запускаю свой сервер и клиент hazelcast в одном экземпляре EC2. Этот экземпляр масштабируется автоматически, поэтому у меня много клиентов и серверов. В настоящее время я использую cluster.addMembershipListener и методы memberAdded и memberRemoved. Я повторно инициализирую ClientConfig и HazelcastClient с IP-адресами серверов hazelcast. Вы хотите сказать, что нет необходимости инициализировать ClientConfig и HazelcastClient. Я сделал это потому, что в случае отказа локального сервера hazelcast клиент сможет подключиться к другим серверам hazelcast в кластере. Дайте мне знать. - Спасибо - person Santhosh S; 31.12.2013
comment
Пока клиент может подключиться к одному, он будет знать обо всем. Таким образом, вам не нужно настраивать все элементы кластера для клиента; достаточно, чтобы убедиться, что ваш клиент может подключиться хотя бы к одному из них. Как только соединение будет установлено с одним из участников, он автоматически узнает обо ВСЕХ членах в вашем кластере. - person pveentjer; 31.12.2013
comment
Ваша проблема решена? Если да, отметьте ответ как «вверх», чтобы людям не приходилось давать дополнительные ответы. - person pveentjer; 01.01.2014
comment
По умолчанию клиент подключается к локальному экземпляру сервера? И если локальный сервер hazelcast недоступен, он переключится на другой сервер hazelcast. Это необходимо для минимальной задержки между клиентом и сервером. Я занимаюсь этим, потому что мой клиент и сервер будут распределены по зонам. - person Santhosh S; 02.01.2014
comment
Клиент подключится ко всем участникам кластера. Если вызов предназначен для конкретной машины (например, map.put или atomiclong.get), он будет немедленно отправлен на машину, владеющую этим разделом. Если не имеет значения, какая машина используется, она будет использовать политику циклического перебора, но это можно настроить. Если машина недоступна, она автоматически переключится на нового владельца раздела. Таким образом, у вас нет контроля над вызовами, предназначенными для конкретной машины (большинство ваших вызовов будут такими). Только для других вызовов вы можете подключить свой собственный балансировщик нагрузки, который полагается на минимальные задержки. - person pveentjer; 02.01.2014
comment
можем ли мы гарантировать, что по умолчанию клиентские вызовы hazelcast будут отправляться на сервер hazelcast, на котором запущен localhost. Если сервер hazelcast, работающий на localhost, выходит из строя, клиент может связаться с другими. Мы используем только atomiclong (get & Increment). - Спасибо - person Santhosh S; 08.01.2014
comment
IAtomicLong хранится в определенном разделе, поэтому все вызовы этого atomiclong будут отправляться в этот раздел. Было бы бессмысленно отправлять эти вызовы на localhost, потому что кто говорит, что этот конкретный раздел принадлежит именно этому разделу. Существует возможность разрешить клиенту не использовать интеллектуальную маршрутизацию (ClientConfig.smartRouting), чтобы он не знал о разделах. Затем вы должны настроить клиент, чтобы он не использовал циклический перебор. Но имхо это не выход. У меня сложилось впечатление, что вам не хватает части AtomicLong, являющейся частью раздела. - person pveentjer; 08.01.2014