如何设计一个搜索系统 发表于 2021-04-11 | 分类于 系统设计 字数统计: 2.4k | 阅读时长 ≈ 8 [TOC] 什么是TWITTER搜索Twitter用户可以随时更新其状态。 每个状态都由纯文本组成,我们的目标是设计一个允许搜索所有用户状态的系统。 要求我们假设Twitter拥有15亿用户,每日活跃用户达8亿。 每个用户每天会搜索5次,每次平均打个9字符。 QPS = 800M59 = 12 b/ ... 阅读全文 »
如何设计Youtube系统 发表于 2021-04-11 | 分类于 系统设计 字数统计: 2.9k | 阅读时长 ≈ 10 [TOC] 需求和目标功能要求: 用户应该能够上传视频。 用户应该能够共享和查看视频。 用户可以根据视频标题执行搜索。 我们的服务应该能够记录视频的统计数据,例如喜欢/不喜欢,观看总数等。 用户应该能够添加和查看视频评论。 非功能性要求: 系统应该高度可靠,任何上传的视频都不应丢失。 该系统应该是高 ... 阅读全文 »
如何设计Twitter、微博 发表于 2021-04-11 | 分类于 系统设计 字数统计: 3.2k | 阅读时长 ≈ 11 [TOC] 这篇文章你需要掌握,分析QPS->定义要做功能-》设计SERVICE-》设计data SCHEMA-》TRADE OFF DB存储。 -》一个可用的SOLUTION 优化部分,你需要掌握, PULL vs PUSH, 2个的优缺点,如何改进。 3种不同SHARDING方式的优缺点。 ... 阅读全文 »
如何设计一个短链接系统 发表于 2021-04-11 | 分类于 系统设计 字数统计: 4k | 阅读时长 ≈ 14 前 言今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上线的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。 本文将会从以下几个方面来讲解,每个点包含 ... 阅读全文 »
如何设计一个打车系统 发表于 2021-04-11 | 分类于 系统设计 字数统计: 1k | 阅读时长 ≈ 3 [TOC] 需求和功能1.乘客可以发起乘车请求 2.司机需要汇报位置接单,然后完成请求。 3.乘客可以取消订单。 4.司机可以放下乘客,然后完成任务。 我们假设有20W司机同时在线。 司机每4秒汇报一次位置。 那么QPS 200K/4 = 50K 安全起见,*5,因为新年夜是打车高峰。我大概要支持2 ... 阅读全文 »
设计微信或者FaceBook messenger 发表于 2021-04-11 | 分类于 系统设计 字数统计: 1.4k | 阅读时长 ≈ 5 [TOC] 系统的要求和目标功能需求支持1对1聊天 支持离线在线状态 支持永久存储聊天记录 非功能需求实时聊天体验,延迟越小越好 高度一致,相同的聊天信息在USER的DEVICE上 可以容忍稍微低一点的可用为了一致性 拓展需求群聊 推送通知 容量估计500M DAU, 一个用户一天发40条微信。 2 ... 阅读全文 »
Go相关 发表于 2021-04-02 | 分类于 go 字数统计: 8.3k | 阅读时长 ≈ 36 [TOC] 第 1 章 GO 语言相关第 1.1 节 Go基础一、基本概念Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每 ... 阅读全文 »
短链接用302 发表于 2021-03-29 | 分类于 计算机网络 字数统计: 1.1k | 阅读时长 ≈ 4 [TOC] 之前某厂面试的时候问到过状态码 301/302 的问题,问我有没有相应的实践。当时我只是把概念简单说了下,状态码 3xx 表示重定向,301 是永久重定向,302 是临时重定向,但是实在没有这方面的实践。 今天看了一篇文章,讲短链接的实现,涉及到了 301/302 跳转,感觉面试答这个就 ... 阅读全文 »
秒杀系统 发表于 2021-03-27 | 分类于 系统设计 字数统计: 3.7k | 阅读时长 ≈ 12 [TOC] 秒杀系统设计的注意点 高性能。秒杀涉及高读和高写的支持,如何支撑高并发,如何抵抗高IOPS?核心优化理念其实是类似的:高读就尽量”少读”或”读少”,高写就数据拆分。本文将从动静分离、热点优化以及服务端性能优化 3 个方面展开 一致性。秒杀的核心关注是商品库存,有限的商品在同一时间被多个请 ... 阅读全文 »
敏感词过滤 发表于 2021-03-25 | 分类于 项目 字数统计: 513 | 阅读时长 ≈ 2 [TOC] IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。官网: https://code.google.com/archive/p/ik-analyzer/本用例借助 IKAnalyzer 进行分词,通过遍历分词集合进行敏感词过滤。使用前需对敏感词库进行初始化: ... 阅读全文 »