背景
软件架构基础这本书系统的介绍了架构设计的各方面知识,读下来收益颇丰; 摘录几句名言:
- Everything in software architecture is trade-off
- why is more important than how
章节梗概
Part1 Doundations,(1-8小节)
主要阐述了一些基础的概念;包括:模块化,架构的数据统计,如何定义需求,不同角色的关注点等;这些知识比较虚,也不好怎么总结下,感兴趣的同学可以自己看下;
Part2 architecture styles(9-18小节)
9-18小节具体阐述了各种架构风格与示例,是本书的核心所在;
单机粒度下架构架构:
- layer(10)
- pipeline(11)
- microkernel(12)
分布式场景下架构: - service-based(13)
- event-driven(14)
- space-based(15)
- service-oriented(16)
- micro-service(17)
9.Foundations
- 单机vs分布式的一些考虑点
- the network is reliable
- latency is zero
- bandwidth is infinite
- the network is secure
- the topology never change
- thers is only one admin
- transport cost is zero
- the network is homogeneous
10. layered
层级架构是最简单,最直接的单机架构;
主要是注意下:层级的划分以及层级与层级之间的隔离;
11.pipeline
任务流模式,是的,和命令行cat file|grep 'hello' | wc -l 是一样的;
12.microkernel
这个比较神奇,直白些描述,就是一个可以插拔的插件系统;core-system+component.
if [条件1] {
component-1()
} else if [条件2] {
component-2()
} else {
panic("no component")
}
13. service-based
按照服务的逻辑去划分的分布式架构;这个应该是大家最常见的模式了:业务逻辑+数据库;
14.event-driven
正如其名字所描述的,事件触发架构;
特别要注意的是:事件触发机制就是分布式场景下的pipeline,但是pipeline带来了一个问题:
- 流程不可控;
因此基于是否可控,事件触发有一个中心决策(发牌员)的变种架构;
15.space-based
带有数据同步的多机房架构;
这个听起来很高大上,但是其实还好;在大公司,像机房间数据库同步等功能,都是装好的组件,因此实际操作起来,也还比较方便;
16.service-oriented
这个架构有一定的历史原因,是在公司变大变成企业的过程中演化的;
核心词只有一个: reuse;
所以没有太多可说的:类比下大型公司的基础架构团队做的事情就可以了,所有除了业务逻辑以外的事情,都有公共库、公共组件;
17.microservice
这个架构和刚才的16章恰好相反,微服务:宁愿重复,也不愿意reuse;
就是要极致的解耦;
18.choosing the appropriate arch style
架构选择的核心问题:
- 分布式or中心式
- 数据在哪里
- 同步or异步 从这个角度看,微服务,容器,监控这些实现也只是旁路的事情;
Part3: 技术与软技能
看标题就是知道,又是比较虚的内容,主要是讲了
- 做技术决策,做决策的记录
- 风险评估:
- 评分:造成的影响 * 发生的概率
- 维度:扩展性,可用性,性能,安全,数据一致性;
- 架构的图形展示
- 使团队有效率
- 沟通与领导力
- 职业生涯规划
总结
这种书其实本身的总结性还是比较强的,因此读完之后,最大的感受就是:纸上得来终觉浅,绝知此事要躬行。多实践,多思考,从实践中来,再回到实践中去;