|
93 | 93 | "The framework offers a flexible configuration system, allowing users to customize various parameters such as timeouts, retry intervals, and buffer sizes. This adaptability helps in optimizing the performance according to specific requirements.\n", |
94 | 94 | "\n", |
95 | 95 | "**Logging and Monitoring:**\n", |
96 | | - "Comprehensive logging and monitoring capabilities are integrated into the framework, providing real-time insights into the network activity and performance metrics. This aids in troubleshooting and maintaining the health of the system.\n" |
| 96 | + "Comprehensive logging and monitoring capabilities are integrated into the framework, providing real-time insights into the network activity and performance metrics. This aids in troubleshooting and maintaining the health of the system.\n", |
| 97 | + "\n", |
| 98 | + "**File Streaming and Transfer:**\n", |
| 99 | + "ChaskiStreamer includes helpers to send files in chunks through the network using `push_file` and to accept incoming files when `allow_incoming_files` is enabled. This facilitates distributing large payloads without blocking the event loop.\n", |
| 100 | + "\n", |
| 101 | + "**Persistent Storage:**\n", |
| 102 | + "Nodes can store key/value pairs using an SQLite-backed `PersistentStorage`. Data can be requested or served to peers with the `ChaskiStorageRequest` message type.\n", |
| 103 | + "\n", |
| 104 | + "**Synchronous Interface:**\n", |
| 105 | + "`ChaskiStreamerSync` wraps the asynchronous streamer in a dedicated thread, offering a blocking API that integrates with traditional synchronous code bases.\n", |
| 106 | + "\n", |
| 107 | + "**Celery Integration:**\n", |
| 108 | + "The package ships with a custom Kombu transport (`chaski.utils.transport`) so Chaski can act as a Celery broker or backend.\n", |
| 109 | + "\n", |
| 110 | + "**Message Pool with TTL:**\n", |
| 111 | + "Each node keeps a bounded pool of recently processed messages. This avoids processing duplicates and provides a configurable time-to-live for cached entries." |
97 | 112 | ] |
98 | 113 | }, |
99 | 114 | { |
|
108 | 123 | "The Chaski_ Node is an essential component of the Chaski-Confluent system. It is responsible for initiating and managing\n", |
109 | 124 | "network communication between distributed nodes. This class handles functions such as connection establishment,\n", |
110 | 125 | "message passing, node discovery, and pairing based on shared subscriptions.\n", |
| 126 | + "Nodes keep track of their connections as \"edges\" where latency information and\n", |
| 127 | + "subscription data are stored. Each node can propagate received messages to its\n", |
| 128 | + "peers and caches recent messages in a bounded pool to avoid processing\n", |
111 | 129 | "\n", |
112 | 130 | "### Chaski Streamer\n", |
113 | 131 | "\n", |
114 | 132 | "The Chaski-Streamer extends the functionality of Chaski-Node by introducing asynchronous message streaming capabilities.\n", |
115 | 133 | "It sets up an internal message queue to manage incoming messages, allowing efficient and scalable message processing within a distributed environment.\n", |
116 | 134 | "The ChaskiStreamer can enter an asynchronous context, enabling the user to stream messages using the `async with` statement.\n", |
117 | | - "This allows for handling messages dynamically as they arrive, enhancing the responsiveness and flexibility of the system.\n", |
| 135 | + "This allows for handling messages dynamically as they arrive, enhancing the\n", |
| 136 | + "responsiveness and flexibility of the system. The streamer also supports\n", |
| 137 | + "chunked file transfer via `push_file` and can store temporary results in a\n", |
| 138 | + "`PersistentStorage` database. When synchronous behaviour is required,\n", |
| 139 | + "`ChaskiStreamerSync` exposes the same API from a background thread.\n", |
118 | 140 | "\n", |
119 | 141 | "### Chaski Remote\n", |
120 | 142 | "\n", |
121 | 143 | "The Chaski-Remote class enhances the Chaski-Node functionality by enabling remote method invocation and interaction\n", |
122 | 144 | "across distributed nodes. It equips nodes with the ability to communicate transparently, invoking methods and accessing\n", |
123 | 145 | "attributes on remote objects as if they were local. This is achieved by utilizing the Proxy class, which wraps around\n", |
124 | | - "the remote objects and provides a clean interface for method calls and attribute access.\n" |
| 146 | + "the remote objects and provides a clean interface for method calls and attribute access.\n", |
| 147 | + "The remote node verifies module availability through a lightweight UDP check\n", |
| 148 | + "before the proxy is returned, ensuring that requested services are reachable." |
125 | 149 | ] |
126 | 150 | }, |
127 | 151 | { |
|
163 | 187 | "security layer. This ensures that all communication between nodes is encrypted and authenticated,\n", |
164 | 188 | "significantly reducing the risk of data breaches or unauthorized access.\n" |
165 | 189 | ] |
| 190 | + }, |
| 191 | + { |
| 192 | + "metadata": {}, |
| 193 | + "cell_type": "markdown", |
| 194 | + "source": [ |
| 195 | + "## Celery Transport and CLI Utilities\n", |
| 196 | + "\n", |
| 197 | + "Chaski includes a custom Kombu transport so it can be used as a Celery broker.\n", |
| 198 | + "The `ChaskiChannel` class relies on `ChaskiStreamerSync` to publish and consume\n", |
| 199 | + "tasks through the topic ``celery_tasks``. Several command line scripts under\n", |
| 200 | + "`chaski/scripts/` make it easy to start a streamer root, a remote proxy or a\n", |
| 201 | + "certificate authority from the shell.\n" |
| 202 | + ], |
| 203 | + "id": "f866782a2808b6e8" |
166 | 204 | } |
167 | 205 | ], |
168 | 206 | "metadata": { |
|
0 commit comments