可扩展设计:分层架构、SOA、微服务

分层架构-面向流程

什么是分层架构?

它是将整体系统拆分成 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 网关:提供外部系统访问的接口,处理鉴权(能否接入)、权限控制(针对服务接口)、路由、频控、安全加密、负载均衡等问题

  • 服务发现:服务注册、请求转发、负载均衡等,分为自理式和代理式。常用自理式,对服务的请求,不经过“中心”

    007S8ZIlgy1gh6ohf7ejdj30dl0d3t9s.jpg

  • 服务监控

  • 服务跟踪:跟踪请求在服务中的完整链路