【好书分享】软件架构基础(FOSA)

126 阅读3分钟

背景

软件架构基础这本书系统的介绍了架构设计的各方面知识,读下来收益颇丰; 摘录几句名言:

  • 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

层级架构是最简单,最直接的单机架构;
主要是注意下:层级的划分以及层级与层级之间的隔离;

image.png

11.pipeline

任务流模式,是的,和命令行cat file|grep 'hello' | wc -l 是一样的;

image.png

12.microkernel

这个比较神奇,直白些描述,就是一个可以插拔的插件系统;core-system+component.

if [条件1] {
    component-1()
} else if [条件2] {
    component-2()
} else {
    panic("no component")
}

13. service-based

按照服务的逻辑去划分的分布式架构;这个应该是大家最常见的模式了:业务逻辑+数据库;

image.png

14.event-driven

正如其名字所描述的,事件触发架构;
特别要注意的是:事件触发机制就是分布式场景下的pipeline,但是pipeline带来了一个问题:

  • 流程不可控;
    因此基于是否可控,事件触发有一个中心决策(发牌员)的变种架构;

image.png

image.png

15.space-based

带有数据同步的多机房架构;
这个听起来很高大上,但是其实还好;在大公司,像机房间数据库同步等功能,都是装好的组件,因此实际操作起来,也还比较方便;

16.service-oriented

这个架构有一定的历史原因,是在公司变大变成企业的过程中演化的;
核心词只有一个: reuse;
所以没有太多可说的:类比下大型公司的基础架构团队做的事情就可以了,所有除了业务逻辑以外的事情,都有公共库、公共组件;

17.microservice

这个架构和刚才的16章恰好相反,微服务:宁愿重复,也不愿意reuse;
就是要极致的解耦;

18.choosing the appropriate arch style

架构选择的核心问题:

  • 分布式or中心式
  • 数据在哪里
  • 同步or异步 从这个角度看,微服务,容器,监控这些实现也只是旁路的事情;

Part3: 技术与软技能

看标题就是知道,又是比较虚的内容,主要是讲了

  • 做技术决策,做决策的记录
  • 风险评估:
    • 评分:造成的影响 * 发生的概率
    • 维度:扩展性,可用性,性能,安全,数据一致性;
  • 架构的图形展示
  • 使团队有效率
  • 沟通与领导力
  • 职业生涯规划

总结

这种书其实本身的总结性还是比较强的,因此读完之后,最大的感受就是:纸上得来终觉浅,绝知此事要躬行。多实践,多思考,从实践中来,再回到实践中去;