第一部分:什么是架构?
一句话:架构是针对所有重要问题做出的重要决策。
不同公司或者相同公司在不同的阶段所面临的问题不同,架构自然也会有所不同。
个人认为,不存在称之为完美的架构,只会存在最适合的。面对的场景,着重的目的不同,那么相应的决策也会不同(有点废话)。
架构的分类。
作者从技术的角度,把软件从底向上分层,做了架构的分类。
第一层:基础架构
基础架构指的是云平台、操作系统、网络、存储、数据库和编译等。
第二层:中间件和大数据平台
中间件,例如分布式服务中间件、消息中间件、数据库中间件、缓存中间件等。
第三层:业务系统架构
- 通用软件系统。例如常用办公软件、播放器。
- 离线业务。比如各种基于数据的离线计算、数据挖掘。
- 大型在线系统。比如电商、广告、搜索、推荐、ERP或者CRM等。
-
什么是架构的道?
抽象点说,对于技术问题,主要是指高并发、高可用和一致性方面。对于业务问题,主要指业务需求分析和建模。
那么,我们在面对这些问题的时候, 是通过大量的业务系统实践,在实践基础上进行的思考和总结,进而提炼出的一些方法论,这就是道。
更具体的说,比如,
- 数据库如何分库分表?
- 分库分表的时机如何确定?
- 缓存一致性问题如何解决?
- 如何拆分服务?
- ......
等等问题,这些问题解决方案并不是凭空出现的,而是通过大量的实践落地进而总结产生的一套解决方案核心思路。
所以道很多时候是"虚"的东西,越虚意味着就越抽象,如果两个人在讨论某个问题,而对一些专业理论的认知还未处于同一水平上,那听起来就只能离谱了。
所以要讲道之前,得先有术。术就是指对应具体的语言,框架或者中间件使用姿势。这些都是比较具体的东西,实操性强,方便大家理解。
架构的道和术,都不能偏废,一方面需要不断实践(术),在实践中深入原理。进而把实践的东西抽象,总结出来,形成方法论(道)。 不断地用道来指导新的术,在新的术中再总结出新的道,如此循环往复。
以上是第一部分内容。