Hazelcast 3.4: как да избегнете десериализация от близък кеш и да получите оригинален елемент

Започвайки от версия 3.X Hazelcast връща копие на оригиналния обект, който се съхранява в разпределена карта с активиран почти кеш, за разлика от версия 2.5, където беше върнат оригиналният обект.

Това поведение позволи локални модификации на записите, съхранени в картата, и GET операциите бяха бързи.

Сега, с версия 3.X, той съхранява двоичен обект в близкия кеш и причинява десериализация при всяко GET, което значително влияе върху производителността. Възможно ли е да се конфигурира близкият кеш на картата на Hazelcast 3.4.2 да връща препратка към оригиналния обект, а не копие на оригиналния запис?


person Dmitry    schedule 15.06.2015    source източник


Отговори (2)


В секцията <near-cache>, ако зададете

  • <in-memory-format>OBJECT</in-memory-format>
  • И
  • <cache-local-entries>true</cache-local-entries>

трябва да получите същия екземпляр върнат.

Това работи както за клиент, така и за член.

person nilskp    schedule 16.06.2015
comment
Според техния документ, в този случай обектът ще бъде десериализиран и сериализиран отново - допълнителни разходи за производителност - person Dmitry; 16.06.2015
comment
@Dmitry Тествах го и работи. Къде в документите виждате това? - person nilskp; 16.06.2015
comment
docs.hazelcast.org/docs/latest/manual/html/ В допълнение, при отстраняване на грешки в кода на Hazelcast може да се види, че вътре в NearCache има ConcurrentMap, който съхранява CacheRecord, където стойността се съхранява като BINARY. - person Dmitry; 16.06.2015
comment
@Dmitry, това описва поведението на map, а не на near-cache. Уверете се, че тези две настройки по-горе са в секцията <near-cache>, а не директно в секцията <map>. - person nilskp; 16.06.2015
comment
О, искаш да кажеш да конфигурираш почти кеш представяне в паметта. Проработи! Обаче в примера в документацията за близкия кеш този конфигурационен параметър е пропуснат. Благодаря ти много. - person Dmitry; 16.06.2015

Не мисля, че има начин да се вземе оригинален артикул. За да избегнете десериализация, можете да опитате и да зададете

<in-memory-format>OBJECT</in-memory-format> 

в конфигурация <near-cache>. По този начин hazelcast ще съхранява данни в <near-cache> в обектна форма и няма да е необходима десериализация. Но предполагам, че това ще работи само ако сте конфигурирали <near-cahce> от страна на клиента, защото ако <near-cache> е на възела, все пак ще имате нужда от сериализиране, за да предадете обект от възел към клиент.

person wantstoknow    schedule 16.06.2015
comment
Внимавайте да споделяте променлив обект :) - person pveentjer; 17.06.2015