写点什么

极客时间 - 架构实战营 2 期 - 模块二作业

用户头像
Dylan TANG
关注
发布于: 2021 年 09 月 05 日

学号:G20210698040018

姓名:唐瑭


分析微信朋友圈高可用复杂度:

微信朋友圈从业务功能上来说,我觉得可以分为编辑朋友圈(发朋友圈,修改朋友圈,删除朋友圈),评论朋友圈,互相加好友,点赞收藏朋友圈,还有消息推送。


1 编辑个人朋友圈,评论,朋友之间互相加好友业务,我个人觉的复杂度上都差不多,可以一起思考

  • 单机

存储高性能这一块,我觉得可以用关系型数据库存储朋友圈内容的主体部分,图片等存在文件服务器上。

计算高性能这一方面,我觉得可能没有太多可以考虑。如果朋友圈数据库访问很多,可以考虑使用缓存。

  • 集群

计算高性能这一块,无需任务分解,做到任务分配即可,做到负载均衡 nginx 搭配应用服务器即可。

存储高性能这一块,考虑到数据量大,可以用 sharding jdbc+mysql 做数据库分库分表


2 点赞和收藏功能

  • 单机

计算高性能这一方面,没有太多可以考虑

存储高性能这一块,由于点赞收藏这些动作发生频繁,可以考虑用 redis 来存储点赞量和收藏量

  • 集群

计算高性能,做到 nginx 负载均衡即可

存储高性能,用 redis cluster 集群存储点赞量和收藏量


3 消息推送

如果你点赞了,评论了某一个朋友圈,那么该朋友圈所有者的微信收件箱里可以收到消息提醒。

如果你发送了一条朋友圈,你的所有好友他们那里都可以收到一条消息推送。

考虑到微信朋友圈不大,有上限的,应该是几千人,可以考虑推送模式。

  • 单机

计算高性能,为了性能考虑,可以考虑在用户发朋友圈的时候,使用多线程,发推送消息到消息队列,通过消息队列再发到该用户好友的收件箱里面

存储高性能,应该考虑写多读少这个情况,可以使用 LSM 数据库

  • 集群

计算高性能,继续做到 nginx 负载均衡

存储高性能,考虑使用 Hbase 集群


4 整体架构

可以考虑多机房部署,为了监控还可以搭建一个后台管理系统,除了对于系统做监控外,还可以在后台系统中设置敏感词之类的,对于脏话做屏蔽过滤,对于不健康的朋友圈自动隐藏等等


下图是整个架构设计


谢谢~

用户头像

Dylan TANG

关注

还未添加个人签名 2020.05.25 加入

还未添加个人简介

评论

发布
暂无评论
极客时间-架构实战营2期-模块二作业