Управление размером кучи распределенной карты Hazelcast

Я использую Hazelcast в качестве встроенной распределенной карты в своих API, таких как MemTable, для накопления записей, прежде чем они будут отправлены в другое хранилище. Мой вопрос:

Могу ли я управлять размером кучи с помощью объекта LocalMapStats, предоставленного для IMap?

Я читал об этом объекте, и я подумал, что такие методы, как getHeapSize() или getOwnedEntryMemoryCost() плюс getBackupEntryMemoryCost(), могут дать мне стоимость памяти для сравнения с порогом, а затем решить, что делать с данными.

Заранее спасибо.


person Mariano Mirabelli    schedule 17.05.2019    source источник


Ответы (1)


Вы можете определить стоимость кучи карты через API. Это также можно легко сделать с помощью консоли сценариев на портале центра управления Hazelcast. Код приведен ниже

function findOverallDataSizeImap() {
var objs = hazelcast.getDistributedObjects();
var len = objs.length;
var output='';
var totalSizeInMB=0.0;
for(var i=0;i<len;i++){
if(objs[i] instanceof com.hazelcast.core.IMap){
output = output+' Name : '+objs[i].getName() +' Size (MB) :'+
(objs[i].getLocalMapStats().getHeapCost()/100000)+' \n';
totalSizeInMB=totalSizeInMB+(objs[i].getLocalMapStats().getHeapCost()/100000);
}
}
output = output + ' Total Size (MB) = ' + totalSizeInMB;
return output;
}
person Riaz    schedule 20.05.2019