当前位置:网站首页>架构实战营模块5作业
架构实战营模块5作业
2022-06-29 23:32:00 【InfoQ】
微博评论高性能高可用计算架构设计
一、计算性能预估
1.1 用户量
1.2 微博评论场景关键行为:
- 发评论
- 看评论
1.3 行为建模以及性能估算
- 发评论:假设平均每天每人发1条微博(只考虑文字微博),则微博每天的发送量约为2.5亿条。大部分的人发微博集中在早上8:00~9:00点,中午12:00~13:00,晚上20:00~22:00,假设这几个时间段发微博总量占比为60%。用户发评论的时间与发微博的时间基本重合,且多数评论都集中在明星和大V的微博下。假设平均每条微博有100人阅读,有十分之一的人会发表评论,那么每条微博对应10条评论。性能估算为:2.5亿条 * 10条评论* 60%/(4 * 3600) ≈ 100K/s
- 看评论:看评论的时间与发评论、发微博的时间也基本重合。假设看微博的人中约有30%会点开评论查看,那么性能估算为:2.5亿条 * 100人 * 30% * 60%/(4 * 3600) ≈ 300K/s
二、微博评论高性能计算架构设计
2.1 发评论
2.1.1 发评论架构设计
- 从业务特性上来分析,发评论是一个写操作,正常情况下不能用缓存,可以用负载均衡。
- 架构分析:用户量过亿,TPS要求也非常高,应该使用多级负载均衡的架构,覆盖 DNS -> F5 -> Nginx -> 网关的多级负载均衡。
- 架构设计:
2.1.2 发评论的多级负载均衡架构

2.2 看评论
2.2.1 看评论架构设计
- 业务特性分析,看评论是一个典型的读场景,由于评论发了之后不能修改,因此非常适合用缓存架构,同时由于请求量很大,负载均衡架构也需要。
- 架构分析:
- 架构设计:
2.2.2 看评论的多级负载均衡架构

2.2.3 看评论的多级缓存架构

2.3 整体架构方案

2.3.1 微博评论的多级负载均衡设计

2.3.2 微博评论的多级缓存架构设计

三、微博评论高可用架构设计
3.1 微博热点事件用户行为建模、性能估算
- 发评论:
- 看评论:
3.2 业务特性分析
- 发评论:评论一般不如发微博重要,而且很多评论发出后就会被刷下去,也不会被马上看到,热点事件发生时可以通过写缓存的方式降低系统的负载压力。
- 看评论:热点事件发生后,看评论也主要是看热点微博下的热门评论居多,这部分评论主要缓存在CDN中,可以比较快的被访问到。
3.3 高可用架构分析
- 发评论:发评论不如发微博重要,且有很多评论不需要即刻被看到,可以考虑使用限流的方式保护系统。同时评论能够增加讨论度,活跃社区气氛,带来更好的传播效果,所以不应该被丢弃,可以考虑漏桶算法,通过一个kafka消息队列来实现写缓冲。
- 看评论:热点事件微博存在缓存热点问题,可以考虑“多副本缓存”,由于原有的缓存架构已经采用了“应用内的缓存”,总体上来看,缓存热点问题其实不一定很突出。
3.4 高可用架构设计示意图

边栏推荐
- Top ten securities companies: "bulldozer market" reappearance
- Solr基础操作2
- 网上开户选哪个证券公司?还有,在线开户安全么?
- Solr基础操作
- 333333333333333333333333333333
- The concept and significance of mean, variance, standard deviation and covariance
- 2022 PMP project management examination agile knowledge points (5)
- Principe de réalisation de l'agent dynamique
- 十大券商:“推土机行情”再现
- 声网自研传输层协议 AUT 的落地实践丨Dev for Dev 专栏
猜你喜欢
![Project 1 - buffer pool [cmu 15-445645] notes](/img/33/304e3e78f62b156d0863a41d243679.png)
Project 1 - buffer pool [cmu 15-445645] notes

How to solve the problem that the computer time is not automatically updated after proofreading

二叉搜索树 230. 二叉搜索树中第K小的元素 1038. 从二叉搜索树到更大和树

论文阅读《Large-Scale Direct SLAM with Stereo Cameras》

C指针进阶2-->函数指针数组 回调函数简化计算器代码,基于回调函数模拟实现qsort函数

Matplotlib plt Hist() parameter explanation

Leetcode 1385. Distance value between two arrays

二叉树的序列化 力扣 297. 二叉树的序列化与反序列化 652. 寻找重复的子树

Paper writing tool: latex online website

Overseas digital authentication service provider advance AI was selected into the "2022 brand sea Service Market Research Report" of equalocean
随机推荐
Solution to version conflict of flutter plug-in
绿树公司官方网站
Fund valuation, expenses and accounting
Remember the process of checking online MySQL deadlock. You should not only know curd, but also know the principle of locking
Constexpr function
请指教什么是在线开户?另外,手机开户安全么?
Matplotlib plt Hist() parameter explanation
为什么 JSX 语法这么香?
Node data collection and remote flooding transmission of label information
收藏!这些提高程序员生产力的工具你用过吗?
Implementation of aut, a self-developed transport layer protocol for sound network -- dev for dev column
股票开户安全吗?上海股票开户。
PROJECT #1 - BUFFER POOL [CMU 15-445645]笔记
声网自研传输层协议 AUT 的落地实践丨Dev for Dev 专栏
InfluxDB时序数据库系统
Sword finger offer 38 Arrangement of strings
软件测试 接口测试 Postman测试工具 接口测试的流程 执行接口测试 接口关联 环境变量和全局变量 内置动态参数以及自动有的动态参数
剑指 Offer 14- II. 剪绳子 II
Solr基础操作1
Yunhe enmo, gaiguoqiang, identify it and grasp it before the domestic database boils