術語集 — 技術

Outbox架構是指

本頁面由日文原文機器翻譯而成。 閱讀日文原文

Outbox架構(Outbox模式)是將資訊佇列到本地,在網路連線恢復時自動傳送的設計模式。 在SimpleMemo中,透過這種結構,即使在地鐵和機內等離線環境中,也會在終端上留下備忘錄,連線時傳送。

定義

Outbox架構是分散式系統中的資訊傳送保證模式。 傳送者首先將資訊永久化到本地的Outbox(傳送箱),後臺程序監視Outbox,在網路連線時依次傳送。 確認傳送成功後,從Outbox中刪除資訊。 以此防止“網路故障時的資料丟失”。 因為只有回覆丟失的資訊會被重新傳送,所以為了防止相同的資訊重疊而無法到達,需要與接收方的重複防止(冪等鍵等)結合使用。 在SimpleMemo中,將每個備忘錄的訊息ID作為郵件傳送服務的冪等鍵傳遞,防止24時間中的重複。 移動應用是離線優先設計的基礎技術。

Outbox模式的3的要素

本地永久化
備忘錄首先儲存在裝置上的儲存中。 無論網路狀態如何,使用者的操作都會立即完成。 SimpleMemo用AES-256-GCM進行加密儲存。
恢復連線後重新傳送
應用程式執行時,用NWPathMonitor(網路狀態監視API)檢測連線恢復並重新傳送。 關閉應用程式時,嘗試在iOS的後臺更新(執行的時間由iOS決定),或者下次開啟應用程式時嘗試重新傳送。
確認刪除
只有在收到本公司的Relay API(Cloudflare Workers)傳送成功的回覆後,才會從Outbox中刪除該備忘錄。 出錯時自動重新傳送(每1件最多5次。 停止的備忘錄可以從履歷畫面手動重新傳送)。

SimpleMemo的Outbox安裝

SimpleMemo的Outbox,不僅僅是離線佇列,而是兼顧了安全性和UX的設計。 儲存備忘錄時用AES-256-GCM加密,只有在傳送時才解密。 傳送完畢的備忘錄從Outbox中刪除。 離線按下傳送按鈕時,會顯示“離線-連線時傳送”,將備忘錄留在Outbox中。

例項:在地鐵上傳送備忘錄

場景

1.在地鐵車內將想法輸入備忘錄,點選傳送按鈕

2.應用程式顯示“離線-連線時傳送”(備忘錄作為等待傳送留在終端)

3.在背面用AES-256-GCM加密備忘錄並儲存在Outbox

4. 進入地面連線LTE/Wi-Fi → 如果應用程式在執行,NWPathMonitor檢測到連線(關閉的話,iOS的後臺更新或下次開啟應用程式時)

5. 從Outbox中取出備忘錄,解密後傳送到Cloudflare Workers API

6. Resend API接受傳送,Relay API返回成功的回覆(不是確認收到收件箱)

7.從Outbox中刪除那個備忘錄

常見問題(Outbox架構)

Outbox架構是什麼?

將資訊儲存在本地的佇列(傳送箱)中,在網路連線時自動傳送的設計模式。 離線期間也作為等待傳送留在終端上,連線恢復後重新開始傳送。

SimpleMemo的Outbox是怎麼運轉的?

傳送備忘錄時無法使用網路時,用AES-256-GCM加密後儲存在Outbox。 恢復連線後,如果應用程式執行的話,會立即,如果關閉的話,iOS的後臺更新或者下次開啟應用程式時,透過Cloudflare Workers向Resend API傳送。 傳送完畢後從Outbox中刪除。

Outbox的備忘錄安全嗎?

儲存在終端內的Outbox用AES-256-GCM進行加密。 密碼金鑰存放在iOS的Keychain中,應用程式在加密、解密時讀取。 鑰匙是不轉移到其他終端的設定。 郵件配送不是端到端加密。 備份和金鑰管理的詳細內容也請確認。

參考文獻・外部連結

即使離線,寫下的備忘錄也會留在終端
Outbox架構+AES-256-GCM加密,無論是在地鐵還是機內,都將備忘錄留在終端上,連線後傳送。 下載免費。
從App Store下載

相關頁面