Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fusion eXchange Protocol (FXP) Version 0.1 #1

Open
orso82 opened this issue Feb 10, 2024 · 0 comments
Open

Fusion eXchange Protocol (FXP) Version 0.1 #1

orso82 opened this issue Feb 10, 2024 · 0 comments

Comments

@orso82
Copy link
Member

orso82 commented Feb 10, 2024

Efficient brokering of data between processes, is something that the internet giants have figured out. Different tools, but we chose to rely on REDIS.

REDIS (REmote DIctionary Server):

  • High Performance (operates in-memory) <1ms latency when run locally
  • Support large data volumes (<512 MB per message)
  • Distributed (ie. not geo-located)
  • Versatility of data structures (lists, queues, streams, timeseries,...) with atomic operations
  • Pub/Sub System
  • Synchronous / Asynchronous communication patterns
  • Supports multiple producers / consumers pattern
  • Horizontal and vertical scalability
  • Multi-language client libraries and open protocol
  • Used by Twitter, GitHub, Snapchat, Airbnb, Netflix
  • In comparison to other tools:
    • Unlike Memcached, REDIS supports a wider range of data structures and persistence.
    • While Kafka and RabbitMQ are more focused on message queuing and streaming, REDIS offers these capabilities along with its role as a data store and cache.
    • Compared to database services like DynamoDB, REDIS can serve as a more immediate, low-latency layer for data access and manipulation.
    • Unlike Hazelcast and etcd, which are more focused on distributed computing and configuration management respectively, REDIS offers a more general-purpose approach with its data structure support and performance.

Vision

  • To be used by FUSE for:
    1. plant/controller co-simulation
    2. execute IMAS actors (simpler/better solution of MUSCLE3)

FXP Version 0.1

  • [N-to-1 synchronous]
    • N service requestors
    • 1 service provider
    • synchronous communication
sequenceDiagram
    autonumber
    actor FUSE
    participant REDIS
    actor TokSys as Service Provider

    rect rgb(255, 191, 223)
        TokSys--)REDIS: Register service X (subscribe to channel X)
    end
    
    rect rgb(255, 191, 223)
        FUSE-->REDIS: Is service X available? (pubsub channels)
        FUSE--)TokSys: publish FUSE session ID to channel X
    end
    
    loop
        rect rgb(191, 223, 255)
            FUSE->>+REDIS: lpush service inputs
            note over REDIS: ID__X__fuse2srvc
            REDIS->>-TokSys: brpop service inputs
        end
        rect rgb(191, 223, 255)
            TokSys->>+REDIS: lpush service outputs
            note over REDIS: ID__X__srvc2fuse
            REDIS->>-FUSE: brpop service outputs
        end
    end
Loading
@orso82 orso82 changed the title Fusion eXchange Protocol (FXP) Fusion eXchange Protocol (FXP) Version 0.1 Feb 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant