跳转至

关键词速查

本页是高频关键词的一行定义与出处索引;完整解释见 名词解释,一词多义的模块归属见 术语×模块。

五种序列

关键词 定义 关键约束
message_id 全局唯一、时间有序的消息标识,u128 HLC,含 region_id/writer_id writer 启动领取持久 60 s 窗口,崩溃/回拨不复用
conversation_seq 单会话严格递增的历史顺序 允许空洞;禁用差值判丢消息、禁 latest - read 算未读
last_activity_id 会话列表与跨会话时间轴排序键 与 message_id 同源同格式,可比较
mailbox_seq (shard_epoch:16, log_offset:48) 复合 u64 来自 dispatch 分区 offset;跨 epoch 单调;个人队列稀疏
room_seq 聊天室短期顺序 只用于环形缓冲回放,不进邮箱

游标与水位

关键词 定义
lane_id blake3(tenant_id, user_id)[0] & 63,MailboxShard 内的可见性隔离通道,独立于 user_bucket
materialized_watermark[lane](W) 该 lane 已完整物化、可安全暴露的连续水位,不是"见过的最大 offset"
W_floor 水位下限证据,接管时 seek 起点 = min(W)+1
mailbox_trim_watermark 已物理删除的最大 mailbox_seq;空洞可跳过的前置条件
MailboxCursor 设备已应用完成的邮箱位置(≠ 网络已发送),device 级
sync_to_seq AUTH 时刻的 lane 水位快照,把设备事件切成"客户端拉"与"服务端推"两半
read_conversation_seq 用户级已读水位(read:{user}),跨设备共享
CURSOR_EXPIRED 游标早于有效裁剪点,客户端必须 REBUILD

实体(禁止别名)

实体 进程 职责
ConnectionNode qim-gateway 帧编解码、认证、心跳、PUSH 写出
ConversationWriter qim-writer 准入、幂等、分配序号、提交状态机、Outbox
FanoutCoordinator qim-fanout 消费 Outbox、按冻结成员版本生成 dispatch
MailboxNode qim-mailbox 消费 dispatch、物化邮箱、推进 W、服务 PULL_MAILBOX
SessionProjection qim-session 会话集合投影、会话列表、定义式未读、MARK_READ
HistoryArchiver qim-archiver 异步归档 MessageRecord 到 ScyllaDB、发布归档水位
MessageStore 库(qim-store) 单份正文、历史分页、ClientDedup;分层:Redis 热层 + Scylla
GroupMembership 库(qim-common) 成员关系、不可变成员版本、(joined_at, left_at) 区间
ShardRegistry / PresenceDirectory / NotificationService / RoomWriter / MediaService / ModerationService — 目标形态,部分未实现

禁止写法:MessageNode、Mailbox Node、Message Store、connection_epoch。

数据模型

关键词 说明
MessageRecord canonical 消息记录,正文只存一份
CommitIntent RESERVED 时持久的完整 canonical 记录,恢复器不依赖客户端重传
GroupDispatch 每目标 MailboxShard 恰好一条;dispatch_id = blake3("qim.group-dispatch.v1\0"‖message_id‖shard)[0..16]
DispatchProgress(DP) 邮箱侧 dispatch 物化进度与身份,dispatch_id + payload_digest 去重
UserMailboxEntry 个人邮箱引用;同 (user, mailbox_seq) 事件组 ≤ 8 条 / 8 KiB
ConversationHead 每条消息只更新一次的会话公共头(一期从 canonical history 读取)
UserConversationState 会话集合持久权威(一期只存集合,ScyllaDB)
UserSessionProjection 可重建的会话列表视图(convs:{user} zset,ZADD GT)
UserBadgeState 用户级全局未读聚合(目标形态)
membership_version 群消息在分配序号后冻结的不可变成员版本

提交状态与 ACK

关键词 说明
RESERVED → RECORDED → OUTBOXED → COMMITTED writer 提交状态机;只有 COMMITTED 能生成 SEND_ACK
client_message_id(cmid) 客户端幂等键,非零 16 字节;(tenant, sender, cmid) 唯一
ClientDedup 幂等窗口 2 h(client_dedup_ttl_seconds)
local_pending 客户端未确认发送;重连后先邮箱对账、未命中才重发

协议帧(常用)

AUTH / AUTH_OK · SEND_MESSAGE / SEND_ACK · PULL_MAILBOX / MAILBOX_BATCH · SYNC_COMPLETE / ONLINE_READY · PUSH_EVENTS · PULL_HISTORY · PULL_SESSION_LIST / SESSION_LIST_BATCH · SESSION_DELTA · MARK_READ · PULL_MEMBERS · CREATE_GROUP · LEAVE_GROUP · KICKED · PING / PONG。完整表见 PLAN 附录 A。

默认参数(节选,权威见 PLAN 附录 B)

参数 值
lane_count 64(不可变)
MailboxShard 数(QIM_MAILBOX_SHARD_COUNT) 默认 64,二次幂
离线邮箱保留 MAILBOX_RETENTION_DAYS 7 天(ADR-0023)
历史热窗口 history_hot_window 7 天(ADR-0018)
默认历史保留 30 天,可配 1..3650(ADR-0019)
提交辅助状态 COMMITTED 后 2 h 绝对过期
未读精确窗口 200,超过返回饱和值
大群成员事件广播上限 500
一期群上限 1000
帧头 固定 20 字节大端
分片写出块 64 KiB