Component Architecture¶
Krokup gồm các client và integration hoạt động trong công cụ của người dùng, rendering service tiếp nhận request, và các renderer tạo output theo engine được yêu cầu.
Các thành phần chính¶
Client và integration¶
Playground, các lệnh Live Preview và Export của VS Code, cùng GitLab MR Browser Extension nhận thao tác trực tiếp từ người dùng. Chúng gửi source qua POST và giữ Gateway token trong vùng lưu trữ phù hợp với từng runtime.
Reader Browser biểu diễn trình duyệt mở nội dung đã publish, không phải một artifact do dự án phát hành. Trình duyệt đọc HTML do GitLab hoặc MkDocs tạo và gọi encoded GET khi cần tải ảnh sơ đồ.
GitLab Markdown Integration chuyển options trên fence thành directive mà GitLab Markdown Pipeline hiểu được. Pipeline của GitLab mới tạo HTML chứa encoded image URL. Documentation Website Build dùng MkDocs Kroki Plugin để tạo image URL tương tự trong static HTML. Confluence Macro UI cung cấp editor, preview và viewer; Forge Resolver giữ token, kiểm tra yêu cầu ở backend, gọi Gateway và quản lý SVG cache trong Forge KVS. Page Event Handler nhận sự kiện trang và chuyển code block phù hợp thành macro trong page ADF.
Confluence integration có lifecycle deploy, install và verification riêng trên Atlassian Forge; nó không được triển khai cùng rendering service.
Rendering service¶
Node.js Gateway là HTTP entry point của hệ thống. Gateway áp dụng chính sách cho request, quản lý cache và chuyển phần cần render tới Java Core qua loopback HTTP. Cấu hình giới hạn, timeout, metrics và xử lý sự cố được trình bày trong Operations.
Java Core giải mã source, hợp nhất universal options, chọn adapter tương ứng với engine và xử lý output trước khi trả về Gateway. Engine được xác định từ endpoint hoặc request của client.
Thực thi renderer¶
Renderer chạy theo dependency và mức cô lập phù hợp:
- Embedded và native renderer dùng JVM library hoặc command có sẵn trong rendering image.
- Browser companions dùng một Node.js runtime và một Chrome process chung để render Mermaid, BPMN, Excalidraw và diagrams.net.
- Pydia nhận job qua Unix socket trong sidecar dùng gVisor và không có IP network ở production.
Vị trí mã nguồn của từng thành phần nằm trong Repository Structure; cách các artifact được bố trí trên hạ tầng nằm trong Deployment Topology.