Home
Distributed and decentralized MonitorAnalyzePlanExecute-Knowledge loops framework
Framework to support the development and deployment of Autonomous (Self-Adaptive) Systems
- Source Code: https://github.com/elbowz/PyMAPE
- Documentation: https://elbowz.github.io/PyMAPE - WIP
Requirements¶
- Python 3.8+
- RxPY
- PyYAML
- AIOHTTP
- FastAPI
- Uvicorn
- Redis-purse
- Influxdb-client
Key features¶
- CONTAINMENT
Reuse, modularity and isolation of MAPE components as first-class entity. - COMMUNICATION INTERFACE (STANDARDIZATION)
Shared interface between components that allow stream communication, filtering, pre/post processing, data exchange communication and routing. - DISTRIBUTION
Multi-device distribution of MAPE loops and components. - DECENTRALIZED PATTERNS
Flat p2p and/or hierarchical architectures of loops and components with concerns separation. Allowing runtime pattern reconfiguration (stopping/starting, (un)linking, adding/removing). - NETWORK COMMUNICATION PARADIGMS
Different paradigms (blackboard, direct message) and protocols for various patterns interactions. - STATE / KNOWLEDGE
Distributed multi-scope (global, level, loop) Knowledge with partitioning and/or (full/partial async) replication.
Paradigms and tools¶
- REACTIVE SYSTEM/PROGRAMMING AND STREAM
System reactive to external event. Pillars: Responsive, Resilient, Elastic and Message Driven. Specific case of event-driven programming to avoid callback hell. - REACTIVEX (OBSERVER PATTERN)
Observables represent a source of events. An observer subscribes to an observable to receive items emitted (Hot, Cold, Subject,etc). Pipe operators modify streams flowing through them. - ASYNCHRONOUS PROGRAMMING
Manage (I/O bound) tasks concurrency with non-blocking I/O operations. - REDIS, IN-MEMORY DATA STRUCTURE SERVER
Distributed, in-memory key-value data structure (strings, hashes, lists, (ordered) sets, queue, lock) store, cache and message broker with keyspace notifications. Partitioning and/or (full/partial async) replication.
Tip
If you already know what is a Self-Adaptive system, a MAPE-K loop and related patterns, jump to: