Introduction
What is a distributed system?
- 多台电脑合作完成
- 大规模数据集运算,如:MapReduce,点对点共享
- 许多设施是分布式的
Why do people build distributed systems?
- 通过多线程并行操作,提高性能
- 通过生成副本,避免文件丢失
- 可以将计算放在离外部实体更近的地方
- 通过隔离增加系统的安全
外部实体:指系统以外,又和系统有联系的人或事物,它说明了数据的外部来源和去处,属于系统的外部和系统的界面。
Topic
- fault tolerance (容错):对应用程序隐藏这些故障,我们希望系统拥有可用性、可恢复性,如果一台服务器宕机,可以继续使用其他服务器。
- consistency (一致性):想要达成正确工作的系统十分困难,一致性与性能存在矛盾,服务器节点能难保证相同。
- performance (性能):我们想要提供一个性能可以扩展的系统,通常需要更好的设计而不仅仅是更多的计算机,数量的增多也会带来负载不均衡等问题。
- implementation (实现):RPC、线程、并发控制
MapReduce
函数式编程思想构建成抽象模型—Map和Reduce,隐藏系统底层细节,编程方便,不够灵活。
Example: word count
input is thousands of text files
Map(k, v)
split v into words
for each word w
emit(w, "1")
Reduce(k, v)
emit(len(v))