架构实战营模块二作业
一、微信朋友圈业务复杂度相对低,质量复杂度高。理由如下
朋友圈功能有发布、查看、评论、点赞,权限控制,广告推荐等,可以看出业务相对简单
质量要求高,作为国民级人人都用功能,质量要求可想而知
发朋友圈架构设计
浏览朋友圈架构设计
评论点赞架构设计
发、评、赞事件变动架构设计
二、设计说明
1、我的想法是:首先服务要不要进行拆分,比如拆成发子系统,评子系统,赞子系统等。我认为是不需要进行拆分的,理由为:朋友圈的模型是类似 bbs,发个帖子后,后面人进行评论。“帖子”是核心领域,拆分后反而增加系统调用开销,且发评赞是属于帖子的基本操作
2、整体的架构是有个朋友圈服务器集群,数据库采用关系型数据库进行存储(朋友圈模型天生就是关系型),数据库分库分表,想法是同一类用户的数据放在同一个数据库里,“类”的区分策略可以是用户 id 进行一致性 hash,或者用户的所在地区域等;
3、分析朋友圈的场景,发现朋友圈所有的查询场景,均可走缓存;可以说发个朋友圈后,只要最大限度保证你的朋友能看到就可以了,这个最大限度也是最大容忍度,30 秒,10 秒都是可以接受的;故可以根据发,评,赞变动事件来异步构建缓存;落数据库成功后,发送变动事件到 mq,然后消费 mq 消息,消费的核心是构建关于这个“帖子”相关信息的缓存信息,缓存构建成功后,再推送给微信客户端(朋友圈红点功能)
版权声明: 本文为 InfoQ 作者【Morphling】的原创文章。
原文链接:【http://xie.infoq.cn/article/b1e044a555036c70e39addb6d】。未经作者许可,禁止转载。
评论