idempiere have two cache + distribute cache use hazelcast + internal cache development by dev
I suggest some improve: + internal cache can move to use a implement of JCache API (IDEMPIERE-3834 for tracking it) this change help we standardized about cache, configurable easy exchange provide implement of JCache
+ this ticket to tracking improve of distribute cache the main purpose of hazelcast on idempiere to decrease workload for database by distribute query result around app server. don't like normal cache, distribute cache need serialization process each time we take object from cache to use .
so current implement cache of idempiere have some weakness + in case idempiere run standalone (just one instance per system) it still use distribute cache. on this case it should use normal cache at all + in case we have n instance of idempiere deploy on same server, we have n distribute cache. take a lot memory. on this case better need one hazelcast instance run standalone and share with all idempiere is enough + in case we have n instance of idempiere deploy on n server on same Lan. we have one distribute cache per server. on this case i think we need only some (n/m) distribute cache node and high speed Lan in case some idempiere instance need faster we can configuration near cache for it. near cache is small than main cache, it cache only object use by that idempiere instance.
conclude my propose that replace hazelcast embed on idempiere by hazelcast client.
Environment
None
Activity
Show:
Hiep Lq December 14, 2018 at 1:13 PM
yeb. i see so improve to let BroadCast can work normal in case hasn't any ICacheService active
Hi @Hiep Lq, are you aware that is not mandatory to use hazelcast, it can be turned off, or it can be replaced easily, for example I recently saw an proof of concept replacing hazelcast with redis.
Is just to implement and register an org.idempiere.distributed.ICacheService
Also, hazelcast is not there just for cache, it's being used also for messaging and other stuff.
I think a good documentation page about recommended practices for standalone server, multiple servers in one node, would be great and enough for solving this ticket.
while doing https://idempiere.atlassian.net/browse/IDEMPIERE-3722#icft=IDEMPIERE-3722 I see some improve of cache on idempiere:
idempiere have two cache
+ distribute cache use hazelcast
+ internal cache development by dev
I suggest some improve:
+ internal cache can move to use a implement of JCache API (IDEMPIERE-3834 for tracking it)
this change help we standardized about cache, configurable easy exchange provide implement of JCache
+ this ticket to tracking improve of distribute cache
.
the main purpose of hazelcast on idempiere to decrease workload for database by distribute query result around app server.
don't like normal cache, distribute cache need serialization process each time we take object from cache to use
so current implement cache of idempiere have some weakness
+ in case idempiere run standalone (just one instance per system) it still use distribute cache.
on this case it should use normal cache at all
+ in case we have n instance of idempiere deploy on same server, we have n distribute cache. take a lot memory.
on this case better need one hazelcast instance run standalone and share with all idempiere is enough
+ in case we have n instance of idempiere deploy on n server on same Lan. we have one distribute cache per server.
on this case i think we need only some (n/m) distribute cache node and high speed Lan
in case some idempiere instance need faster we can configuration near cache for it.
near cache is small than main cache, it cache only object use by that idempiere instance.
conclude my propose that replace hazelcast embed on idempiere by hazelcast client.