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