2.1 KiB
2.1 KiB
Architecture of the rhailib_worker
Crate
The rhailib_worker
crate implements a distributed task execution system for Rhai scripts, providing scalable, reliable script processing through Redis-based task queues. Workers are decoupled from contexts, allowing a single worker to process tasks for multiple contexts (circles).
Core Architecture
graph TD
A[Worker Process] --> B[Task Queue Processing]
A --> C[Script Execution Engine]
A --> D[Result Management]
B --> B1[Redis Queue Monitoring]
B --> B2[Task Deserialization]
B --> B3[Priority Handling]
C --> C1[Rhai Engine Integration]
C --> C2[Context Management]
C --> C3[Error Handling]
D --> D1[Result Serialization]
D --> D2[Reply Queue Management]
D --> D3[Status Updates]
Key Components
Task Processing Pipeline
- Queue Monitoring: Continuous Redis queue polling for new tasks
- Task Execution: Secure Rhai script execution with proper context
- Result Handling: Comprehensive result and error management
Engine Integration
- Rhailib Engine: Full integration with rhailib_engine for DSL access
- Context Injection: Proper authentication and database context setup
- Security: Isolated execution environment with access controls
Scalability Features
- Horizontal Scaling: Multiple worker instances for load distribution
- Queue-based Architecture: Reliable task distribution via Redis
- Fault Tolerance: Robust error handling and recovery mechanisms
Dependencies
- Redis Integration: Task queue management and communication
- Rhai Engine: Script execution with full DSL capabilities
- Client Integration: Shared data structures with rhai_dispatcher
- Heromodels: Database and business logic integration
- Async Runtime: Tokio for high-performance concurrent processing
Deployment Patterns
Workers can be deployed as standalone processes, containerized services, or embedded components, providing flexibility for various deployment scenarios from development to production.