[@徐雷frank][¥20]如何设计一个消息中心
我觉得消息中心的设计,最主要的点是选择读扩散模型还是写扩散模型。如果用户量巨大,写扩散冗余太严重,则可以使用读扩散,即推送中心维护一个消息列表,然后每一个用户端维护一个订阅列表,每次用户刷新的时候,根据自己的订阅,去从消息中心拉取最新的目标消息。这种模型的优势是比较节省存储空间,延时比较低,对于每一个用户来说比较公平可以用于秒杀抽奖消息等场景,缺点在于用户每次必须去消息中心读取订阅的信息,如果订阅量很多,需要做一些额外的优化。另一种选择是写扩散,即每条消息对所有用户推送,所有用户端都维护一个inbox,存储所有收到的消息,每条消息推送的点位,保障推送到所有用户,同用户的多端同步也由消息中心记录。这种模式的优势在于读非常快,用户只需要加载自己的inbox,体验很好。劣势在于数据冗余很多,写过重导致延时比较久,不适合类似微博大v这种大量订阅的消息。现在一般都是推拉结合的模式。
赞0
踩0