设计模式学习

设计模式大致分为三类。

  • 创建者模式:提供一种创建对象的方式,同时隐藏了创建对象的逻辑。而不是直接使用new创建对象。
  • 结构型模式:结构型模式更加关注对象与对象之间的关系与组合,旨在构建灵活可复用的类和对象结构。
  • 行为型模式:关注类或对象之间的通信、协作、职责分配。旨在对象间的责任分配和算法封装。

记住所有的设计模式是愚蠢的,关注自己所在领域常用设计模式,语言框架中默认使用的设计模式。

阅读更多

MIT6824笔记六 线性一致与Zookeeper

这节课主要介绍了线性一致的概念与Zookeeper论文。

线性一致描述的是系统的行为,正确的行为是客户端发送了一个写请求并且收到服务端答复后,这个写请求能被之后的读请求看到。每个读请求看到的都是最新的写请求所作的更改。

Zookeeper论文是我接触到的最抽象的一篇论文。首先它的功能就很抽象:分布式协调内核。它提供的两个保证:线性写和FIFO客户端请求也费时间理解。最后则是它的API调用以及具体实现。

读这篇论文的原因我想一是Zookeeper的广泛使用,证明了其实用性;二是其“线性一致”的设计,契合课程。收获就是其API的设计、Watch模式。

阅读更多

MIT6824笔记三 分布式存储系统GFS

这节课主要介绍分布式存储系统的难点以及论文GFS。

分布式系统出现的原因是人们想要利用更多的机器实现更好的性能,但更多的机器意味着故障的期望上升。解决单台机器故障最简单的办法就是多副本的容错机制,但多副本间需要时间同步。一致性难题意味着牺牲性能,这是个闭环,人们必须在性能和一致性上做取舍。

对于GFS的学习,我觉得首先要明白GFS应对的需求,整体的架构设计,然后就是读写过程,数据一致性,这是从使用层面上来说的。在高可用方面,GFS的备份管理、文件快照、崩溃恢复等细节需要再深入研究。

阅读更多