分层架构-面向流程
什么是分层架构?
它是将整体系统拆分成 N 个层次,每个层次有独立的职责,多个层次协同提供完整的功能。
常见的分层架构有哪些?
MVC、TCP/IP协议栈、Linux系统
分层架构核心是什么?
保证隔层之间边界明显,层与层之间依赖稳定,支撑快速扩展。
分层架构的优缺点是什么?
优点:
- 强制约束,代码规范
- 简化系统设计,专注某一层次事情
- 方便复用。底层能被多个业务上层复用,可以参考云开发网关架构设计
- 便于横向扩展。比如说,业务逻辑里面包含有比较复杂的计算,导致 CPU 成为性能的瓶颈,那这样就可以把逻辑层单独抽取出来独立部署,然后只对逻辑层来做扩展,这相比于针对整体系统扩展所付出的代价就要小得多了。
缺点:
- 性能,请求可能需要穿过多层。
SOA-面向服务
SOA 有 3 个关键概念:
- 服务:所有业务功能都是服务,可以对外提供
- ESB(企业服务总线):类似于计算机总线,用于将各个系统“串”在一起
- 松耦合
SOA 解决了传统 IT 功能“重复建设”的问题,但是 ESB 复杂度较高。它要实现各个服务之间协议转换、数据转换、动态路由等功能。
SOA 多用于某些服务运行多年,无法改造重写,包括数据协议等方面。此时借助 SOA 架构,为 ESB 接入老服务的数据协议,让其他服务可以调用。
微服务-面向服务
微服务适用于快速、轻量的互联网系统。通常来说,数据传输协议均支持 http,接口规范遵循 RESTful 风格。所以不用向 SOA,需要 ESB 来处理异构系统。
微服务的难点在于:
- 服务划分过细,依赖复杂
- 调用链长,性能下降
- 问题定位困难
- 需要服务治理
微服务和 SOA 区别是什么?
微服务是把单个系统拆分,SOA 是把系统整合,方向刚好相反。
微服务有哪些基础建设?
自动化:测试(单测、e2e)、部署(CI)
配置中心:统一下发,方便管理
数据协议:传输协议(http)、接口规范(restful)、编码格式(json)
API 网关:提供外部系统访问的接口,处理鉴权(能否接入)、权限控制(针对服务接口)、路由、频控、安全加密、负载均衡等问题
服务发现:服务注册、请求转发、负载均衡等,分为自理式和代理式。常用自理式,对服务的请求,不经过“中心”
服务监控
服务跟踪:跟踪请求在服务中的完整链路