架构初探 | 青训营笔记

97 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记

架构类型

  • 单机架构

    定义: 只有1个进程,部署在1个机器上。

    问题:

    • 运维需要停服
    • 承载能力有限
  • 单体架构

    定义:只有1个进程,部署在多个机器上。

    问题:

    • 进程责任太大,变得臃肿
    • 爆炸半径大,一个小模块的问题,可能会导致整个进程崩溃
  • 垂直架构

    定义:垂直切分,多个进程分工。

    问题:没有根本解决单体架构的问题

  • 面向服务架构 SOA

    定义:在垂直架构的基础上,水平切分,将应用的不同单元抽象为服务,服务之间使用定义的通信标准通信,成为有先后顺序的流程。

    问题:ESB (企业服务总线) 往往需要一整套解决方案

  • 微服务架构

    定义:在SOA架构的基础上,将服务细化为一组微服务。

    问题:运维成本高

云计算和云原生

云计算

  • 云计算基础

    • 虚拟化技术

      • 硬件层面(VM 虚拟机):KVM/Xen/VMware
      • 操作系统层面(Container 容器): LCX/Docker/Kata Container
      • 网络层面:Linux Bridge/Open v Switch
    • 编排方案

      • VM编排 - OpenStack/VMWare Workstation
      • Container编排 - Kubernetes/Docker Swarm/Kata Container
  • 云计算架构

    • 云服务层次

      • IaaS - 云基础设施,对底层硬件资源池的抽象
      • PaaS - 基于资源池抽象,对上层提供的弹性资源平台
      • SaaS - 基于弹性资源平台构建的云服务
      • FaaS - 更轻量级的函数服务
    • 云部署模式

      • 私有云 - 企业自用
      • 公有云 - AWS/Azure/Google Cloud/Huawei
      • 混合云

云原生

  • 弹性资源

    • 弹性计算资源:

      计算资源调度:

      • 在线计算:互联网后端服务
      • 离线计算:大数据分析。Map-Reduce/Spark/Flinnk

      消息队列:

      • 在线队列:削峰、解耦
      • 离线队列:结合数据分析的一整套方案,如 ELK
    • 弹性存储资源:

      • 对象存储:视频、图片等。结合 CDN 等技术,可以为应用提供丰富的多媒体能力
      • 大数据存储:应用日志、用户数据等。结合数据挖掘、机器学习等技术,提高应用的体验
      • 元数据存储:服务发现等
      • SQL数据库
      • NoSQL数据库:Redis、MongoDB等
  • 微服务架构

    微服务架构下,服务之间的通讯标准是基于协议而不是 ESB 的。

    • HTTP
    • RPC:Apache Thrift/gRPC

    HTTP和RPC的优劣:

    • 性能:RPC 协议往往具备较好的压缩率,性能较高。如 Thrift, Protocol Buffers
    • 服务治理:RPC 中间件往往集成了丰富的服务治理能力。如 熔断、降级、超时等
    • 可解释性:HTTP 通信的协议往往首选 JSON,可解释性、可调试性更好
  • 服务网格

    概念:

    • 是微服务之间通讯的中间层
    • 一个高性能的 4 层网络代理
    • 将流量层面的逻辑与业务进程解耦

    服务网格相比较于 RPC/HTTP 框架:

    • 实现了异构系统治理体验的统一化
    • 服务网格的数据平面代理与业务进程采取进程间通信的模式,使得流量相关的逻辑(包含治理)与业务进程解耦,生命周期也更容易管理