cancel
Showing results for 
Search instead for 
Did you mean: 

Is it possible to have a "No Redis" Nuxeo cluster ?

pnux_
Confirmed Champ
Confirmed Champ

Hello,

I use :

  • Nuxeo 10.10 (LTS 2019)
  • PostgreSQL 11.X
  • ElasticSearch 6.5.X

I plan to deploy a ** HA Nuxeo Cluster**. If i use org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore according to https://jira.nuxeo.com/browse/NXP-25604 , do i need Redis ?

What i understood (reading the documentation), if i use "SQLKeyValueStore" i didn't need Redis, but i have to use Kafka. Is it right ?

Thank you for your help.

1 ACCEPTED ANSWER

Florent_Guillau
World-Class Innovator
World-Class Innovator

Indeed this page is not up to date (we'll update it) and as you correctly found out SQLKeyValueStore can be used for the key/value store. And actually it is automatically used if you don't specify nuxeo.keyvalue.provider=mongodb (done by default by the mongodb template) or nuxeo.keyvalue.provider=redis (done by default by the redis template).

Note that in a cluster setting you also need a pub/sub provider, which can be either Redis or Stream. If you use the redis template then the default is nuxeo.pubsub.provider=redis, otherwise if you specify nuxeo.pubsub.provider=stream a Stream-based implementation will be used; specify kafka.enabled=true for the Kafka implementation otherwise the default will be Chronicle Queue which is not cluster-aware (streams aren't shared between nodes). If you don't specify any nuxeo.pubsub.provider then you'll get a memory-based one which isn't cluster-aware either, nor is it resilient to server restarts.

View answer in original post

6 REPLIES 6

Thank you for the link, but i don't use MongoDB but only Postgresql.

Florent_Guillau
World-Class Innovator
World-Class Innovator

Indeed this page is not up to date (we'll update it) and as you correctly found out SQLKeyValueStore can be used for the key/value store. And actually it is automatically used if you don't specify nuxeo.keyvalue.provider=mongodb (done by default by the mongodb template) or nuxeo.keyvalue.provider=redis (done by default by the redis template).

Note that in a cluster setting you also need a pub/sub provider, which can be either Redis or Stream. If you use the redis template then the default is nuxeo.pubsub.provider=redis, otherwise if you specify nuxeo.pubsub.provider=stream a Stream-based implementation will be used; specify kafka.enabled=true for the Kafka implementation otherwise the default will be Chronicle Queue which is not cluster-aware (streams aren't shared between nodes). If you don't specify any nuxeo.pubsub.provider then you'll get a memory-based one which isn't cluster-aware either, nor is it resilient to server restarts.

Thank you for this detailled answer, It's very clear !

We recommend Kafka. Redis cannot do everything related to Nuxeo Stream features.

Thank you ! so I will follow your recommendations and go with Kafka !

Getting started

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.