术语集 — 技术

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下载

相关页面