Hello. Why the number of partitions should be even? May be you have some links to documentation about this stuff, do you?
Thanks. > 26 авг. 2019 г., в 15:47, Denis Mekhanikov <[email protected]> написал(а): > > Niels, > > I believe, that the reason is performance of an affinity function and a size > of GridDhtPartitionsFullMessage. > An affinity function needs to assign partitions to nodes. In case of a > replicated cache, there are (number of partitions) x (number of nodes) pairs > of (node, partition) that need to be calculated. It was especially critical > in Ignite 1.x when FairAffinityFunction was used, since its computational > performance was worse than of Rendezvous. > > I think, it was decided to decrease the number of partitions for replicated > caches to make the affinity function work faster and decrease the size of the > partition map. > > For PARTITIONED caches it’s important to keep an even number of partitions on > every node. Rendezvous works as a pseudo-random, so it needs a high number of > partitions to give a fair distribution of partitions. > For REPLICATED caches it’s not that critical, since the number of partitions > is equal on every node anyway. > > Denis >> On 26 Aug 2019, 14:34 +0300, Niels Ejrnæs <[email protected]>, >> wrote: >> Hi, >> >> >> >> Is there a particular reason for why replicated caches has their partition >> size set to 512 by default? >> >> I found this in >> org.apache.ignite.internal.processors.cache.GridCacheUtils#initializeConfigDefaults(IgniteLogger, >> CacheConfiguration, CacheObjectContext):V >> >> >> >> if (cfg.getAffinity() == null) { >> >> ... >> >> else if (cfg.getCacheMode() == REPLICATED) { >> >> RendezvousAffinityFunction aff = new >> RendezvousAffinityFunction(false, 512); >> >> >> >> cfg.setAffinity(aff); >> >> >> >> cfg.setBackups(Integer.MAX_VALUE); >> >> } >> >> >> >> The default partition size for the RendezvousAffinityFunction is 1024. >> >> >> >> Best regards >> >> Niels Elkjær Ejrnæs >> >>
