i******e 发帖数: 273 | 1 - 问题很模糊,应该向面试官澄清哪些细节?
- 应该从哪些方面系统全面地阐述这个问题?
- 如果追求可扩展性,要牺牲什么其他方面的性能呢?
谢谢! |
i******e 发帖数: 273 | |
b*******S 发帖数: 17 | 3 容错的话 先看有没有single point of failure
有的话 想办法变双份或多份 (请参考DNS的设计)
然后再来要问到底要那种层词的容错
是要挂掉后修得回来(Backup回来就可以继续动)
还是资源都给双份或多份 所以有错可以知道 或是可以经过计算把错误略掉
或是直接考虑东西本来就会东坏西坏 (如map reduce),把坏掉当常态 然后就把没算完
的重算就是
知道要那一种层次的容错后 就可以开始考虑各种resources 范例如下
CPU failure
RAM (e.g., ECC)
Storage (e.g., Hadoop file system)
Database (e.g., 异地备份)
Network (e.g., 双网路卡)
可扩展性就比较虎烂了
因为首先要知道甚么样的扩展性
是指memory space可以增大 还是CPU运算量可以一直冲
如果以Hadoop来讲 要变快就一直加 nodes,但是 map 跟reduce中间的中间值需要排序
等等 也会有个bottleneck,但是这bottle neck,可能不好估
像super computing就常用MPI,但也有其限制,因为网路的速度会根不上
所以我觉得这题要答就比较难 因为不同的系统bottle neck实在差别很大
有的是ram,有的是storage,有的是CPU
再来还有一点是扩展性指的是Scalability还是说可以把新功\能加进去(extensible)
我不是很确定. 后者的话肯定是就是实作像是Plug-ins的东西就可以
可以参考Radius Protocol,他就做一个framework,然后各种的secure authentication
protocol都可以放进去. 或者是可以参考XML,反正要怎么订都可以,只要改个版本 然
后向前相容即可 |
b*******S 发帖数: 17 | 4 可以参考distributed systems的教科书如
"Distributed Systems, Principles and Paradigms" |
i******e 发帖数: 273 | 5 多谢指教,你的回答既全面又很有深度,膜拜一下!
有个疑问:可扩展性包括不包括算法和数据结构应该在大数据量情况下正常工作?比如
应该用iteration而避免用recursion, 能够用bitmap就不要用int array. 这些属于可
扩展性范畴吗?
谢谢!
【在 b*******S 的大作中提到】 : 容错的话 先看有没有single point of failure : 有的话 想办法变双份或多份 (请参考DNS的设计) : 然后再来要问到底要那种层词的容错 : 是要挂掉后修得回来(Backup回来就可以继续动) : 还是资源都给双份或多份 所以有错可以知道 或是可以经过计算把错误略掉 : 或是直接考虑东西本来就会东坏西坏 (如map reduce),把坏掉当常态 然后就把没算完 : 的重算就是 : 知道要那一种层次的容错后 就可以开始考虑各种resources 范例如下 : CPU failure : RAM (e.g., ECC)
|
d******a 发帖数: 238 | 6 可扩展性一般用data partition和consistent hashing, 容错能力一般需要data
replication. |
d******a 发帖数: 238 | 7 你说的这些都不是可扩展性。可扩展性是当你数据分布在多台服务器时,你增加一个服
务器或者一个服务器挂了时,代码不用动,数据迁移要尽可能少。
【在 i******e 的大作中提到】 : 多谢指教,你的回答既全面又很有深度,膜拜一下! : 有个疑问:可扩展性包括不包括算法和数据结构应该在大数据量情况下正常工作?比如 : 应该用iteration而避免用recursion, 能够用bitmap就不要用int array. 这些属于可 : 扩展性范畴吗? : 谢谢!
|
i******e 发帖数: 273 | 8 谢谢
【在 d******a 的大作中提到】 : 你说的这些都不是可扩展性。可扩展性是当你数据分布在多台服务器时,你增加一个服 : 务器或者一个服务器挂了时,代码不用动,数据迁移要尽可能少。
|
a*****s 发帖数: 1121 | 9 还要考虑出错后如何处理吧,自我修复如 feedback control。 |
a*****s 发帖数: 1121 | 10 如果是服务器挂了,应该输入容错范围吧。scalability多数情况指的是扩容,扩容后
要体现出性能提升,否则设计也是失败的。对于缩容来讲,可能的情况较少,重要考虑
缩容后保有原来系统的ACID性。
Scalability主要有3个方面:
1)management
2)geographical
3)size
【在 d******a 的大作中提到】 : 你说的这些都不是可扩展性。可扩展性是当你数据分布在多台服务器时,你增加一个服 : 务器或者一个服务器挂了时,代码不用动,数据迁移要尽可能少。
|
f*******n 发帖数: 3 | 11 此题纯粹考你CAP theorem而已
为了要保证Scalbility和Partition Tolerance,就要牺牲Consistency |