Согласно this, «Каждый map.get (k) будет удаленной операцией« Но где же пульт? Например, у меня есть узел, который записывает в IMap с ключом - k. Еще 50 узлов, которые читают из IMap, используя map.get (k). Что происходит, когда 50 узлов называют map.get (k). Каждый вызов приходит к узлу, который пишет? Если да, то сколько копий IMap сделает этот «удаленный» узел в ответ на эти 50 вызовов? Многопоточность? Является ли этот синглтон IMap? Или каждый поток создаст глубокую копию такого IMAP?Где HazelCast map.get() go? И масштабируемость относится к
ответ
Но где же пульт дистанционного управления?
Ответ приведен в предыдущем предложении в прилагаемой документации: «Представьте, что вы читаете ключ k столько раз, а k принадлежит другому члену вашего кластера». Каждая клавиша хэшируется и отображается на раздел, как описано в http://docs.hazelcast.org/docs/3.7/manual/html-single/index.html#sharding-in-hazelcast и раздел «Разделение данных», который следует далее. Член кластера, которому принадлежит этот раздел, является владельцем (или основной репликой) ключа. Каждый прочитанный & пишет, что этот ключ будет выполняться тем же потоком на этом конкретном члене (то есть, если ваша конфигурация не позволяет читать из резервной копии).
Что происходит, когда 50 узлов называют map.get (k). Каждый вызов приходит к узлу, который пишет?
Да, это всегда ключевой владелец, который выполняет операции над этим ключом.
Если да, то сколько копий IMap сделает этот «удаленный» узел в ответ на эти 50 вызовов?
Участник имеет только один экземпляр IMap, без копий.
Многопоточность?
Нет, все операции с одним и тем же ключом k
будут выполняться в одном потоке раздела на том же элементе, который является основной репликой этого ключа. Вы можете узнать больше о моделировании операций с потоками в http://docs.hazelcast.org/docs/3.7/manual/html-single/index.html#operation-threading
Если я включу ближайшее кэш, я получу устаревшие данные? Так что это нежелательно. Я всегда должен идти к удаленному владельцу ключа. Я не вижу прецедента для близкого кэша. – johnsam
@johnsam с конфигурацией 'invalidate-on-change', рядом с кешем будет подписаться на события изменений. Если данные были изменены в удаленном члене, клиент будет считывать его с удаленного устройства и хранить в ближайшем кэше. –
greate. Является ли ближайший кэш реализацией JCache? – johnsam