和普通邮件有什么不同普通邮件读扩散 / Fan-in逻辑邮件存储在发送者的发件箱中。收件人需要查看邮件时系统去所有发件人的发件箱里“拉取”属于自己的邮件。类比像去邮局取信。信都堆在邮局发送方你需要自己去查有没有你的信。面试关键词收件人主动拉取、按需聚合、读时计算。全局邮件写扩散 / Fan-out逻辑发送邮件时立即将邮件复制到每个收件人的收件箱中。收件人查看时直接读取自己的收件箱即可。类比像快递送货上门。快递员系统在发货时直接把信送到你家门口收件人收件箱。面试关键词发送时预计算、写时分发、空间换时间。设计思路全服邮件的核心在于“避免瞬时海量写操作”。① 数据结构设计避免循环Insert我不会给每个玩家插入一条邮件记录。我会设计一张global_mail全服邮件表和一张user_mail_status用户邮件状态表。发邮件时只往global_mail插 1条 数据。领奖励时才去检查这封邮件是否过期并在user_mail_status标记已领取。② 推送机制懒加载玩家上线拉取邮件列表时后端逻辑判断如果global_mail里有新邮件且该玩家没在 user_mail_status里则动态显示在列表中。不主动推而是被动查。③ 异步发放削峰填谷如果是给全服发附件比如钻石且必须到账。我会把发送任务丢进 消息队列MQ/Kafka后台起一个消费者慢慢消费每处理1000个玩家sleep 1秒保护数据库。④ 批量处理优化如果必须入库如重要通知我会使用 Batch Insert批量插入一次插入1000条而不是单条Insert。