![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
System Design
系统设计相关知识
Tech In Pieces
这个作者很懒,什么都没留下…
展开
-
How to design the schema for SQL talble/NoSQL/File System
use the service in tweet design.In a word, all of those are somewhat regular things, just title+data type(if SQL, we have to define the primary key)原创 2020-10-19 04:12:40 · 121 阅读 · 0 评论 -
什么是Big table?(号称google三剑客之一)
Bigtable分布式数据存储系统是Google为其内部海量的结构化数据开发的云存储技术,是Google的第三项云计算关键技术,是所有云时代分布式存储系统的开发蓝本,已经在超过60个Google的产品和项目上得到了应用。Bigtable的设计是为了能可靠地处理PB级的海量数据,使其能够部署在千台机器上 [2] 。Bigtable具有高可靠性、高性能、可伸缩等特性,借鉴了并行数据库和内存数据库的一些特性,但Bigtable提供了一个完全不同接口 [1] 。Bigtable不支持完整的关系数据模型,而是为原创 2020-10-24 00:25:10 · 1790 阅读 · 0 评论 -
SQL/NoSQL/File System
use twitter as example:the user table is suitable to put into SQLtweets and social graph is suitable to put into NoSQLMedia files are for file system原创 2020-10-19 03:54:53 · 82 阅读 · 0 评论 -
GeoHash的原理及实现手段
Geohash就是把世界分成很多快怎么样在数据库中得到最长前缀索引呢?我们可以用SQL和NoSQL储存那么SQL和NoSQL有什么区别呢?但是同样是的NoSQL的Redis就非常适合:为什么?首先看看Redis有哪些特征?数据可持久化,原生支持list set等结构 读写速度接近内存访问速度 所以对高QPS比较有利。再进一步说明为什么非常合适 从乘客的角度和从斯基的角度:从打车用户的角度从司机的角度...原创 2020-10-24 00:26:58 · 199 阅读 · 0 评论 -
What is the actual meaning of ‘Cache‘ in System Design?
Cache is a k-v structured thing.and it store results that can answer the query we may request later.what kind of DB support cache?Memcached: Not support 数据持久化(because it store in memory, that’s why it called Mem(ory)-cache)Redis:support 数据持久化一些常见的误区:原创 2020-10-19 23:59:31 · 460 阅读 · 0 评论 -
System Design problem: what happened when you visit google.com?
首先 我们访问的是离我们最近的DNS服务器 然后DNS会解析www.google.com域名对应的IP地址是什么然后我的浏览器向该IP地址发送Http/https请求服务器收到此请求 将请求递交给正在80端口坚挺的Http server(比如说Apache, Unicorn等等)然后http server将请求转发给web application(三大最火的web application framework):djando, ruby, node.jsweb application按照下列流程处理请原创 2020-10-23 04:54:33 · 122 阅读 · 0 评论 -
Authentication Service in System Design
we will have a table called session table to manage that.something like this:the session_key here sounds like a token.what will happened after user login:create a session object,return the session_key as cookie to broswereach time when the user requ原创 2020-10-20 03:13:51 · 61 阅读 · 0 评论 -
Relationship between QPS and System Design--QPS determined the choice of storage system
So what storage of system we can choose?Three:SQL – MySQL, PostgreSQL -1K QPSNoSQL based on Disk – MongoDB, Cassandra - 10K QPSNoSQL based on Memory – Redis, Memcached - 100K-1M QPSbased on different QPS volume, we need to choose suitable database for原创 2020-10-20 03:18:04 · 87 阅读 · 0 评论 -
Design Uber/Facebook nearby/Yelp/Pokemon Go(以Uber为例)
4Sscenario:需要设计哪些功能?设计的怎么样?(DAU, QPS)有以下功能需要设计:那么设计的怎么样?根据最多有多少人共同在线 分别推算Driver和passager的原创 2020-10-24 00:28:37 · 196 阅读 · 0 评论 -
The scale step when design web crawler
所谓的scale step就是解决一些奇奇怪怪的corner case的比如说:how to handle update or failure?这是因为现在爬取的文件或者网页 过一段时间后就陈旧了 或者过一段时间就被原主人修改了,怎么办呢?或者说Answer: 进行指数型的更新或者重试,比如第1 2 4 8…个星期进行更新或者重试。how to handle dead cycle?比如说sina.com里面的内链太多 导致从sina.com里面出不来了Answer: use quota! 就是说在原创 2020-10-22 04:45:10 · 143 阅读 · 0 评论 -
什么是文件系统?什么是数据库系统?两者有何区别?
文件系统就是输入路径 然后返回文件内容如果我们需要查找某个文件里面的某个值 我们就要打开文件进行扫描。文件系统优点:能提供一些简单有效的读写文件操作文件系统缺点:实际查询中可能对文件内容有一些更加复杂的查询需求 比如说条件或者是范围查询,或者是计算平均值数据库系统:这个系统是建立在文件系统之上,输入是key 输出是value,key当然可以是复合的键...原创 2020-10-24 00:28:07 · 895 阅读 · 0 评论 -
the scale step of design Tiny Url System
对速度的改进:如何提高响应速度?首先想一下 有哪些地方可以加速 我们是提高读的速度还是写的速度?如果是提高读的速度的话 那么很简单 加缓存就可以了当然 还可以优化服务器的访问速度(通过DNS就近原则) 以及优化数据结构的访问速度(适用centralized MySQL和distributed memcached)比如说下图:当请求过多 一台服务器搞不定了 怎么办呢?那就搞多台,比如说,解决存不下的问题,解决QPS的问题但是多台服务器也有个问题要解决 如何分割数据,是vertical shar原创 2020-10-23 04:51:14 · 163 阅读 · 0 评论 -
如何储存和查询地理位置信息(System design of Uber)?有哪些算法可以做这些
比如说 储存和查询某个乘客周围五公里的司机当然 我们可以用下面的SQL语句但是这种意味着扫描了一遍所有的数据有没有更好的办法?两种方法:Google S2:将地址空间映射到2^64的整数 如果空间上比较接近的两个点 对应的整数也比较接近Geohash:特性L公共前缀越长 两个点就越接近...原创 2020-10-24 00:26:42 · 295 阅读 · 0 评论 -
什么是MapReduce?他的应用方向是什么?
他既不是软件 也不是算法而是一种编程模型 用于大数据的并行运算。换句话说,Map reduce是一套实现分布式计算的框架Map+Reduce发散+归并Map reduce都能解决哪些问题?问题1:统计一篇文章中某单词出现的词频?之前的一台或者多台机器进行for 循环的方法属实不太行我们采用多台机器map reduce...原创 2020-10-23 04:52:41 · 241 阅读 · 0 评论 -
QPS 与Web Server和DataBase之间的关系
简而言之 就是服务器用的比较少 就考虑single point failure.服务器用的比较多,就要考虑如果其中某一台挂了怎么办(这是很有可能发生的)原创 2020-10-19 03:25:12 · 273 阅读 · 0 评论 -
数据库系统设计 One work solution
数据库的核心在于读写 所以这个work solution就是一个完整的系统的读写过程。写入过程:针对上面的将在内存中储存的已经排好序的List存到硬盘中,需要对列表进行序列化,所用到的技巧就是二叉树 然后只要我们知道到底该用什么遍历方式还原就可以。但是同时也要意识到 如果机器挂了 内存的东西都没了怎么办?用Log的方式(Write Ahead Log(WAL))写入到硬盘中。所以总结一下 就是读出过程:因为我们之前使用的是append的方式 所以读出会有一些重复的(所以我们要找到哪个是真的原创 2020-10-24 00:27:31 · 119 阅读 · 0 评论 -
解决单点失效问题的数据备份方法
数据备份 即ReplicaReplica in SQL:Master-slave 模式,master负责读写 slave只负责读原理:SQL的任何操作 都会以日志形式做一份记录,比如说会记录数据A在B时刻被改成了D, slave每次被激活 通知master,之后master每次有任何操作都会通知slave来读取日志,所以slave虽然可以保持跟master一样 但是更新是有延迟的。如果master挂了会怎么办?某一台slave会升级为masterReplica in NoSQL:我们顺时针找三台原创 2020-10-22 04:43:38 · 399 阅读 · 0 评论 -
System design of rate limiter(4S)设计一个访问限制器
核心算法:Scale:原创 2020-10-25 22:26:09 · 274 阅读 · 0 评论 -
MapReduce的传输整理的详细操作
原创 2020-10-23 04:52:01 · 134 阅读 · 0 评论 -
MapReduce用的机器越多越好吗?
当然不是。机器数量增加的好处:每台机器负载就越少 速度 也更快机器数量增加的坏处:启动时间增加,而且增加是有上限的 就是说最多是key的数目原创 2020-10-25 23:08:29 · 126 阅读 · 0 评论 -
HTTP Protocol
http: hyper text transfer protocol, it is a protocol that let the hyper text from server to client.it’s based on TCP/IP原创 2020-10-25 23:05:28 · 70 阅读 · 0 评论 -
MapReduce详细精简流程
User program start master and workermaster assign task to the map worker and reduce workerMaster split the input dataeach map worker read the split of input dataeach map worker do the map job on their machineeach map worker output the file in the loca原创 2020-10-23 04:53:38 · 116 阅读 · 0 评论 -
System Design Divide and Conquer, use Twitter Design as an example
Interview Question: Design Twitterbefore you answer this problem, you need to know what can counted as a “good answer”.work solution(it must be workable)special case: answer the question based on the different properties of the system we are about to de原创 2020-10-23 04:48:44 · 130 阅读 · 0 评论 -
数据库的索引究竟是指什么?一句话
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。原创 2020-10-21 04:38:33 · 144 阅读 · 0 评论 -
System Design Interview General Principles
structured your answer: Scenario, service, storage, scaleAsk before you designStarting from something usefulWork solution firstAnalysis is more important than solution, and system design has no “right answers”原创 2020-10-19 12:43:25 · 178 阅读 · 0 评论 -
短网址生成算法
如何将一个长度不定的长URL转换成一个6位的短网址算法1 hash function,但是没办法去设计一个没有冲突的哈希算法算法2:随机生成一个8位的shortURL,如果没有被只用过 那么就跟这个longURL绑定。但是检查这个shortURL是否被使用过 这个检查耗时会越来越多算法3:6位字符串能表示多少不同的String?这取决于有多少不同的字符。如果有62个字符(26+26+10)那么可以表示的就有570亿 我们把这个数对应到sequential id里面算法2和算法三其实都是可以的,下面分原创 2020-10-21 08:43:04 · 1033 阅读 · 0 评论 -
How to design Tiny Url System?
Still, 4SScenario:我要根据一个长的URL生成一个短的(我们能转过去同时也要能转过来)而且同时 我还要考虑短网址的唯一性 时效性 定制型。而同时 我们也要明白我们设计的这个系统的DAU和QPSService:很简单 就是把长string变短 而且变短后还必须唯一 还必须能够还原。两个方面:当然最主要的是如何将LongURL转换成6位的shortURL,详见我的博客《短网址生成算法》Storage:在生成短网址的时候必然要储存。那么存在哪里呢?表格又应该是什么样的呢?请原创 2020-10-21 08:48:02 · 340 阅读 · 0 评论 -
Socket链接和HTTP链接的主要区别?
Http连接下 只能客户端问服务器端要数据Socket链接 服务器可以主动推送数据给客户端原创 2020-10-25 22:28:40 · 127 阅读 · 0 评论 -
客户端和服务器端
这其实是一个相对的概念:所有发送请求的端都是客户端 接受并处理请求原创 2020-10-22 04:47:12 · 77 阅读 · 0 评论 -
How can Memcached optimize DB queries?
class UserService: def getUser(self, user_id): key = "user::%s" % user_id //hash them user = cache.get(key) //try to get user from cache if user: return user user = database.get(user_id) //regain the user from our real db cache.原创 2020-10-20 02:29:31 · 60 阅读 · 0 评论 -
How to design a distributed file system?
什么分布式系统?用多台机器解决一台机器上不能解决的问题。现在常用的分布式文件系统有两种:按照4S 分析:Scenario:what functions do I have to implement?基础场景:用户写入一个文件 用户读取一个文件多少台机器储存这些文件?service:服务包含客户端和服务器端的服务storage:存在哪里?内存?数据库?文件系统scale:...原创 2020-10-21 02:59:54 · 94 阅读 · 0 评论 -
MapReduce常见问题
mapper和reducer使用时工作吗?mapper结束了reducdder才能运行如果有个mapper或者reducer挂了怎么办?重新分配一台机器如果reducer的一个机器的Key特别大怎么办?加一个random后缀 类似shard keyinput和output存放在哪里?存放在GFS中Mapper和reducer可以放在同一台机器上吗?这样实际不是特别好 因为map和reduce之前都有许多要预处理的工作 两台机器可以并行预处理。...原创 2020-10-25 23:07:31 · 349 阅读 · 0 评论 -
Scale step of system design of whatsApp
有哪些方面可以做拓展的?性能上的拓展 支持更多的用户 有更快的响应速度功能上的拓展 支持群聊 支持在线状态的显示。对表格的扩充 以及当表的贵吗足够大以至于需要拆分表格 应该怎么样去拆?Message表是储存在NoSQL里面 其自带Scale属性 Tread表格按照User_id进行shardinghow to speed up?(因为我们每隔十秒才主动刷新一次消息 聊天体验太差)我们需要引入一个新的service–push service. push service 的目标是提供socket连接原创 2020-10-25 22:28:22 · 121 阅读 · 0 评论 -
What is Replica? and what‘s the difference between Backup and Replica?
这是一种有效防止数据库单点失效或者挂掉的方法。Backup一般指周期性的,所以当数据丢失的时候 通常只能恢复到之前的某个时间点。Backup所用的服务器,不能用作在线的数据服务 即不分摊读。Replica: 实时的 当数据些图的时候 就会以复制品的形式村委多分,而且replica所用的服务器用作在线的数据服务 分摊读。表面上看replica更好 所以我们还需要backup吗?答案是肯定的...原创 2020-10-21 03:35:01 · 136 阅读 · 0 评论 -
System Design Interview Format
case1: Given a senario, design a suitable system:like: design twitter, design facebook, or Uber, whatsapp.case2: trouble shootinglike: what happens if we can’t access the website.what happens if a webserver is too slow.what should we do for the increa原创 2020-10-19 02:24:11 · 207 阅读 · 0 评论 -
数据备份在SQL和NoSQL中的不同
SQL型数据库,通常自带master slave的replica方法,即master负责写 slave负责读。slave负责从master中同步数据。master挂了 就选择一台slave自升级NoSQL:通常将数据顺时针储存在一致哈希环中的三个virtual nodes中。(所谓Nodes 就是服务器)总结:...原创 2020-10-21 03:42:44 · 123 阅读 · 0 评论 -
News Feed---how to solve the disadvantage of Pull or Push model?
Pull model:the whole procedure:getNewsFeed+Merge k sort arraycore function:getNewsFeed(request)• followings = DB.getFollowings(user=request.user) //get the following• news_feed = empty• for follow in followings: //iterate the following• tweets = DB原创 2020-10-22 04:43:01 · 104 阅读 · 0 评论 -
Follow/Unfollow problem in system design
一般来说 关注和取关是如何实现的?follow一个在用户之后 会异步的将其time line合并到自己的news feed中,也就是说 虽然我们可以得到立即的反馈,但是实际上如果我们立刻刷新feed的话 实际上是无法立即显示。相似的情况也会出现在Unfollow一个用户后...原创 2020-10-19 09:11:23 · 185 阅读 · 0 评论 -
How to Design a user system which includes login, register, queries, relationship
Now we are implement the 4S analysis method:Scenario: login register query, user info change requestand we have to support 100M DAUfor login, register, info change:Average QPS: 100Peak QPS: 100 * 3 = 300for query:Average APS: 100KPeak QPS: 100K * 3原创 2020-10-22 04:44:12 · 77 阅读 · 0 评论 -
Scale step of System Design of Database System
How to read/write k-v from 1 PB file?这么大的文件 直接放在一个服务器中肯定要死那么怎么样嘛?肯定需要sharding,但是sharding的话 是vertical sharding 还是horizontal sharding呢?我们肯定不能按列来分 只能按照行来分然后放在不同的机器中-采用master/slave模式但是如果这样分的话 我们怎么样从多台服务器中读取bigtable呢?那么如何从多台服务器中写入呢?然后还有每台机器数据越写越多存不下怎么办原创 2020-10-24 00:25:45 · 122 阅读 · 0 评论