currently reading articles under design

设计模式一句话总结

以GoF的经典教材为例,一句话总结个人的理解。

OO回顾

四大概念

抽象:抽象为了简化问题,简单即美,相信我,人类很笨

继承:为了便于扩展或改写原有的功能

多态:为了便于改写原有的功能

封装:组件化,便于理解、替换与复用,因此系统会更加灵活(后文提到封装XXX时,就不具体说这些优点了)

类关系

依赖:非常弱的关系,A中用过B即为A依赖B

继承:子类

实现:接口/抽象类

关联(也常看做包含)

聚合:has-a,部分与整体的生命周期可以不同

组合:contains-a,更强,部分依赖整体的生命周期

接口

这里单独强调下接口,作为最重要的抽象形式之一,接口可以看做设计模式的基......

系统设计-杂谈

系统就像任何一个有机体一样,首要目标是存活,其次的目标是活得更好,即提升ROI以增强自身存活的概率,与技术指标的关系为:

存活

有价值(功能性)

性能:节省用户的时间资源

可扩展性/灵活性:保证能够根据需求变化而改进

适应环境(非功能性)

当前

可用性

可测试性:故障前

可靠性/健壮性:故障中

可维护性:故障后

安全性

未来

可伸缩性

活得更好(非功能性)

可复用性:降低成本

资源利用率

// TODO

系统设计-高可用

首先需明确,“可用”是指服务能够正常提供服务,因此,uptime与availability在这里并不是一回事。关于衡量可用性的MTBF、MTTR、MTTF等指标可以参考这里。

// TODO

故障前

并发控制(Concurrency Control)

思想

超载丢弃

请求队列(利用缓冲池在可接受的响应速度下处理更多的请求,buffer_size = QPS * response_time)

优点:

保证服务质量

避免连锁故障(Cascading failure)

灵活控制流量

实现:

Haproxy