Outbox架构是指
本页面由日语原文机器翻译而成。 阅读日语原文
Outbox架构(Outbox模式)是将信息队列到本地,在网络连接恢复时自动发送的设计模式。 在SimpleMemo中,通过这种结构,即使在地铁和机内等离线环境中,也会在终端上留下备忘录,连接时发送。
Outbox架构是分布式系统中的信息发送保证模式。 发送者首先将信息永久化到本地的Outbox(发送箱),后台进程监视Outbox,在网络连接时依次发送。 确认发送成功后,从Outbox中删除信息。 以此防止“网络故障时的数据丢失”。 因为只有回复丢失的信息会被重新发送,所以为了防止相同的信息重叠而无法到达,需要与接收方的重复防止(幂等键等)结合使用。 在SimpleMemo中,将每个备忘录的消息ID作为邮件发送服务的幂等键传递,防止24时间中的重复。 移动应用是离线优先设计的基础技术。
Outbox模式的3的要素
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中,应用程序在加密、解密时读取。 钥匙是不转移到其他终端的设置。 邮件配送不是端到端加密。 备份和密钥管理的详细内容也请确认。