Luồng và ranh giới
Tham chiếu tệp và thông tin hồ sơ đã chốt; biên nhận và kết quả được trả về nguồn.
Theo dõi ranh giới giữa kênh sử dụng, định danh, dịch vụ lõi, sự kiện, kho dữ liệu và hạ tầng tin cậy.
Ứng dụng nghiệp vụ · Năm portal
WSO2 API Manager · HTTPS + OAuth2
Keycloak IAM · Token / claims
Archive · Evidence
Kafka · Outbox / Inbox
MariaDB / metadata · Object / evidence stores
TSA / RFC 3161 · CA / OCSP / CRL
Java / WildFly · Observability
Năm portal, hệ thống hồ sơ nguồn, REST client và đầu nối lô. Kênh không tự cấp quyền nghiệp vụ.
Tham chiếu tệp và thông tin hồ sơ đã chốt; biên nhận và kết quả được trả về nguồn.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Lệnh từ người dùng hoặc ứng dụng, không mang quyền mặc định. |
| Quyền sở hữu | Trả biên nhận/tác vụ và kết quả được phép; UI không quyết định quyền backend. |
| Lỗi / phục hồi | Đứt kết nối: giữ khóa chống lặp, truy vấn kết quả gốc trước gửi mới. |
Kiểm tra token, scope, mTLS theo môi trường, hạn mức và correlationId trước chuyển lệnh.
Request hợp lệ đi tới dịch vụ sở hữu; lỗi xác thực không được biến thành tác vụ nghiệp vụ thành công.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Token/mTLS, scope và correlation; dữ liệu tệp dùng kênh được cấp. |
| Quyền sở hữu | Xác thực ở biên chưa thay quyền đối tượng trong dịch vụ sở hữu. |
| Lỗi / phục hồi | Timeout không chứng minh backend thất bại; chẩn đoán TLS tách khỏi HTTP Problem. |
GoPaperless SSO theo OIDC là kết nối mục tiêu; quyền LTANS kiểm soát tổ chức, đối tượng và tác vụ riêng.
Danh tính được xác thực là đầu vào quyết định quyền, không tin tenant tùy ý trong request body.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Issuer/khóa xác minh được cấp và mapping tổ chức. |
| Quyền sở hữu | Danh tính khác quyền; tenant trong request không tự là tenant có quyền. |
| Lỗi / phục hồi | Hết phiên/đổi quyền đánh giá lại; lỗi nguồn khóa không cho phép chấp nhận khóa lạ. |
Chín nhóm logic chia quyền sở hữu; tác vụ theo dõi xử lý dài hạn và không thay trạng thái bằng chứng.
Dịch vụ cập nhật giao dịch cục bộ và outbox; không ghi trực tiếp vào kho nghiệp vụ của nhau.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Lệnh chuẩn, policy snapshot và tham chiếu dữ liệu. |
| Quyền sở hữu | Một nhóm sở hữu một quyết định/trạng thái; không ghi DB của nhóm khác. |
| Lỗi / phục hồi | Chốt điểm giao dịch và checkpoint; không giả rollback toàn cục cho các kho ngoài. |
Outbox/inbox, eventId, tương quan, khử trùng, retry có giới hạn và phát lại có quyền.
Sự kiện mang metadata, định danh và tham chiếu; dữ liệu nhị phân đi qua đầu nối kho được cấp.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Outbox cục bộ sau giao dịch, envelope và tham chiếu. |
| Quyền sở hữu | Tách sự kiện nghiệp vụ khỏi lần gửi webhook; không chuyển byte lớn qua event theo mặc định. |
| Lỗi / phục hồi | Inbox khử trùng; sự kiện trễ truy vấn nguồn hiện hành trước tác động không đảo ngược. |
Tách metadata, dữ liệu gốc, bằng chứng và backup. Custody quyết định bên giữ byte và quyền đọc lại.
Từng loại dữ liệu có quyền, khóa và tiêu chí khôi phục riêng; mã băm không thay nội dung.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Byte gốc, metadata, bằng chứng, replica và khóa liên quan. |
| Quyền sở hữu | Custody phân định bên giữ kho/khóa và quyền đọc; HASH_ONLY không chứa bản gốc. |
| Lỗi / phục hồi | Khôi phục theo cùng điểm nhất quán và kiểm băm; byte đủ nhưng thiếu khóa vẫn chưa đọc được. |
CA/TSA, chuỗi chứng thư, OCSP/CRL và HSM/KMS theo hồ sơ triển khai; kiểm chứng giữ ngữ cảnh lịch sử.
Phản hồi ngoài được kiểm tra trước sử dụng; dự phòng không bỏ qua policy hoặc dữ liệu trạng thái.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | MessageImprint, token, chứng thư và dữ liệu trạng thái. |
| Quyền sở hữu | Nguồn mạng/CA/TSA có profile; UNKNOWN và thiếu vật liệu không thành GOOD. |
| Lỗi / phục hồi | TSA dự phòng qua cùng kiểm soát; giữ token và ngữ cảnh cũ khi luân chuyển. |
Quan sát trace/job, cảnh báo gia hạn, quản lý bí mật, phiên bản cấu hình và diễn tập phục hồi.
Đây là lớp kiểm soát xuyên suốt, không chỉ bước cuối của luồng tiếp nhận; không suy ra SLA từ sơ đồ.
| Góc nhìn | Ranh giới lớp |
|---|---|
| Đầu vào / luồng | Trace, checkpoint, cấu hình phiên bản và cảnh báo. |
| Quyền sở hữu | Control plane có đặc quyền riêng, không làm đường tắt bỏ qua phê duyệt nghiệp vụ. |
| Lỗi / phục hồi | Mở lại sau đối soát dữ liệu/bằng chứng/lịch/outbox; ghi phần chưa phục hồi. |
| Bước | Bên gửi → nhận | Hành động |
|---|---|---|
| 1 | Nguồn → API / Archive | POST /v1/archives · quyền, băm, chống lặp |
| 2 | API / Archive → Nguồn | 202 · archiveId/jobId; chưa hoàn tất |
| 3 | API / Archive → Evidence | EvidenceGenerationRequested · outbox |
| 4 | Evidence → Kho | Đọc byte theo custody |
| 5 | Evidence → Trust Adapter / TSA | Dấu thời gian cho liên kết băm |
| 6 | Trust Adapter / TSA → Evidence | Token và dữ liệu kiểm chứng |
| 7 | Evidence → Kho | Lưu phiên bản sau kiểm chứng |
| 8 | Nguồn → API / Archive | Đối soát tác vụ và trạng thái bằng chứng |
| Bước | Bên gửi → nhận | Hành động |
|---|---|---|
| 1 | Bên gọi → API / Verification | POST /v1/archives/{archiveId}/verification |
| 2 | API / Verification → Kho | Lấy đúng phiên bản và dữ liệu được cấp |
| 3 | API / Verification → Trust Adapter | Chuỗi, trạng thái và policy theo thời điểm |
| 4 | API / Verification → Báo cáo | Kết quả từng bước; evaluatedAt |
| 5 | Bên gọi → API / Verification | GET /v1/jobs/{jobId} |
| 6 | Bên gọi → Báo cáo | GET /v1/verifications/{verificationId} |
| Bước | Bên gửi → nhận | Hành động |
|---|---|---|
| 1 | Người duyệt → API / Renewal | POST /v1/renewals · mode/approvalId |
| 2 | API / Renewal → Kho / dữ liệu | Cố định phiên bản, quyền đọc lại |
| 3 | API / Renewal → Kho / dữ liệu | HASH_TREE cần dữ liệu gốc |
| 4 | API / Renewal → Evidence / TSA | Tạo bằng chứng tiếp nối theo mode |
| 5 | Evidence / TSA → Báo cáo | Kiểm chứng trước công bố |
| 6 | API / Renewal → Kho / dữ liệu | Lưu liên kết trước/sau, cập nhật lịch |
| Bước | Bên gửi → nhận | Hành động |
|---|---|---|
| 1 | Bên gửi → API / Archive | POST /v1/archives/{archiveId}/exports |
| 2 | API / Archive → Kho | Đọc thành phần đúng quyền |
| 3 | API / Archive → Gói | Manifest, byte, bằng chứng và ngữ cảnh |
| 4 | Bên gửi → API / Archive | GET /v1/exports/{exportId} |
| 5 | Gói → Bên nhận | Chuyển qua kênh đã thỏa thuận |
| 6 | Bên nhận → Gói | Kiểm kê, băm và kiểm chứng độc lập |
| Bước | Bên gửi → nhận | Hành động |
|---|---|---|
| 1 | Bên gửi → API / Transfer | POST /v1/archives/{archiveId}/transfers |
| 2 | API / Transfer → Gói | Cố định gói và phạm vi |
| 3 | Gói → Bên nhận | Giao gói; giữ nguồn trước xác nhận |
| 4 | Bên nhận → Quyết định | Kiểm tra gói và điều kiện tiếp nhận |
| 5 | Bên nhận → API / Transfer | POST /v1/transfers/{transferId}/acknowledgements |
| 6 | API / Transfer → Quyết định | Chốt điểm chuyển trách nhiệm theo thỏa thuận |
| 7 | Quyết định → Bên gửi | Xóa nguồn cần quyết định khác |
| Lựa chọn tham chiếu | Vai trò | Trạng thái |
|---|---|---|
| WSO2 | Quản lý API | Tham chiếu từ sơ đồ hiện hành; chưa có build/cấu hình triển khai được cấp. |
| Keycloak | Danh tính/OIDC | Tham chiếu từ sơ đồ hiện hành; chưa có build/cấu hình triển khai được cấp. |
| Kafka | Sự kiện | Tham chiếu từ sơ đồ hiện hành; chưa có build/cấu hình triển khai được cấp. |
| MariaDB | Kho giao dịch theo dịch vụ | Tham chiếu từ sơ đồ hiện hành; chưa có build/cấu hình triển khai được cấp. |
| Java / WildFly | Runtime dịch vụ | Tham chiếu từ sơ đồ hiện hành; chưa có build/cấu hình triển khai được cấp. |
Cấu hình topology, HA, RTO/RPO và tải phải được đo/nghiệm thu theo môi trường; số nhóm logic không phải số máy chủ.
So sánh mô hình triển khai| Tình huống | Quy tắc thiết kế mục tiêu | Cách nghiệm thu |
|---|---|---|
| Metadata có, outbox chưa giao | Dùng giao dịch cục bộ/outbox và đối soát; không nhận lại thành hồ sơ mới. | Gây lỗi sau commit trước gửi, khôi phục và đếm tác động. |
| Byte có, metadata chưa hoàn tất | Cách ly đối tượng chưa gắn; chính sách dọn rác phải xét retention và chủ kho. | Đối soát bản kê kho với giao dịch nhận, không xóa mù. |
| Bằng chứng có, projection trễ | Bản ghi sở hữu là nguồn; dashboard thể hiện độ trễ. | Khôi phục projection không đổi phiên bản bằng chứng. |
| Mất khóa, còn bản mã | Khôi phục byte và quyền giải mã là hai cổng riêng. | Thử đọc đúng byte và kiểm chứng sau phục hồi khóa có quyền. |
Keycloak cấp token và danh tính; không phải bước nghiệp vụ archive trên mọi request. Chín nhóm dịch vụ gồm Webhook Delivery; adapter và các tầng hạ tầng không làm thay số nhóm nghiệp vụ. Topology được chốt theo triển khai.