Skip to main content
17-Peridot
April 12, 2021
Solved

How does ThingWorx 9.x use Ignite ?

  • April 12, 2021
  • 1 reply
  • 2727 views

Hi, 

 

Ignite was introduced since ThingWorx 9.0  cluster,  I want to know under what circumstances it will  be used. 

1.  Will the none-persistent property store in Ignite  ? whatever the data type is . 

2.  Will the performance of JavaScript service benefit from increasing the memory size of Ignite ? 

 

Regards,

Sean

 

 

 

Best answer by yhan

Hi @seanccc,

 

Thank you for reaching out to PTC.

"How does TWX 9.x uses Ignite" is a long story that it's hard to talk about in general without any specific question. However, if you would like to know it in detail I suggest you can refer https://ignite.apache.org/docs/latest/index

 

Answer your two questions:

  1. Non-persistent properties of TWX are usually stored in the JVM heap. The logic in Ignite is to read the data of local node and put it into a cluster cache, and usually Ignite will keep data in their own off-heap memory regions. So from this aspect, the non-persistent properties will be stored in Ignite.
  2. Take an example, if you run a query service against an Ignite cluster, the queries will access data and indexes stored in the off-heap memory while the result sets of such queries will be kept in Java Heap until the TWX application reads the result sets. So in this sense, the performance of JavaScript service will benefit from increasing the memory size of Ignite.

Thanks,

/Yoyo

 

1 reply

yhan17-PeridotAnswer
17-Peridot
April 12, 2021

Hi @seanccc,

 

Thank you for reaching out to PTC.

"How does TWX 9.x uses Ignite" is a long story that it's hard to talk about in general without any specific question. However, if you would like to know it in detail I suggest you can refer https://ignite.apache.org/docs/latest/index

 

Answer your two questions:

  1. Non-persistent properties of TWX are usually stored in the JVM heap. The logic in Ignite is to read the data of local node and put it into a cluster cache, and usually Ignite will keep data in their own off-heap memory regions. So from this aspect, the non-persistent properties will be stored in Ignite.
  2. Take an example, if you run a query service against an Ignite cluster, the queries will access data and indexes stored in the off-heap memory while the result sets of such queries will be kept in Java Heap until the TWX application reads the result sets. So in this sense, the performance of JavaScript service will benefit from increasing the memory size of Ignite.

Thanks,

/Yoyo

 

seanccc17-PeridotAuthor
17-Peridot
April 21, 2021

@yhan ,

 

One more question regarding to the none-persistent property. 

 

If the ThingWorx cluster use the embedded Ignite , instead of the separated Ignite cluster,  will the property value written into ThingWorx foundation A sync to ThingWorx foundation B and the property value has a short time inconsistency before finishing the sync ?  or there's certain global/distributed lock to prevent the property from reading/writing until the property value finish the sync,  or certain snapshot of property value , so that reading the property  value always keep consistent ? 

 

Regards,

Sean 

17-Peridot
April 21, 2021

Hi @seanccc,

 

Actually, ignite allows configuring cache mode(PARTITIONED or REPLICATED) and rebalance mode (SYNC or ASYNC) through class org.apache.ignite.configuration.IgniteConfiguration.

But for Thingworx ignite mechanism, I believe it uses the sync mode to control the cache rebalancing process, that is "Any requests to the cache’s API are blocked until rebalancing is completed".

 

Thanks,

/Yoyo