微博架构组大佬出的系统设计题,怎么回答才能得到大佬的认可?

阿里云技术面试复盘:从基础原理到系统设计的深度考察与备战策略 在软件工程与系统架构领域,扎实的计算机基础知识是构建高可用、高性能系统的基石。从操作系统进程调度、网络协议栈原理,到数据结构与算法的时间空间复杂度分析,这些核心概念共同支撑着分布式系统的设计与实现。理解这些原理的技术价值在于,能够帮助开发者在面对海量数据、高并发请求等复杂业务场景时,做出合理的技术选型与架构权衡,例如在数据库索引优化、缓存策略设计、消息队列应用等方面进行深度优化。特别是在云计算与微服务架构盛行的当下,如何将基础知识应用于解决真实的性能瓶颈、保障系统稳定性,成为高级工程师的核心能力。本次复盘聚 阅读详情

离面试微博架构组已经过去好几个月了。由于时间冲突,等到了谈钱不伤感情之后的offer环节,已经是入职现在的公司两天之后了,面子薄的我 只好和微博遗憾擦肩而过,一直对微博的Redis抗量机制贼有兴趣,可惜仍无缘一见。如果当初交流过的那几位微博大佬有幸看到本文,兄弟这厢有礼了。

Part1少见的代码Review环节

当N轮面试都结束之后,被老哥告知,最后的最后,需要写个代码Demo。二选一:

  • 近期的github项目
  • 一个指定题目的系统设计( 类微博点赞 ),并给出demo。

挺好,实际Review下候选人的系统设计思路和代码风格是一个对候选人很好的认知方式,以防招到纯面试人才,大家都省心。

所以还是建议大伙平时保持一定的代码量,多做些系统设计,以免成为传说中的"纯面试人才",遇到这种实操面试着急上火。

当然,为了更好的一展风’菜’,我选了指定题目重0开始。

本篇给大家整理一下这最后一个"代码Review环节",我是怎么应对的。

需要说明的是,这只是一个面试demo,离正式的系统设计还差很远,只是给大家提供个应对这种面试场景的思路。同时也给大家提供一个平时做系统设计的操作模板。

Part2类微博点赞系统分析

2.1系统概述

$ 系统需求

实现一个类微博的点赞服务,满足性能和持续扩展的需要。

$ 调用量预估

点赞请求 1w/s   ;访问请求  20w/s

2.2功能概述

$ 点赞功能

支持对某条微博点赞,每条微博只能被每人赞一次。

$ 查询功能

支持查询某人是否赞过某条微博

Part3类微博点赞系统设计

3.1系统部署设计

首先通过系统部署图直观的规划整个系统的功能模块组成:

在整个系统场景中,参与者包括:

  • 网关 – 有用来接收和分发用户请求
  • 点赞服务 – 用来处理用户点赞逻辑
  • 存储节点 – 用来存储用户的点赞信息
  • 缓存节点 – 用来支撑大量并发的读请求
  • 消息中心 – 提高系统吞吐
  • 其他 – 日志等辅助功能

3.2功能模块设计

从上面的系统需求和功能需求我们可以看到,整个点赞服务是一个读多写少的场景,只看写的话,并发量也是比较大的,而且,需要考虑业务增长带来的并发量和数据规模的增长。

所以,对于在线服务,设计时需要考虑压力分流,同时兼顾分流的可扩展性。对于存储服务,需要考虑和库表容量和新老数据拆分。

服务部署设计

逻辑部署:借鉴蚂蚁单元化思想。将服务器在物理机房上进行逻辑机房部署:暂定5组逻辑机房,分别称为room00 ~ room04 , 每个逻辑机房分别处理uid固定两位为 00-19 20-39 40-59 60-79 80-99 范围内的用户请求。

例 :uid : 1100xxxxx06 ,固定最后两位为路由位,则该用户请求落在room01的逻辑机房内的随机一台机器进行处理。

分析:假设用户分布和请求均匀,则,每个逻辑机房需要承载的读写请求并发量降为传统部署方式的1/5。每个逻辑机房又可以构建互备机房,满足机房容灾时的流量切换

存储设计

整体方案:数据存储考虑微博的时效性,设计为冷热数据分离,近期的微博热数据存储在mysql集群中,时间未半年前的旧数据,迁移至历史库,历史库考虑使用大数据操作支持良好的hbase存储。

冷热数据路由方案:微博创建时,将时间戳打入微博id,并固定其位置;在查询请求下发时,依赖解析微博id中的时间戳信息,得到冷热数据查询路由策略。

热数据部署:数据库分片按上述uid路由位 拆分为百库百表。

例:uid : 1100xxxxx06 ,微博ID则为,[xxxxxx时间戳xxxx06x] ,查询时,若时间戳是在一个月之内,则走mysql06库的06表;若时间戳在一个月之前,则走历史表。

分析:对于之前预估的1w/s写请求,此种拆分方法,即使是实时调用,单表的写并发也会降将为100/s。

缓存设计

采用类CPU架构的多层缓存设计越新、越热的数据存储在离用户最近的L1层,用最小的代价来达到最大效果。

在L1下方另外设计两个缓存层,分别是主缓存层和高可用缓存层,存储全量数据。为什么不用一致性hash的集群方式呢?是因为一致性hash在某节点宕机时,会有缓存漂移和数据冗余,并且顺序下游节点会在短时间内承受宕机节点的所有压力,对微博的顺发流量场景是不友好的。

限流,防击穿设计

防击穿:查询用户对某微博的点赞信息时,先查缓存,如果缓存查询无结果,则需要经过布隆过滤器的校验,防止不存在的key查询数据库造成击穿。

限流:集群限流 + 单机限流(请求数 /cpu /load )

增长应对

按uid分库后,数据量达到上限时,可以按微博类型等业务特定维度进行二次逻辑拆分

容灾、故障转移

服务方面:因为采用单元化逻辑机房的方式,在路由分发时可以统一控制缓存方面:见’缓存设计‘部分,因为设计了main集群和HA集群,当main中的节点宕机时,会通过HA集群对应位置的节点应对故障。

吞吐量优化

可以考虑利用消息中间件,将同步写转为异步写,进一步提高系统吞吐量,通过事务消息的回查机制保证用户的操作行为不会丢失。

3.3整体交互流程设计

Part4点赞服务代码Demo

没骗你们吧,当时确实是写了demo的。

当然,也只能称为demo,因为各个地方的设计都还很糙,只能算思路,离真实实施还有不小距离。

计划后面有时间了把它在github上维护一下,一步步扩展成一个像样的东西,有兴趣的小伙伴到时候可以一起玩玩。

AI客服系统设计实战:意图识别、RAG与人机协同阈值 AI客服不是简单的自动回复工具,而是融合自然语言理解、知识检索与服务决策的智能服务系统。其核心在于准确识别用户真实意图(如区分‘发票没收到’与‘催款’),依托检索增强生成(RAG)实现业务知识实时更新,并通过人机协同阈值(如黄金17秒响应机制)保障用户体验。技术价值体现在降低服务成本、提升首次解决率与NPS,广泛应用于电商、SaaS、金融等高频客户交互场景。本文聚焦AI客服自动化落地中的关键工程实践,涵盖意图识别准确率优化、多轮对话上下文保持及服务成本结构重构等硬核问题。 阅读详情

相关推荐

从“big黄勇”现象拆解个人IP符号化构建:打造可持续传播的技术品牌

在互联网时代,个人IP的构建已成为内容创作者和开发者提升影响力的关键路径。其核心原理在于将个人特质或专业能力提炼为易于识别和传播的符号,通过持续的内容输出赋予其内涵,并借助社群互动实现价值扩散。这一过程的技术价值在于,它能有效降低认知成本,在信息过载的环境中快速建立品牌识别度,从而连接精准受众。其应用场景广泛,尤其适用于技术博主、开源项目维护者、垂直领域专家等,旨在通过系统化运营,将专业知识或个人风格转化为可持续的社交资产。本文以近期热议的“big黄勇”这一网络符号为例,深入剖析其从内部梗孵化到泛化传播的三

diaocuiguo2493的博客 450

从程序员的视角来看微博帖子的点赞量是如何设计的

数据库的存储结构和性能优化并发处理以及安全性等方面的问题。

qq_46130027的博客 750

【社会科学】【管理科学】 第二十六章 评价管理——企业中通过评价实现人的管理方法和策略及行为01

编号类型领域评价人被评价人评价方法和策略评价控制的逐步推理思考的方程式及语言/话术/表情/姿态/动作/脸色/眼色关联知识法律法规和底线要求1绩效结果导向型评价绩效管理直接上级全体员工关键绩效指标法(KPI)与季度/年度复盘会推理方程式:核对期初目标(量化)→ 分析实际数据与目标差距 → 归因(外部/内部、能力/意愿)→ 共识下阶段改进点。 话术:“来看下我们Q2的业绩面板。你负责的A指标超额完成,值得肯定。但B指标有10%的缺口,你分析主要是什么原因?” 表情/姿态:坐在会议桌同侧,电脑屏幕或文

weixin_49199313的博客 625

如何设计一个点赞系统

同时,数据库的优化和主从复制也为高并发场景下的数据一致性和高可用性提供了保障。

qq_30939943的博客 2039

【企业管理】【管理科学】企业全岗位综合运营与组织知识矩阵体系15 企业管理基本框架(2)

人性维度自私利他合作竞争诚实欺骗忠诚背叛信任怀疑贪婪恐惧懒惰勤奋创新保守自私包含互斥弱依赖强依赖互斥强依赖互斥强依赖互斥强依赖包含强依赖强依赖互斥弱依赖强依赖利他互斥包含强依赖互斥强依赖互斥强依赖互斥强依赖互斥互斥互斥互斥弱依赖弱依赖弱依赖合作弱依赖强依赖包含互斥强依赖互斥强依赖互斥强依赖互斥弱依赖互斥互斥强依赖强依赖弱依赖竞争强依赖互斥互斥包含弱依赖强依赖互斥强依赖互斥强依赖强依赖强依赖互斥强依赖强依赖弱依赖诚实互斥强依赖强依赖弱依赖包含互斥强依赖互斥强依赖互斥互斥互斥互斥强依赖强依赖弱依赖欺骗强依赖互斥

weixin_49199313的博客 1066

基于redis实现的点赞功能设计思路详解

点赞是我们现在经常见到的一个效果,如朋友圈、微博都有点赞的效果,下面这篇文章主要跟大家分享了基于redis实现的点赞功能设计思路的相关资料,文中介绍的非常详细,对大家实现点赞功能具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

点赞系统设计(微服务)

点赞业务是一个常见的社交功能,它允许用户对其他用户的内容(如帖子、评论、图片等)表示喜欢或支持。在设计点赞业务时,需要考虑以下几个方面:点赞业务需要满足以下特性:为了保证安全,避免重复点赞,我们需要保存每一次点赞记录。同时,因为业务方经常需要根据点赞数量排序,因此每个业务的点赞数量也需要记录下来。在实现点赞业务时,主要用到了以下技术和工具:点赞的数据结构分两部分,一是点赞记录,二是与业务关联的点赞数。点赞数与具体业务表关联在一起记录,比如互动问答的点赞,就在问答表中记录点赞数。学员笔记点赞,自然是在笔记表中

Dongdong20021203的博客 2196

基于扩展卡尔曼滤波(EKF)结合到达时间(TDOA)、到达频率(FDOA)实现多无人机无源定位,MATLAB代码

该程序实现了一种结合到达时间差(TDOA)和到达频率差(FDOA)技术的多无人机定位方法,利用扩展卡尔曼滤波(EKF)对单一目标进行定位。程序通过模拟多无人机的运动及其与目标的相对位置,估计目标的状态(位置和速度)。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 1266

通用点赞系统的设计

在各个系统开发的业务需求中,点赞系统是一个很常见的需求,在微服务技术下,我们是否可以设计一个通用的点赞微服务呢,这样的话,我们在日常开发中就可以省去一个服务的代码设计,直接嵌入这个点赞微服务就可以了。点赞功能是社交、电商等几乎所有的互联网项目中都广泛使用。虽然看起来简单,不过蕴含的技术方案和手段还是比较多的。

ZYH5211314123的博客 859

DaVinci Configurator BswM模块配置

BswM是AUTOSAR(Automotive Open System Architecture)系统架构中的模块之一,它是基础软件模块(BSW)之一。BswM全称为Basic Software Module Manager(基础软件模块管理器),它负责管理和协调其他BSW模块的行为和交互,以实现整个系统的功能。BswM可以被看作是一个状态机,通过监控系统的状态和事件触发,来控制其他BSW模块的运行状态和互相配合,以达到整个系统的预期行为。

qq_59258431的博客 3949

深入理解Cornerstone3D.js渲染Stack影像数据

这个是调用的core\src下的init.ts的init方法,作用是:初始化cornerstone-core,检测客户端是否支持WebGL,默认情况下是支持中等GPU层级.另外一个重要的是实例化WebWorkManager.WebWorkManager类似于Java的线程池,是用来对Web Worker进行管理的管理器。使用DICOMwebClient获取影像文件的元数据,然后将它们缓存到imageLoader的metaDataManager中,在上面我们可以输出元数据看一下是什么。

wangwei19820517的博客 1493

新浪微博「点赞功能」数据库如何设计的?

刚在北大学长的《系统架构设计》讲座上听到这部分内容,觉得还蛮有意思的,这里简单交流一下 【点赞功能】的基本设计思路分两种: mysql直接落地存储; 利用点赞的业务特征来扔到redis中,然后离线刷回mysql 一、mysql方案 对于大多数中小型项目,低于千万级并发的数据,基本可以用mysql分表+cache完成。 这种方法只要做两个表就可以了: 1、记录文章被点赞的次数,有多少人点过赞 2、记录哪些文章被点赞过 常用的查询有: 查询用户点赞过的文章 select post_id from star

九章算法的博客 6720

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1129

系统设计题应该怎么答才能得到架构大佬的认可

????????关注后回复“进群”,拉你进程序员交流群????????作者丨Coder的技术之路来源丨Coder的技术之路Part1少见的代码Review环节当N轮面试都结束之后,被老...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 284

K8S证书过期解决办法之替换证书

k8s证书过期解决方案之替换证书

q_hsolucky的博客 1万+

华为S5720交换机堆叠配置

S5720交换机,做下堆叠,两条线,交叉互联(即A交换机23口连到B交换机24口,A交换机24口连接B交换机23口)。PS:S5720堆叠可基于电口或者光口做,本次测试基于电口。 SWA配置 # 改名 [Huawei]sysname SWA # 最好先shutdown接口 [SWA]interface GigabitEthernet 0/0/23 [SWA-GigabitEthernet0/0/23]shutdown [SWA-GigabitEthernet0/0/23]interface G.

Markdown 6340

引领系统设计:深度探索的分步手册

需要明确系统所需的API。这将明确系统预期的具体协议,并确保我们对需求的理解没有出错。在项目初期确定数据模型能够明确数据如何在各个系统组件之间流动。随后,它将成为数据分区和管理的指导。参与者需要确定各种系统实体,它们如何相互交互,以及数据管理的各个方面,例如存储、传输、加密等。对于微博系统的设计,以下是一些实体:用户:UserID, Name, Email, DoB, CreationDate, LastLogin等。

stone1290的专栏 255

MuJoCo Playground 机器人强化学习入门教程(一)

MuJoCo Playground 包含 DM 控制套件、机器人运动和机器人操作环境。env每个环境还与一个环境配置相关联,如果需要,可以覆盖该配置。env_cfg请注意,环境配置包含 sim_dt 和 ctrl_dt。ctrl_dt 决定每个 env.step 的时间间隔。因此,每个 env.step 的模拟步长为 ctrl_dt / sim_dt 倍。其他值得注意的参数还有 vision_config,我们将在基于视觉的笔记本中详细讨论!现在,我们将专注于特权观察。

2506_90492529的博客 4618

阿里后端实习面试:从八股文到系统设计的深度工程实践

在软件工程领域,面试不仅是知识点的考察,更是对候选人工程实践能力的综合评估。其核心原理在于,真实业务场景中的问题往往需要结合基础理论、系统设计和技术选型来综合解决。从技术价值角度看,深入理解如JVM内存模型、MySQL索引优化、分布式缓存等核心概念,能够帮助开发者构建高性能、高可用的系统。这些技术广泛应用于电商、社交、金融等高并发场景,例如在优化商品详情页接口或设计Feed流系统时,需要综合考虑缓存策略、数据库索引、消息队列等技术选型与协作。本文以阿里实习面试为例,探讨如何超越单纯的八股文背诵,通过构建技术

weixin_33976072的博客 340

FOC 转子初始位置检测(图文详解)

什么是转子的初始位置? 其实转子的初始位置是不确定的,但是在电机启动的时候,我们需要得到电角度,这样才可以进行矢量控制;所以,这里将转子与A轴重合作为初始位置,此时电角度也恰好为零,具体如下图所示; ) 至于原理下面会详细分析,这样在转子到初始位置后,也可以得到准确的电角度,就可以实现磁场和转子的同步转动。 如何让转子运行到初始位置? 其实这是一个很简单的问题,在这里我将它放大了,简单地分析了一...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java后端面试攻略:从JVM调优、并发编程到AI集成与系统设计

Java虚拟机(JVM)是Java程序运行的基石,其内存模型与垃圾回收机制直接决定了应用的性能与稳定性。理解JVM内存区域划分、对象生命周期及不同垃圾收集器的工作原理,是进行性能调优和解决内存溢出等生产问题的关键。在并发编程领域,Java内存模型(JMM)通过volatile、synchronized及happens-before规则保障了多线程环境下的可见性、原子性与有序性,而AQS(AbstractQueuedSynchronizer)等底层框架则为构建高效并发工具提供了核心支持。这些核心技术为构建高可

weixin_33863087的博客 331

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

4月刊特别推荐:架构师接龙:岳旭强 VS. 杨卫华

主持人 冯大辉,阿里巴巴集团旗下支付宝 (中国)网络科技有限公司数据库架构师,负责支付宝数据库架构规划、解决方案等相关工作。 提问嘉宾 岳 旭强,淘宝网资深架构师,在大型交易网站的设计和调优方面有丰富的经验。2004年加入淘宝,见证了淘宝网业务以及技术上完整的发展过程,参与了淘宝几乎 所有核心系统改造,并主导了用来支撑淘宝网未来高速发展的核心业务中心的建设。现在负责网站整体业务架构的设计和规划。 ...

weixin_30391339的博客 105

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

字节跳动技术面试全攻略:从高频考点到实战心法

在技术求职领域,系统设计与算法能力是衡量工程师水平的核心标尺。其原理在于通过抽象复杂业务场景,运用数据结构、算法及架构模式来构建高可用、可扩展的解决方案。掌握这些能力不仅能提升解决复杂工程问题的效率,更是进入头部科技公司的关键。无论是应对高并发场景的系统架构,还是优化核心算法的性能,这些技术在实际的推荐系统、在线协同、分布式存储等场景中都有广泛应用。本文基于上百位面试者的真实经历,提炼出字节跳动面试中的高频考点与深度追问模式,并围绕系统设计、JVM原理、Redis缓存等核心热词,提供了一套从知识查漏补缺到模

weixin_33693070的博客 358

C++后台开发面试核心考察与实战技巧

在C++后台开发领域,掌握语言深度与系统设计能力是技术面试的核心考察点。从内存管理到多线程编程,理解底层原理如移动语义、智能指针实现及epoll机制,能够显著提升系统性能与稳定性。高并发场景下的资源竞争、缓存一致性等问题,需要通过合理的线程同步与数据结构设计来解决。结合分布式系统设计中的一致性哈希、读写分离等策略,可以有效应对百万QPS的挑战。本文通过电商订单系统、分布式缓存等典型场景,详解如何将C++特性与系统设计原则结合,打造高性能后台服务。

weixin_33853794的博客 310

技术人职业平台期破局:从薪资停滞到价值增长的实战策略

在软件工程领域,职业发展常遵循对数曲线,初期高速成长后,资深工程师常面临薪资增长放缓的“平台期”。这背后涉及技术价值评估体系的演变:从单纯的技术执行转向系统架构、技术规划及跨团队协作等复合能力要求。理解这一原理,有助于技术人理性看待市场规律,避免陷入“伪舒适区”。其技术价值体现在能否将技术深度转化为可量化的业务影响,例如通过性能优化提升核心指标,或通过工程化项目提升团队效能。应用场景广泛存在于BAT、TMD等成熟大厂的资深工程师群体中。本文聚焦于**职业平台期**的深度剖析,结合**高频Agent面试题**

306

CnOpenData 线上招聘网站信息数据

CnOpenData线上招聘网站信息数据库是一个覆盖中国主流招聘平台、时间跨度长、更新频率高的劳动力市场需求侧大数据集合。本数据库汇集了,为学术界和业界提供了一扇实时观察中国劳动力市场动态的窗口。

CnOpenData_wj的博客 2645
上一篇: 为什么MySQL不推荐使用uuid或者雪花id作为主键?
下一篇: 推荐一个文件文档在线预览系统,号称Github超强~
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值