首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统设计问题

系统设计问题
EN

Stack Overflow用户
提问于 2020-01-15 13:02:00
回答 1查看 349关注 0票数 2

我正在为系统设计面试做准备,由于我对这一主题的经验不多,我从educative.io购买了“摸索系统设计面试”课程,这是几个网站推荐的。然而我读到了它,我想我没能理解几件事,所以如果有人能回答我的问题,那将是有帮助的。

  1. 由于我没有使用nosql的经验,所以很难选择合适的db系统。有几次,课程只是没有给出任何理由,为什么它选择一个数据库而不是另一个。例如,在“设计Youtube或Netflix”一章中,编辑器选择mysql作为db角色,但没有解释。在同一章中,我们有以下非功能性需求:

“系统应该是高度可用的。一致性可能会受到影响(为了可用性而设);如果用户有一段时间没有看到视频,那应该没问题。”

按照上面的提示,考虑到系统的大小,并将材料应用到"CAP定理“一章,对我来说,似乎是一个更好的选择,,Cassandra和CouchDB。我在这里想念什么?

同样的问题也适用于“设计Facebook的新闻提要”

  1. CAP定理仍然适用吗?

我的意思是: HBase是根据"CAP定理“一章,擅长一致性和分区容限,但根据HBase文档,它也支持自2.X版本以来的高可用性,因此在我看来,是一个适用于所有/通用的db存储的解决方案,这违背了CAP定理,除非它们为HA牺牲了一些东西。我在这里想念什么?

  1. 关于一台计算机可以处理多少RAM/存储/带宽的问题,这些数字是不一致的,我猜它们已经过时了。 a,普通计算机,b,现代服务器的当前数字是多少?
  2. 几乎每一章都有一个叫做“容量估计和约束”的部分,但是这里计算的内容随着章节的不同而变化。有时只计算存储,通常也计算带宽,有时会添加QPS,有时会有特定任务的度量。如何知道我应该为特定的任务计算什么?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 18:13:36

每个数据库是不同的,满足不同的需求。我建议您阅读发电机纸,并熟悉其中使用的其他术语(两阶段锁定、领导者/追随者、多领导者、异步/同步复制、quorum),并知道不同数据库提供了什么保证。现在来回答以下问题:

  1. 可以将MySQL配置为以与其异步复制模型的一致性为代价来确定可用性的优先级(领导者在提交写入之前不会等待其追随者确认;如果一个领导者在数据被传播到关注者之前崩溃,数据就会丢失),所以它可以是合适的解决方案之一。
  2. HBase的文档来看,HBase保证了很强的一致性,甚至以可用性为代价。高可用性的承诺是用于读取,而不是用于写入,即读取陈旧的数据,而系统的其他部分则从失败中恢复,并且可以接受其他的写入。 由于读取到单个位置的这一次归巢,如果服务器不可用,则托管在区域服务器中的表中的区域在一段时间内不可用。 由于所有的写入仍然必须经过主区域,所以写入并不是高度可用的(这意味着如果该区域变得不可用,它们可能会阻塞一段时间)。
  3. 所使用的数字是候选人的估计,即您决定单个假设服务器的规格是什么,以及您需要多少服务器来扩展和适应存储/吞吐量需求。
  4. 您事先不知道(虽然您可以根据需求进行猜测,例如,如果是数据存储系统、流服务等,我仍然不推荐)。相反,你应该问面试官他们对哪个领域感兴趣,并对此做出评估。访谈,特别是系统设计部分,是一次讨论,不要随声附和。你认识到你可以处理系统的不同领域,并根据面试官的兴趣来处理它们。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59752019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档