摘要: 实操-秒杀系统与订票系统设计 1 Scenario (场景) 限量出售, 售完为止. QPS 分析: 平均每秒 1000 人访问, 秒杀时每秒 10w 人访问, QPS 100 倍增加. 流程如下: graph LR A((用户)) --> |"购买"| B(创建订单) B --> K{"库存已无? 阅读全文
posted @ 2023-02-04 10:57 kohn 阅读(61) 评论(0) 推荐(0)
摘要: MapReduce 框架 Input Split Map 传输整理 Reduce Output Map Reduce 函数的输入输出接口? Map Reduce 函数的输入输出接口必须是 key, value 形式. graph TB A(file) --> |"分片"| B(Map) A --> 阅读全文
posted @ 2023-02-04 10:56 kohn 阅读(14) 评论(0) 推荐(0)
摘要: RowKey 设计 RowKey 概念 HBase 中 RowKey 可以唯一标识一行记录, 在 HBase 查询的时候有以下几种方式: 通过 Get 方式, 指定 RowKey 获取唯一一行记录 通过 Scan 方式, 设置 startRow 和 stopRow 参数进行范围匹配 全表扫描, 直接 阅读全文
posted @ 2023-02-04 10:56 kohn 阅读(29) 评论(0) 推荐(0)
摘要: BigTable 技术选型: | NoSQL Database | Company | | | | | BigTable | Google | | HBase | Yahoo(Open source of BigTable) | | Cassandra | Facebook | | DynamoDB 阅读全文
posted @ 2023-02-04 10:56 kohn 阅读(19) 评论(0) 推荐(0)
摘要: 分布式文件系统 (GFS) 设计流程 文件位置 一个 chunk 备份到三个 chunk server 中 | | | Master | | | | filename | | chunk-01 -> CS1, CS3, CS4 | | chunk-02 -> CS2, CS3, CS5 | | ch 阅读全文
posted @ 2023-02-04 10:56 kohn 阅读(31) 评论(0) 推荐(0)
摘要: UUID的版本 UUID具有多个版本,每个版本的算法不同,应用范围也不同。 首先是一个特例--Nil UUID--通常我们不会用到它,它是由全为0的数字组成,如下: 00000000-0000-0000-0000-000000000000 UUID Version 1: 基于时间的UUID 基于时间 阅读全文
posted @ 2023-02-04 10:55 kohn 阅读(46) 评论(0) 推荐(0)
摘要: 数据库扩展 QPS, 单点故障使得数据库必须要进行扩展. 扩展只需要做两件事情, 数据拆分 Sharding, 数据复制 Replica. 数据拆分可以分摊写流量, 数据复制可以做到读写分离. 数据库拆分 Sharding 纵向拆分 Vertical Sharding 将一个表拆分成为多个表, 每个 阅读全文
posted @ 2023-02-04 10:55 kohn 阅读(18) 评论(0) 推荐(0)
摘要: SQL vs NoSQL 怎么选择 是否需要支持事务? 是: SQL + 1 否: NoSQL + 1 是否需要丰富的 SQL query? 是: SQL + 1 否: NoSQL + 1 是否想偷懒, 因为SQL 实现往往更简单? 是, SQL 实现比 NoSQL 简单很多: SQL + 1 否, 阅读全文
posted @ 2023-02-04 10:55 kohn 阅读(20) 评论(0) 推荐(0)
摘要: 如何设计限流器 阅读全文
posted @ 2023-02-04 10:55 kohn 阅读(22) 评论(0) 推荐(0)
摘要: 系统设计面试 1 系统设计面试官想要考察什么? 系统架构设计的能力 知识的广度与深度 综合能力 (开放性题目, 沟通能力, 系统抽象能力, 逻辑思维能力) 定级别是通过系统设计来的 2 如何准备系统设计 知识储备 可用性, 可扩展性, 性能, 安全性, 大数据量, 高并发, 分布式设计 多刷题和模拟 阅读全文
posted @ 2023-02-04 10:55 kohn 阅读(36) 评论(0) 推荐(0)