CPPInterview
架构优化
缓存和数据库的一致性问题
集群伸缩问题
设计推特
B站视频分享
如何在面试中掌握主动性
当前项目的业务逻辑较为简单,要不你设计一些场景,我讲一下我的解决方案。
设计存储架构
估算性能需求(存储量,读写性能)
选择存储系统(TP还是AP)
设计存储方案
选择的三要素
合适
简单
演进
用户量预估
规划
推算
对比(更同类产品对比)
用户行为模型
行为
数量
频率 ###
总量50G (冷热数据)
读写请求TPS/QPS 平均值和峰值,两者之差双十一10倍,游戏两三倍。
预留量(线性伸缩)
SQL
OLTP
mysql
postgresql
oracle - OLAP
clickhouse
hive
NoSQL
redis
mongodb
es
influxdb
大数据
flink
hadoop
spark
hdfs
hbase
cassandra
ceph
技术本质
应用场景: 游戏服务器用mongodb,论坛服务器用es。
优缺点
架构能力
研究成熟开源框架P7以前,展示自己的架构能力
ES
Redis
架构原理和优缺点
架构的复杂度
难度:技术深度和广度:多技术,多领域。
规模:时间,人数。
创新:方法和技巧。
P6项目能手
理解自己的子系统架构
理解已用子系统架构原理:Redis,MySQL
沟通表达所用技术。(带新员工)
P6问答
MySQL用的是什么模式?
主从
读写分离
分库分表
Redis用的什么数据结构?为什么用这个数据结构?
线上服务器有多少台?性能指标大概多少?
P7团队专家
熟悉上下游
参与端到端的设计
团队相关的开源项目优缺点和原理
子系统的设计和重构
P7准备技巧
Tech学习法(写博客,培训,演讲)
结合业务发展和痛点推动架构升级
链式学习法:自顶向下,逐步深入。
服务层
架构解耦
业务降级
异地多活
高性能
缓存
异步
优势
Java
C++
ES
InnoDB
RocksDB
Redis
Kafka
数据结构
LSM
B+
LRU
Heap
Raft
Skiplist
方向
分布式
数据库
服务器
数据调度
ETL
数据调度
副本
一致性
事务
伸缩
C++后台
异步IO
定时器
epoll
线程池
零拷贝
锁
socket
高性能
缓存
异步
云端DAQ
分批上传(start/process/stop)
异步线程
批量写入
缓存策略cache aside更新策略(强一致性2PC和共识算法)
数据库设计
读写分离CQRS
分库分表sharding
分表策略:基于租户ID分表
数据访问层的中间件
分布式架构
分布式锁
分布式ID
分布式事务