前言
这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
以下是最近看分布式架构摘录的一些要点,书籍《从零开始学架构》
分层架构
- 分层架构是很常见的架构模式,也叫N层架构,通常情况下,N至少是2层,一般不
- 超过5层。
- C/S架构、B/S架构划分的对象是整个业务系统,划分的维度是用户交互。
- MVC架构、MVP架构划分的对象是单个业务子系统,划分的维度是职责,将不同的职责任划分到独立层。
- 逻辑分层架构划分的对象可以是单个业务子系统,也可以是整个业务系统,划分的维度也是职责。
- 无论采取何种分层维度,分层架构设计最核心的一点就是需要保证各层之间的差异足够清晰,边界足够明显。
- 分层架构之所以能够较好地支撑系统扩展,本质在于:隔离关注点。
- 分层结构的一个特点就是层层传递。分层架构一个典型的缺点就是性能。
SOA架构(Service-Oriented Architecture)
- SOA提出的背景是企业内部的IT系统重复建设且效率低下。
- SOA更多是在传统企业(例如,制造业、金融业等)落地和推广,在互联网行业并没有大规模的实践和推广。
- SOA三个关键概念:服务、ESB和松耦合。
- SOA架构中,每项业务功能都是一项服务,服务就意味着要对外提供开放的能力。
- SOA使用ESB来屏蔽异构系统对外提供各种不同的接口方式,以此来达到服务间高效的互联互通。
- SOA解决了传统IT系统重复建设和扩展效率低的问题,但其本身也引入了更多的复杂性,SOA最广为人诟病的就是ESB.
- SOA的ESB设计也是无奈之举,企业在应用SOA时,各种异构的IT系统都已经存在很多年了,完全重写或按照统一标准进行改造的成本是非常大的,只能通过ESB方式去适配已经存在的各种异构系统。
微服务
- 微服务概念的历史要早得多,也不是Martin Flower创造出来的,Martin只是将微服务进行了系统的阐述。
- 微服务是一种和SOA相似但本质上不同的架构理念。
- 微服务的三个关键词:small、lightweight、.automated.
- 微服务和SOA不存在孰优孰劣,只是应用场景不同。
- 微服务并不是没有代价,而是会带来系统复杂度、运维复杂度、性能下降等问题。微服务拆分的粒度遵循“三个火枪手”原则。
- 真正决定微服务成败的,恰恰是那个被大部分人都忽略的“automated”,而不是“small”和“lightweight'”。
- 微服务并不是很多人认为的那样又简单又轻量级,要做好微服务,基础设施是必不可少的。
微内核
- 微内核架构也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构。
- 微内核架构通常用于实现基于产品的应用。
- 微内核架构包含两类组件:核心系统(core system)和插件模块(plug-in modules)..
- 微内核的核心系统设计的关键技术有几部分:插件管理、插件连接和插件通信。
- Eclipse采用OSGi标准后,OSGi更是成为首选的插件化标准。