这是今天经历了下午三节英语课并来自头脑风暴的方案。

参照的是Mastodon的中继。
实例相关
- 新加入的实例只能接收新的数据。
- 实例可以加入不止1个中继服务器。
- 文章内容将存储在各个实例上,文章ID将由各个实例分配,每个实例之间互不干扰。
- 媒体可以由各个实例进行保存,或者从原实例获取。(双方都要设置)
- 用户注册时,用户名以及密码由用户自行设置(密码设置后无法更改)。由于考虑到是匿名和隐私,所以没有邮件功能,所有通知全为站内通知。注册后将发送到中继服务器,中继服务器生成唯一ID,然后进行广播。
- 前端应使用WebSocket实时获取时间轴中的内容。
中转(中继)
- 中继服务器将存储实例域名与交换密钥以及用户唯一ID(需要对应用户名)。
- 中继服务器发送数据时应该带上原服务器发送内容时的时间,避免出现时间轴混乱。
特性
注册广播
当新用户注册时,新用户会被广播到所有服务器。
用户在一个实例注册时,实例会到实例所在的所有中继服务器查找用户名是否已经注册。如果已经注册,则不能再注册。
也就是说,一个用户名可以登录多个实例,但是他只有一个主实例。用户可以自行设置自己的主实例,设置新的主实例时不会迁移原实例文章,也就是说如果数据不同步,那么迁移后数据依旧不同步。
如果发生冲突,则用户将无法在发生冲突的服务器上登录。
恶意广播
实例与中继服务器无法判断来源是否合法,因此有些恶意实例或者恶意第三者会向广播中投放有害内容。
中继服务器可能需要接入一个第三方内容识别服务器来区分是否为恶意内容,但可能会产生额外消费,但是不用担心,这个并不是强制性的。
数据修改与删除
用户可以只可以删除自己的账号,但是无法修改已发布的内容。因为内容会在时间轴中流动,在联邦宇宙中,内容不会彻底删除。
账号删除后,会被标记为不可用并清楚用户名密码等,但是并不会完全删除,当下一个人注册重名账号时,会重新分配账号ID。
账号也不会彻底删除,因为有些实例可能会永久保存并归档。
最后
其实今天晚自习已经开始研究了,按照最近放鸽子的情况,估计半年应该会完成(可能)。
发表回复