iggy icon indicating copy to clipboard operation
iggy copied to clipboard

Mental Model for Iggy New Contributors

Open happycoder0011 opened this issue 3 weeks ago • 3 comments

Can we have something like below in the contributor document for faster onboarding :

Module Architecture

graph LR
    CORE[core/]
    
    SERVER[server/]
    STREAMING[streaming/]
    BINARY[binary_protocol/]
    SDK[sdk/]
    COMMON[common/]
    CLI[cli/]
    
    QUIC[quic/]
    TCP[tcp/]
    HTTP[http/]
    BENCH[benchmark/]
    STATE[state/]
    
    MODELS[models/]
    STORAGE[storage/]
    CACHE[cache/]
    USERS[users/]
    PAT[tokens/]
    SYSTEM[system/]
    
    CODEC[codec/]
    SERVER_P[server/]
    CLIENT_P[client/]
    
    CLIENT[client/]
    UTILS[utils/]
    
    BASE64[base64/]
    COMP[compression/]
    CRYPTO[crypto/]
    VALID[validation/]
    
    %% Core structure - left to right hierarchy
    CORE --> SERVER
    CORE --> STREAMING
    CORE --> BINARY
    CORE --> SDK
    CORE --> COMMON
    CORE --> CLI
    
    %% Server modules
    SERVER --> QUIC
    SERVER --> TCP
    SERVER --> HTTP
    SERVER --> BENCH
    SERVER --> STATE
    
    %% Streaming modules
    STREAMING --> MODELS
    STREAMING --> STORAGE
    STREAMING --> CACHE
    STREAMING --> USERS
    STREAMING --> PAT
    STREAMING --> SYSTEM
    
    %% Binary protocol
    BINARY --> CODEC
    BINARY --> SERVER_P
    BINARY --> CLIENT_P
    
    %% SDK
    SDK --> CLIENT
    SDK --> UTILS
    
    %% Common
    COMMON --> BASE64
    COMMON --> COMP
    COMMON --> CRYPTO
    COMMON --> VALID

Mermaid 1

flowchart TD
    IGGY_SERVER[IGGY SERVER]
    
    QUIC[QUIC Server<br/>Port 8080]
    TCP[TCP Server<br/>Port 8090]
    HTTP[HTTP Server<br/>Port 3000]
    
    MESSAGE_PROCESSOR[MESSAGE PROCESSOR CORE]
    AUTH[Auth & Permissions]
    RATE_LIMIT[Rate Limit Manager]
    VALIDATOR[Message Validator]
    
    STREAMING_ENGINE[STREAMING ENGINE]
    STREAM_MGR[Stream Manager]
    PARTITION_MGR[Partition Manager]
    SEGMENT_MGR[Segment Manager]
    
    STORAGE_LAYER[STORAGE LAYER]
    MESSAGE_LOG[Message Log]
    INDEX_FILES[Index Files]
    CACHE_MGR[Cache Manager]
    
    RUST_SDK[Rust SDK]
    CSHARP_SDK[C#/.NET SDK]
    JAVA_SDK[Java SDK]
    PYTHON_SDK[Python SDK]
    NODE_SDK[Node.js SDK]
    GO_SDK[Go SDK]
    
    %% Client Connections
    RUST_SDK --> QUIC
    CSHARP_SDK --> TCP
    JAVA_SDK --> HTTP
    PYTHON_SDK --> QUIC
    NODE_SDK --> TCP
    GO_SDK --> HTTP
    
    %% Server Flow
    QUIC --> MESSAGE_PROCESSOR
    TCP --> MESSAGE_PROCESSOR
    HTTP --> MESSAGE_PROCESSOR
    
    MESSAGE_PROCESSOR --> AUTH
    MESSAGE_PROCESSOR --> RATE_LIMIT
    MESSAGE_PROCESSOR --> VALIDATOR
    MESSAGE_PROCESSOR --> STREAMING_ENGINE
    
    STREAMING_ENGINE --> STREAM_MGR
    STREAMING_ENGINE --> PARTITION_MGR
    STREAMING_ENGINE --> SEGMENT_MGR
    STREAMING_ENGINE --> STORAGE_LAYER
    
    STORAGE_LAYER --> MESSAGE_LOG
    STORAGE_LAYER --> INDEX_FILES
    STORAGE_LAYER --> CACHE_MGR

mermaid 2

flowchart TD
    %% Client Request Flow - Horizontal
    subgraph CLIENT_REQUEST_FLOW[Client Request Flow]
        direction LR
        CLIENT[Client] --> PROTO_HANDLER[Protocol Handler]
        PROTO_HANDLER --> MSG_PROCESSOR[Message Processor]
        MSG_PROCESSOR --> AUTH_FLOW[Auth & Permissions]
        MSG_PROCESSOR --> STREAM_ENGINE[Streaming Engine]
        AUTH_FLOW --> RATE_LIMIT_FLOW[Rate Limit Manager]
        STREAM_ENGINE --> STORAGE_FLOW[Storage Layer]
        STORAGE_FLOW --> DISK_STORAGE[Disk Storage]
    end

    %% Message Write Flow - Horizontal
    subgraph MESSAGE_WRITE_FLOW[Message Write Flow]
        direction LR
        PRODUCER[Producer] --> PROTO_HANDLER_W[Protocol Handler]
        PROTO_HANDLER_W --> VALIDATOR_W[Message Validator]
        VALIDATOR_W --> PARTITION_MGR_W[Partition Manager]
        PARTITION_MGR_W --> SEGMENT_MGR_W[Segment Manager]
        SEGMENT_MGR_W --> MESSAGE_LOG_W[Message Log<br/>Append-only]
    end

    %% Message Read Flow - Horizontal
    subgraph MESSAGE_READ_FLOW[Message Read Flow]
        direction LR
        CONSUMER[Consumer] --> PROTO_HANDLER_R[Protocol Handler]
        PROTO_HANDLER_R --> OFFSET_RESOLVER[Offset Resolver]
        OFFSET_RESOLVER --> SEGMENT_MGR_R[Segment Manager]
        SEGMENT_MGR_R --> CACHE_READ[Message Cache & Index Files]
        CACHE_READ --> MESSAGE_LOG_R[Message Log<br/>Sequential]
    end

    %% Stack the horizontal flows vertically
    CLIENT_REQUEST_FLOW --> MESSAGE_WRITE_FLOW
    MESSAGE_WRITE_FLOW --> MESSAGE_READ_FLOW 

mermaid 3

flowchart TB
    subgraph PROTOCOL_ARCH[Protocol Architecture]
        PROTOCOL_LAYER[Protocol Layer]
        QUIC_PROTO[QUIC<br/>Modern, UDP]
        TCP_PROTO[TCP<br/>Binary, Fast]
        HTTP_PROTO[HTTP<br/>REST, Web UI]
        
        BINARY_CORE[Binary Protocol Core]
        COMMANDS[Commands Ops]
        RESPONSES[Responses Results]
        FRAMES[Message Frames<br/>Data Transfer]
        
        SERIALIZATION[Serialization Layer]
        BINCODE[Bincode Primary]
        POSTCARD[Postcard Fallback]
        SIMD_JSON[SIMD-JSON HTTP only]
        
        PROTOCOL_LAYER --> QUIC_PROTO
        PROTOCOL_LAYER --> TCP_PROTO
        PROTOCOL_LAYER --> HTTP_PROTO
        QUIC_PROTO --> BINARY_CORE
        TCP_PROTO --> BINARY_CORE
        HTTP_PROTO --> BINARY_CORE
        BINARY_CORE --> COMMANDS
        BINARY_CORE --> RESPONSES
        BINARY_CORE --> FRAMES
        BINARY_CORE --> SERIALIZATION
        SERIALIZATION --> BINCODE
        SERIALIZATION --> POSTCARD
        SERIALIZATION --> SIMD_JSON
    end
    
    subgraph STORAGE_ARCH[Storage Architecture]
        STREAM[Stream<br/>Tenant/Use Case]
        TOPIC[Topic<br/>Message Category]
        PARTITION1[Partition 1<br/>Parallel Processing]
        PARTITION2[Partition 2]
        PARTITION3[Partition 3]
        
        STREAM_DIR[Stream Directory<br/>/data/streams/stream_id/topics/topic_id/partitions/]
        PARTITION_DIR[partition_1/]
        SEGMENT_LOG[segment_1.log<br/>Message data]
        SEGMENT_IDX[segment_1.idx<br/>Index file]
        SEGMENT_TMS[segment_1.tms<br/>Timestamp index]
        
        STREAM --> TOPIC
        TOPIC --> PARTITION1
        TOPIC --> PARTITION2
        TOPIC --> PARTITION3
        STREAM_DIR --> PARTITION_DIR
        PARTITION_DIR --> SEGMENT_LOG
        PARTITION_DIR --> SEGMENT_IDX
        PARTITION_DIR --> SEGMENT_TMS
    end
    
    subgraph SEGMENT_STRUCTURE[Segment Structure]
        SEGMENT_FILE[Segment File]
        MSG1[Message 1 + Headers]
        MSG2[Message 2 + Headers]
        MSG3[Message 3 + Headers]
        
        SEGMENT_FILE --> MSG1
        SEGMENT_FILE --> MSG2
        SEGMENT_FILE --> MSG3
    end

happycoder0011 avatar Nov 09 '25 13:11 happycoder0011