写点什么

架构实战营模块 2 作业

用户头像
Lukefang
关注
发布于: 2021 年 04 月 19 日

1.分析一下微信朋友圈的高性能复杂度

【作业要求】1)对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;

2)针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可);

3)给出你的架构方案中关键的设计理由。

4)3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。

【提示】1.分析过程可以参考模块 2 第 5 课的实战案例,但是不需要将分析过程一一列举出来。

2.如果某个地方被卡主了,请及时联系助教或者老师讨论






朋友圈数据读多写少, 故此用 redis 做缓存承载读的请求。


以下内容与作业无关

----------------------------------------

畅想一下微信朋友圈可能的实现方式:

做如下定义:

朋友圈消息:在朋友圈中看到的每一条记录都时一条 msg

元数据库(meta datebase): 这个库只记录"朋友圈消息"一些最基础的信息。

-------------------------------------------------------

msg_id|wxid| msg_type|msg_value|timestamp

-------------------------------------------------------

msg_id: 某条朋友圈记录的 id

wxid: 哪个微信号发的这条记录

msg_type: 这条消息的类型(比如文本,图片,视频,用个 int 类型来代替)

msg_value: 具体的消息内容(如果 msg_type 是文本,那么 msg_value 就是一个字符串。如果 msg_type 是图片,那么 msg_value 可能就是一个或多个图片的 url。 如果 msg_type 是视频,那么 msg_value 可能就是一个视频的 url。 这些 url 都是在发朋友圈时在微信 app 里生成然后传到 腾讯云上的得到的 url)

timestamp: 朋友圈消息的时间戳


timeline_datebase(时间轴数据库): 记录用户的朋友圈时间轴。

每个微信用户在朋友圈中看到的所有内容构成了一条时间轴。

每个时间轴都是一个链表,链表里的每个节点就是一个指向"朋友圈消息"的指针(其实只要记录一个 msg_id 就可以了)。


msg(M)---->msg(M-1)---msg(M-2)--> ............... msg(1)


未完待续。。。。

用户头像

Lukefang

关注

还未添加个人签名 2021.01.06 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块 2 作业