架构实战营模块 2 作业
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)
未完待续。。。。
评论