Tổng quan kiến trúc
DESearch là hệ thống tra cứu / xác minh thực thể (entity due-diligence) tại Úc. Client gửi yêu cầu tra cứu theo từng nguồn (ABN/ACN, ASIC, cơ quan cấp phép các bang, TPB, CoreLogic, Google, WhitePages, VEVO…); hệ thống dùng các worker Selenium đi cào dữ liệu / chụp màn hình / tải PDF, lưu kết quả và đẩy ngược về hệ thống khách hàng qua webhook.
Sơ đồ luồng tổng thể
┌──────────────┐ HTTP (api/v1/*, JWT) ┌─────────────────────────┐
│ Client/App │ ───────────────────────► │ DESearch Web API │
└──────────────┘ │ (DE_Searches_API) │
└───────┬─────────┬───────┘
ghi job vào bảng hàng đợi │ │ OAuth2 password grant
TextSearch_SeleniumQueue │ ▼
│ ┌──────────────────────┐
UDP signal 127.0.0.1:11000 │ │ Token service :12391 │
TCP 127.0.0.1:11001 └──────────────────────┘
▼
┌───────────────────────────┐
│ Selenium Worker Modules │
│ (ASIC, ABR, CoreLogic...) │
└─────────┬────────┬─────────┘
scrape qua trình duyệt│ │ ghi kết quả
▼ ▼
┌───────────────────────┐ ┌──────────────────┐
│ Website nguồn (AU) │ │ SQL Server DB │
│ asic.gov.au, abr... │ │ SOEZY_DESEARCHDB│
└───────────────────────┘ └────────┬─────────┘
│ kết quả
▼
webhook (RestSharp POST) → hệ thống khách hàng
Cơ chế điều phối API ↔ Worker
API không gọi trực tiếp worker. Thay vào đó:
- API ghi job vào bảng hàng đợi trong SQL Server (
TextSearch_SeleniumQueue,TextSearch_TakeScreenshot_Queue). - API gửi một UDP datagram tín hiệu tới
127.0.0.1:11000(ví dụ"Selenium Search","Take screenshot","Get More Info","CheckDeSearchSelenium") — xemShare/SocketClient_UDP.cs. - Worker poll bảng hàng đợi, mở trình duyệt (Selenium ChromeDriver / EO.WebBrowser), cào dữ liệu, ghi vào bảng
TextSearch_Data_*. - Khi xong, kết quả được đẩy ngược về khách hàng qua webhook (
Share/WebhookHelper.cs, POST bằng RestSharp tớiAPIUrlcấu hình trong bảngTextSearch_Webhooks).
Đây là mô hình shared DB queue + UDP signal, không phải message queue thật (RabbitMQ/Kafka…).
Các thành phần
| Thành phần | Vai trò |
|---|---|
| DE_Searches_API_NetCore | Web API .NET: nhận yêu cầu client, auth, đẩy job, quản lý cấu hình & kết quả. |
| DE_Searches (Selenium) | ~14 project worker, mỗi project cào một nguồn dữ liệu. |
| .Core | Entity / EF context (SoEzyEntities, SOEZY_REPORT_DB), bảng TextSearch_*. |
| .Share | SearchBaseService (lớp cơ sở worker), helper Selenium, webhook, Google Chat. |
| .AutoLoad | App WinForm giữ phiên đăng nhập CoreLogic sống (tự reload theo timer). |
Chi tiết kết nối vào/ra: xem Tích hợp & Kết nối.