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:
