forked from lavina/lavina
Compare commits
2 Commits
cb958c1e65
...
40b9ffe46a
Author | SHA1 | Date |
---|---|---|
Nikita Vilunov | 40b9ffe46a | |
Nikita Vilunov | 65dc59a8b5 |
|
@ -0,0 +1,24 @@
|
|||
[telemetry]
|
||||
listen_on = "127.0.0.1:8080"
|
||||
|
||||
[irc]
|
||||
listen_on = "127.0.0.1:6667"
|
||||
server_name = "irc.localhost"
|
||||
|
||||
[xmpp]
|
||||
listen_on = "127.0.0.1:5222"
|
||||
cert = "./certs/xmpp.pem"
|
||||
key = "./certs/xmpp.key"
|
||||
hostname = "localhost"
|
||||
|
||||
[storage]
|
||||
db_path = "db.sqlite"
|
||||
|
||||
[cluster]
|
||||
addresses = []
|
||||
|
||||
[cluster.metadata]
|
||||
node_id = 0
|
||||
main_owner = 0
|
||||
test_owner = 0
|
||||
test2_owner = 0
|
|
@ -1,12 +1,12 @@
|
|||
//! Domain definitions and implementation of common chat logic.
|
||||
use crate::clustering::{ClusterConfig, LavinaClient};
|
||||
use std::sync::Arc;
|
||||
|
||||
use anyhow::Result;
|
||||
use prometheus::Registry as MetricsRegistry;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::Mutex;
|
||||
|
||||
use crate::auth::Authenticator;
|
||||
use crate::clustering::broadcast::Broadcasting;
|
||||
use crate::clustering::{ClusterConfig, LavinaClient};
|
||||
use crate::dialog::DialogRegistry;
|
||||
use crate::player::PlayerRegistry;
|
||||
use crate::repo::Storage;
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
## Step 1 – players and dialogs centralized, rooms distributed
|
||||
All players are located on the same node. The client traffic is terminated on the same node
|
||||
|
||||
Rooms and their history could be located on other nodes.
|
||||
|
||||
The membership data:
|
||||
- If the room and the player are located on the same node, it is on the same node and updated atomically.
|
||||
- If the room and the player are located on different nodes, the membership data is split into two parts:
|
||||
- The player-specific membership contains all data necessary to validate commands on the player's node side.
|
||||
It is located on the player's node.
|
||||
- The room-specific membership contains all data needed to respond to queries such as "list users".
|
||||
It is located on the room's node.
|
||||
|
||||
Dialogs and their history are located on the same node, as all players.
|
||||
|
||||
The allocation is specified statically in the configuration file.
|
||||
|
||||
## Step 2 – players and dialogs distributed
|
||||
Different players could be located on different nodes. The traffic is still terminated on the same node.
|
||||
A client must connect to the node which hosts the player, otherwise the connection is terminated.
|
||||
|
||||
Dialogs are located on the first player's node. This depends on how the first player is decided,
|
||||
which is implemented by sorting the players lexicographically.
|
||||
|
||||
The allocation is still specified statically in the configuration file.
|
||||
|
||||
## Step 3 – dynamic allocation and consensus
|
||||
|
||||
## Step 4 – all data replicated
|
||||
|
||||
## Step 5 – chat history fragmented
|
Loading…
Reference in New Issue