Skip to content

Instantly share code, notes, and snippets.

@hunterjsb
Last active December 16, 2024 22:50
Show Gist options
  • Select an option

  • Save hunterjsb/572f8e3b66dde9551e3fa3652f6b40b7 to your computer and use it in GitHub Desktop.

Select an option

Save hunterjsb/572f8e3b66dde9551e3fa3652f6b40b7 to your computer and use it in GitHub Desktop.

Data Persistence Model

  • shard & replicate at Redis level
  • horizontially scale rpc servers
flowchart TB
    subgraph "Device 1"
        C1[Client] --> R1[RPC Server]
        subgraph "RESP Replica Set 1"
            RS1-1[RESP Node 1] <--> RS1-2[RESP Node 2]
            RS1-2 <--> RS1-3[RESP Node 3]
            RS1-3 <--> RS1-1
        end
        R1 --> RS1-1
    end
    
    subgraph "Device 2"
        C2[Client] --> R2[RPC Server]
        subgraph "RESP Replica Set 2"
            RS2-1[RESP Node 1] <--> RS2-2[RESP Node 2]
            RS2-2 <--> RS2-3[RESP Node 3]
            RS2-3 <--> RS2-1
        end
        R2 --> RS2-1
    end
    
    subgraph "Device 3"
        C3[Client] --> R3[RPC Server]
        subgraph "RESP Replica Set 3"
            RS3-1[RESP Node 1] <--> RS3-2[RESP Node 2]
            RS3-2 <--> RS3-3[RESP Node 3]
            RS3-3 <--> RS3-1
        end
        R3 --> RS3-1
    end
    
    C1 -.-> R2
    C1 -.-> R3
    C2 -.-> R1
    C2 -.-> R3
    C3 -.-> R1
    C3 -.-> R2
Loading

Starting a cluster

# Device 1 (Primary)
$ tritium --resp-port=6379 --rpc-port=8080 --is-master=true --replica-addrs=localhost:6380,localhost:6381

# Device 2 (Replica)
$ tritium --resp-port=6380 --rpc-port=8081 --is-master=false

# Device 3 (Replica)
$ tritium --resp-port=6381 --rpc-port=8082 --is-master=false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment