Currently my Discourse install uses a DigitalOcean managed PostgreSQL database and a DigitalOcean managed Redis instance. Is the managed Redis server necessary?
Does Discourse store anything permanent in Redis or is it only used for caching/other kinds of temporary data?
My current setup (definitely overkill but it will make scaling easy if it’s needed one day):
DigitalOcean managed PostgreSQL server
DigitalOcean managed Redis instance
DigitalOcean Load Balancer
Two DigitalOcean droplets, each running Discourse
A simpler setup I was thinking about is:
DigitalOcean managed PostgreSQL server
A single server running both Redis and the Discourse application with a floating IP to fallback to a backup server if needed.
My current setup can seemlessly swap web servers without the user noticing because of the external Redis server, I think the simpler setup will log out users if the fallback server is needed, is this the main downside of having Redis on the same server as Discourse?
+1 Anche io ho la stessa domanda, mi piacerebbe davvero molto vedere se qualcuno potrebbe essere così gentile da spiegare un po’ di più su Redis e Discourse
Discourse utilizza Sidekiq, un pianificatore di job open source scritto in Ruby. Sidekiq in generale (e di default) esegue solo i job e non si occupa della pianificazione, o almeno è quanto indicano i riferimenti (magari le cose sono cambiate?); tuttavia, la mia comprensione è che la versione enterprise di Sidekiq includa la pianificazione OOTB (out of the box).
Sidekiq utilizza Redis come archivio di strutture dati in memoria ed è anch’esso scritto in Ruby. Sidekiq legge i job da una coda Redis, utilizzando il modello First In First Out (FIFO), per elaborare i job. L’elaborazione dei job è asincrona e permette a un thread web di servire richieste in tempo reale, invece di elaborare compiti pesanti che possono essere “pianificati” per essere eseguiti in background.
Sidekiq è descritto come un “software ben noto per l’elaborazione di code” ed è utilizzato da Discourse per job progettati per essere eseguiti come attività in background e non direttamente nelle richieste dell’applicazione web.
Puoi esplorare i molti tipi di job eseguiti da Discourse, basandoti sulla breve panoramica sopra, nel repository di Discourse:
Redis può essere utilizzato da Discourse in altre parti dell’architettura; ma, per quanto mi viene in mente, l’uso principale di Redis è come “compagno” di Sidekiq, il “tizio dei job”. I membri del team di Discourse più esperti di me sull’HLA di Discourse possono certamente fornire maggiori dettagli su come Redis viene utilizzato all’interno dell’HLA di Discourse.
Questo è un post un po’ datato, ma ho pensato di ampliare questa risposta dato che mi sono imbattuto in questa questione mentre cercavo altre informazioni su Discourse e Redis.
Ecco una risposta di un membro del team su cosa altro oltre a Sidekiq usa Discourse per Redis:
Ciao @Francis, qual è stata la tua stima di fatturazione per tutti quei servizi DigitalOcean? Sono solo curioso perché ho intenzione di installare lo stesso servizio su Google Cloud (200$ gratis). Il prezzo del servizio Discourse SaaS è fuori dal mio budget.