Architettura

BigBlueButton è costruito su una solida base di componenti sottostanti, tra cui nginx, FreeSWITCH, Kurento, redis, react e altri.

Questa pagina descrive l'architettura complessiva di BigBlueButton e il modo in cui questi componenti lavorano insieme.

Architettura di alto livello

Il diagramma seguente fornisce una visualizzazione di alto livello del funzionamento di insieme dei componenti di BigBlueButton .

Panoramica dell'architettura

Analizzeremo ogni componente in modo più dettagliato di seguito.

Client HTML5

Il client HTML5 è un'applicazione Web reattiva a pagina singola costruita sui seguenti componenti:

  • React.js per il rendering dell'interfaccia utente in modo efficiente
  • WebRTC per inviare / ricevere audio e video

Il client HTML5 si connette direttamente con il server BigBlueButton sulla porta 443 (SSL), dal caricamento del client BigBlueButton alla creazione di una connessione socket web. Queste connessioni sono tutte gestite da nginx.

Server HTML5

Il server HTML5 si trova dietro nginx.

Il server HTML5 è costruito su

  • Meteor.js in ECMA2015 per la comunicazione tra client e server.
  • MongoDB per mantenere lo stato di ogni client BigBlueButton coerente con il server BigBlueButton

Il database MongoDB contiene informazioni su tutte le riunioni sul server e, a sua volta, ogni client connesso a una riunione. Il client di ogni utente è a conoscenza solo dello stato della riunione, ad esempio i messaggi di chat pubblici e privati ​​dell'utente inviati e ricevuti. Il lato client sottoscrive le raccolte pubblicate sul lato server. Gli aggiornamenti a MongoDB sul lato server vengono automaticamente inviati a MiniMongo sul lato client.

Il diagramma seguente offre una panoramica dell'architettura del client HTML5 e delle sue comunicazioni con gli altri componenti in BigBlueButton.

Panoramica HTML5

Web BBBL

L'applicazione web BigBlueButton è un'applicazione basata su Java scritta in Scala. Implementa l' API BigBlueButton e contiene una copia dello stato della riunione.

L'API BigBlueButton fornisce un'integrazione di terze parti (come il plug-in BigBlueButtonBN per Moodle) con un endpoint per controllare il server BigBlueButton.

Ogni accesso a BigBlueButton avviene attraverso un portale front-end (ci riferiamo a come un'applicazione di terze parti). BigBlueButton integra Moodle, Wordpress, Canvas, Sakai e altri (vedi integrazioni di terze parti ). BigBlueButton viene fornito con il proprio front-end chiamato Greenlight . Quando si utilizza un sistema di gestione dell'apprendimento (LMS) come Moodle, gli insegnanti possono configurare le stanze BigBlueButton all'interno del loro corso e gli studenti possono accedere alle stanze e alle loro registrazioni.

Il BigBlueButton viene fornito con alcune semplici demo API . Indipendentemente dal front-end che utilizzi, tutti usano l' API sotto il cofano.

Redis PubSub

Redis PubSub fornisce un canale di comunicazione tra diverse applicazioni in esecuzione sul server BigBlueButton.

Redis DB

Quando viene registrata una riunione, tutti gli eventi vengono archiviati in Redis DB. Al termine della riunione, il processore di registrazione prenderà tutti gli eventi registrati nonché i diversi file raw (PDF, WAV, FLV) per l'elaborazione.

Apps akkaL

BigBlueButton Apps è l'applicazione principale che riunisce le diverse applicazioni per fornire collaborazione in tempo reale durante la riunione. Fornisce l'elenco di utenti, chat, lavagna, presentazioni in una riunione.

Di seguito è riportato un diagramma dei diversi componenti di Apps Akka.

Architettura di Apps Akka

La logica aziendale della riunione è in MeetingActor. Qui è dove vengono archiviate le informazioni sulla riunione e dove vengono elaborati tutti i messaggi per una riunione.

FSESL akka

Abbiamo estratto il componente che si integra con FreeSWITCH nella sua applicazione. Ciò consente ad altri che utilizzano sistemi di conferenza vocale diversi da FreeSWITCH di creare facilmente la propria integrazione. La comunicazione tra le app e FreeSWITCH Event Socket Layer (fsels) utilizza i messaggi tramite redis pubsub.

Architettura FsESL Akka

FreeSWITCH

Pensiamo che FreeSWITCH sia un software straordinario per la gestione dell'audio.

FreeSWITCH fornisce la funzionalità di conferenza vocale in BigBlueButton. Gli utenti possono partecipare alla conferenza vocale tramite l'auricolare. Gli utenti che si uniscono tramite Google Chrome o Mozilla Firefox possono usufruire di un audio di qualità superiore collegandosi tramite WebRTC. FreeSWITCH può anche essere integrato con i provider VOIP in modo che gli utenti che non sono in grado di accedere utilizzando l'auricolare possano chiamare utilizzando il proprio telefono.

Kurento e WebRTC-SFU

Kurento Media Server KMS è un media server che implementa sia i modelli SFU che MCU. KMS è responsabile per lo streaming di webcam, audio di solo ascolto e condivisione dello schermo. Il WebRTC-SFU funge da controller multimediale che gestisce le negoziazioni e gestisce i flussi multimediali.

Partecipazione a una conferenza vocale

Un utente può partecipare alla conferenza vocale (eseguita in FreeSWITCH) dal client HTML5 di BigBlueButton o tramite il telefono . Quando si unisce tramite il client, l'utente può scegliere di partecipare a Microfono o Solo ascolto e il client BigBlueButton effettuerà una connessione audio al server tramite WebRTC. WebRTC fornisce all'utente un audio di alta qualità con un ritardo inferiore.

Partecipazione alla conferenza vocale

Caricamento di una presentazione

Le presentazioni caricate passano attraverso un processo di conversione per essere visualizzate all'interno del client. Quando la presentazione caricata è un documento di Office, deve essere convertita in PDF utilizzando LibreOffice. Il documento PDF viene quindi convertito in grafica vettoriale scalabile (SVG) tramite bbb-web.

Caricamento della presentazione

Il processo di conversione invia messaggi di avanzamento al client tramite il pubsub di Redis.

Flusso di conversione della presentazione

Il diagramma seguente descrive il flusso della conversione della presentazione. Prendiamo in considerazione la configurazione per abilitare e disabilitare la conversione SWF, SVG e PNG.

Flusso di conversione generale

Quindi sotto il flusso di conversione SVG. Copre il fallback della conversione. A volte rileviamo che il file SVG generato è pesante da caricare dal browser, utilizziamo il fallback per inserire un'immagine rasterizzata all'interno del file SVG e rendere il suo caricamento leggero per il browser.

Flusso di conversione SVG

Connessioni di rete interne

Il diagramma seguente mostra come i vari componenti di BigBlueButton si collegano tra loro tramite prese.

Le connessioni di rete