jackyfkc.github.io

教土豆学计算机

架构设计

这里讨论大型、复杂的软件系统的设计;这些软件系统的特征是:单个开发者要理解所有方面会非常困难,几乎是不可能的。不准确的说,这些系统的复杂性超出了人类智能的范围。

复杂性常常以层次结构的形式存在。复杂的系统由一些相关的子系统组成,这些子系统又有自己的子系统,如此下去,直到达到某种最低层次的基本组件

复杂系统的架构是它所有的组件及其层次结构的函数

设计的目的是创建一个干净的,相对简单的内部结构,有时候也称为架构...

软件设计方法学

关于复杂系统的设计,不存在所谓的指南手册; 设计这样的系统需要增量和迭代的过程

一个好的设计方法基于牢固的理论基础,同时又提供艺术创新的自由

Design Principle

进一步阅读

理论基础


工程实践



Online Blogs & Articles


分布式系统

Know Your Basic Building Blocks

Core language libraries, basic data structures,

protocol buffers, GFS, BigTable,

indexing systems, MySQL, MapReduce, …

Not just their interfaces, but understand their implementations (at least at a high level)

If you don’t know what’s going on, you can’t do decent back-of-the-envelope calculations!