1. Architecture Overview (ะะณะปัะด ะฐัั ััะตะบัััะธ)¶
๐๏ธ ะะธัะพะบะพััะฒะฝะตะฒะฐ ะดัะฐะณัะฐะผะฐ ัะธััะตะผะธ¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GraphCrawler Architecture โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ API LAYER (Presentation) โ โ
โ โ โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ
โ โ โ crawl() โ โasync_crawl()โ โ Crawler โ โ AsyncCrawler โ โ โ
โ โ โ (sync) โ โ (async) โ โ (context mgr)โ โ (async ctx) โ โ โ
โ โ โโโโโโฌโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ โ
โ โ โ โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ APPLICATION LAYER (Use Cases) โ โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Spider โ โ Scheduler โ โ LinkProcessor โ โ NodeScanner โ โ โ
โ โ โ โ โ (Queue + URL โ โ (Link Extract)โ โ (HTML Parse) โ โ โ
โ โ โ Orchestr.โ โ Rules) โ โ โ โ โ โ โ
โ โ โโโโโโฌโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โ โ
โ โ โ โ โ โ โ โ
โ โ โโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโดโโโโโ โ โ
โ โ โ SERVICES & FACTORIES โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ โ โ โ
โ โ โ โ DriverFactory โ โ StorageFactory โ โ ApplicationCont.โ โ โ โ
โ โ โ โ (OCP Registry) โ โ (OCP Registry) โ โ (DI Container) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ DOMAIN LAYER (Core) โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ ENTITIES โ โ โ
โ โ โ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ Node โ โ Edge โ โ Graph โ โ GraphOperations โ โ โ โ
โ โ โ โ(Pydanti)โ โ(Pydant)โ โ(Manager)โ โ GraphStatistics โ โ โ โ
โ โ โ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ VALUE OBJECTS โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ URLRule โ โ FetchResponseโ โ CrawlerConfig โ โ โ โ
โ โ โ โ (Filtering) โ โ (HTTP Result)โ โ (Settings) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ INTERFACES (Protocols) โ โ โ
โ โ โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ IDriver โ โIStorage โ โ IFilter โ โ IEventBus โ โ โ โ
โ โ โ โ(Fetch) โ โ(Save/Load)โ โ (URL Rule)โ โ (Observer) โ โ โ โ
โ โ โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ EVENTS (Event-Driven) โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ EventType โ โ CrawlerEventโ โ EventBus (Observer Pattern)โโ โ โ
โ โ โ โ (50+ types) โ โ (Data Model)โ โ (Pub/Sub) โโ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ INFRASTRUCTURE LAYER โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ TRANSPORT (Drivers) โ โ PERSISTENCE (Storage) โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ HTTPDriver โ โ โ โMemoryStorage โ โ JSONStorage โ โ โ โ
โ โ โ โ (aiohttp) โ โ โ โ (<1K nodes) โ โ (<10K nodes) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโค โ โ โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ AsyncDriver โ โ โ โ SQLiteStorageโ โ PostgreSQL โ โ โ โ
โ โ โ โ (concurrent) โ โ โ โ (<100K nodes)โ โ (100K+) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโค โ โ โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ Playwright โ โ โ โ MongoDB โ โ AutoStorage โ โ โ โ
โ โ โ โ (JS Rendering)โ โ โ โ (100K+) โ โ (Auto-scale) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ ADAPTERS โ โ MESSAGING (Distributed) โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ BeautifulSoup โ โ โ โ Celery App โ โ CelerySpider โ โ โ โ
โ โ โ โ Adapter โ โ โ โ (Task Queue) โ โ (Distributed)โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโค โ โ โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ lxml Adapter โ โ โ โ Redis Broker โ โ EasyDist โ โ โ โ
โ โ โ โ (Fast Parse) โ โ โ โ โ โ Crawler โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ EXTENSIONS LAYER โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ PLUGINS (Node Processing) โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ Metadata โ โ Links โ โ Content Extractors โ โ โ โ
โ โ โ โ Extractor โ โ Extractor โ โ (Goose3, Newspaper...) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ Phone โ โ Email โ โ Price Extractor โ โ โ โ
โ โ โ โ Extractor โ โ Extractor โ โ โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ Vectorizer โ โ Text โ โ Custom Plugins โ โ โ โ
โ โ โ โ (Embeddings)โ โ Extractor โ โ (User Defined) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ MIDDLEWARE (Request/Response) โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ RateLimit โ โ Retry โ โ Cache Middleware โ โ โ โ
โ โ โ โ Middleware โ โ Middleware โ โ โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ Proxy โ โ UserAgent โ โ Robots.txt Middleware โ โ โ โ
โ โ โ โ Rotation โ โ Rotation โ โ โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ โ
โ โ โ โ Error โ โ Logging โ โ MiddlewareChain โ โ โ โ
โ โ โ โ Recovery โ โ Middleware โ โ (Orchestrator) โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ ะะฟะธั ัะฐััะฒ (Layers)¶
1. API Layer (Presentation)¶
ะัะดะฟะพะฒัะดะฐะปัะฝัััั: ะัะฑะปััะฝะธะน ัะฝัะตััะตะนั ะดะปั ะบะพัะธัััะฒะฐััะฒ ะฑัะฑะปัะพัะตะบะธ
| ะะพะผะฟะพะฝะตะฝั | ะัะธะทะฝะฐัะตะฝะฝั |
|---|---|
crawl() | ะกะธะฝั ัะพะฝะฝะฐ ััะฝะบััั ะดะปั ะฟัะพััะพะณะพ ััะฐััั |
async_crawl() | ะัะธะฝั ัะพะฝะฝะฐ ััะฝะบััั ะดะปั async ะบะพะฝัะตะบััั |
Crawler | Context manager ะดะปั reusable ะบัะฐัะปัะฝะณั |
AsyncCrawler | Async context manager ะดะปั ะฟะฐัะฐะปะตะปัะฝะพะณะพ ะบัะฐัะปัะฝะณั |
2. Application Layer (Use Cases)¶
ะัะดะฟะพะฒัะดะฐะปัะฝัััั: ะัะทะฝะตั-ะปะพะณัะบะฐ ัะฐ ะพัะบะตัััะฐััั ะฟัะพัะตัั ะบัะฐัะปัะฝะณั
| ะะพะผะฟะพะฝะตะฝั | ะัะธะทะฝะฐัะตะฝะฝั |
|---|---|
Spider | ะัะฝะพะฒะฝะธะน ะพัะบะตัััะฐัะพั ะฟัะพัะตัั ะบัะฐัะปัะฝะณั |
Scheduler | ะฃะฟัะฐะฒะปัะฝะฝั ัะตัะณะพั URL ัะฐ ะฟััะพัะธัะตัะฐะผะธ |
LinkProcessor | ะะฑัะพะฑะบะฐ ัะฐ ััะปัััะฐััั ะทะฝะฐะนะดะตะฝะธั ะฟะพัะธะปะฐะฝั |
NodeScanner | ะกะบะฐะฝัะฒะฐะฝะฝั ะฒัะทะปัะฒ ัะฐ ะฟะฐััะธะฝะณ HTML |
DriverFactory | ะคะฐะฑัะธะบะฐ ะดะปั ััะฒะพัะตะฝะฝั ะดัะฐะนะฒะตััะฒ (OCP) |
StorageFactory | ะคะฐะฑัะธะบะฐ ะดะปั ััะฒะพัะตะฝะฝั ัั ะพะฒะธั (OCP) |
3. Domain Layer (Core Business Logic)¶
ะัะดะฟะพะฒัะดะฐะปัะฝัััั: ะัะทะฝะตั-ัััะฝะพััั ัะฐ ะฟัะฐะฒะธะปะฐ ะดะพะผะตะฝั
| ะัะดัะฐั | ะะพะผะฟะพะฝะตะฝัะธ |
|---|---|
| Entities | Node, Edge, Graph, GraphOperations, GraphStatistics |
| Value Objects | URLRule, FetchResponse, CrawlerConfig, NodeLifecycle |
| Interfaces | IDriver, IStorage, IFilter, IEventBus (Protocols) |
| Events | EventType, CrawlerEvent, EventBus (Observer Pattern) |
4. Infrastructure Layer¶
ะัะดะฟะพะฒัะดะฐะปัะฝัััั: ะขะตั ะฝััะฝั ะดะตัะฐะปั ัะตะฐะปัะทะฐััั
| ะัะดัะฐั | ะะพะผะฟะพะฝะตะฝัะธ |
|---|---|
| Transport | HTTPDriver, AsyncDriver, PlaywrightDriver, StealthDriver |
| Persistence | MemoryStorage, JSONStorage, SQLiteStorage, PostgreSQL, MongoDB |
| Adapters | BeautifulSoupAdapter, lxmlAdapter, ScrapyAdapter |
| Messaging | Celery App, CelerySpider, EasyDistributedCrawler |
5. Extensions Layer¶
ะัะดะฟะพะฒัะดะฐะปัะฝัััั: ะ ะพะทัะธัะตะฝะฝั ะฑะฐะทะพะฒะพั ััะฝะบััะพะฝะฐะปัะฝะพััั
| ะัะดัะฐั | ะะพะผะฟะพะฝะตะฝัะธ |
|---|---|
| Plugins | MetadataExtractor, LinkExtractor, PhoneExtractor, EmailExtractor, Vectorizer |
| Middleware | RateLimitMiddleware, RetryMiddleware, ProxyMiddleware, CacheMiddleware |
๐ฏ ะัะฝะพะฒะฝั ะฐัั ััะตะบัััะฝั ะฟัะธะฝัะธะฟะธ¶
1. Event-Driven Architecture¶
โโโโโโโโโโโโโโโโ publish โโโโโโโโโโโโโโโโ subscribe โโโโโโโโโโโโโโโโ
โ Spider โโโโโโโโโโโโโโโโโโถโ EventBus โโโโโโโโโโโโโโโโโโโ Dashboard โ
โ (Producer) โ โ (Observer) โ โ (Consumer) โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ
โ notify
โผ
โโโโโโโโโโโโโโโโ
โ Loggers โ
โ Analytics โ
โ Monitors โ
โโโโโโโโโโโโโโโโ
50+ ัะธะฟัะฒ ะฟะพะดัะน ะดะปั ะผะพะฝััะพัะธะฝะณั ัะฐ ัะตะฐะบััั: - Node events: NODE_CREATED, NODE_SCANNED, NODE_FAILED - Crawler events: CRAWL_STARTED, CRAWL_COMPLETED - Middleware events: RATE_LIMIT_WAIT, PROXY_SELECTED - Storage events: GRAPH_SAVED, GRAPH_LOADED
2. Plugin-Based Architecture¶
โโโโโโโโโโโโโโโโโโโโโโโ
โ NodePluginManager โ
โ (Coordinator) โ
โโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ON_NODE_CREATED โ โ ON_HTML_PARSED โ โ ON_AFTER_SCAN โ
โ Plugins โ โ Plugins โ โ Plugins โ
โ โ โ โ โ โ
โ โข URL Analysis โ โ โข Metadata โ โ โข Vectorizer โ
โ โข should_scan โ โ โข Links โ โ โข Stats Export โ
โ โข Priority โ โ โข Phone/Email โ โ โข Analytics โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
3. Modular Architecture¶
ะัะธะฝัะธะฟ: "ะัะต ั ะผะพะดัะปะตะผ - ะดัะฐะนะฒะตั, storage, ะฟะปะฐะณัะฝ"
# ะะพะถะตะฝ ะบะพะผะฟะพะฝะตะฝั ะผะพะถะฝะฐ ะทะฐะผัะฝะธัะธ
graph = crawl(
"https://example.com",
driver="playwright", # ะะฐะผัะฝะฝะธะน ะดัะฐะนะฒะตั
storage="sqlite", # ะะฐะผัะฝะฝะธะน storage
plugins=[CustomPlugin()], # ะะฐััะพะผะฝั ะฟะปะฐะณัะฝะธ
url_rules=[URLRule(...)], # URL ะฟัะฐะฒะธะปะฐ
)
4. Distributed-Capable Architecture¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DISTRIBUTED TOPOLOGY โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Coordinator โโโโโโโโโโโถโ Redis/RabbitMQ โ โ
โ โ (Master) โ โ (Message Broker) โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโฌโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ โ Worker 1 โ โ Worker 2 โ โ Worker N โ
โ โ (Celery) โ โ (Celery) โ โ (Celery) โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโ โ
โ โ MongoDB/PostgreSQLโ โ
โ โ (Result Storage) โ โ
โ โโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ SOLID Principles Implementation¶
| ะัะธะฝัะธะฟ | ะ ะตะฐะปัะทะฐััั |
|---|---|
| Single Responsibility | ะะพะถะตะฝ ะบะปะฐั ะผะฐั ะพะดะฝั ะฒัะดะฟะพะฒัะดะฐะปัะฝัััั (Node, Edge, Graph ะพะบัะตะผะพ) |
| Open/Closed | Registry Pattern ะดะปั ะดัะฐะนะฒะตััะฒ ัะฐ storage (ะผะพะถะฝะฐ ะดะพะดะฐะฒะฐัะธ ะฑะตะท ะทะผัะฝะธ ะบะพะดั) |
| Liskov Substitution | Protocols (IDriver, IStorage) ะณะฐัะฐะฝััััั ะฒะทะฐัะผะพะทะฐะผัะฝะฝัััั |
| Interface Segregation | IStorageReader, IStorageWriter, IStorageLifecycle |
| Dependency Inversion | ะะฐะปะตะถะฝัััั ะฒัะด ะฐะฑัััะฐะบััะน (Protocols), ะฝะต ะฒัะด ะบะพะฝะบัะตัะฝะธั ะบะปะฐััะฒ |
๐ ะะฐะฒัะณะฐััั ะฟะพ ะดะพะบัะผะตะฝัะฐััั¶
| # | ะะพะบัะผะตะฝั | ะะฟะธั | ะัะดะธัะพััั |
|---|---|---|---|
| 1 | Architecture Overview | ะะพัะพัะฝะธะน ะดะพะบัะผะตะฝั | ะัั ััะตะบัะพัะธ, Senior Dev |
| 2 | Layer Specification | ะะตัะฐะปัะฝะฐ ัะฟะตัะธััะบะฐััั ัะฐััะฒ | Middle/Senior Dev |
| 3 | Component Catalog | ะะฐัะฐะปะพะณ ะบะพะผะฟะพะฝะตะฝััะฒ | All Developers |
| 4 | Communication Channels | ะะฐะฝะฐะปะธ ะบะพะผัะฝัะบะฐััั | Middle/Senior Dev |
| 5 | Plugin System | ะกะธััะตะผะฐ ะฟะปะฐะณัะฝัะฒ | All Developers |
| 6 | Extension Points | ะขะพัะบะธ ัะพะทัะธัะตะฝะฝั | Middle/Senior Dev |
| 7 | Factory & Lifecycle | ะคะฐะฑัะธะบะธ ัะฐ ะถะธัััะฒะธะน ัะธะบะป | Middle/Senior Dev |
| - | API Reference | ะัะฑะปััะฝะต API | All Developers |