架构相关 | 青训营笔记

67 阅读3分钟

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

什么是架构

架构:软件架构

  • 软件整体结构和组件的抽象描述
  • 指导软件系统的各个方面设计

实现一个软件有很多种方法,架构在 方法选择 上起着至关重要的作用

单机

所有功能都实现在一个进程里,并部署在一台机器上

  • 优点
    • 简单
  • 问题
    • C10K Problem
    • 运维需要停服

单体、垂直应用|垂直切分

单体架构:分布式部署

垂直应用架构:按应用垂直切分的单体

  • 优点
    • 水平扩容
    • 运维不需要停服
  • 问题
    • 职责太多,开发效率不高
    • 爆炸半径大()

SOA、微服务|水平切分

SOA(Service-Oriented Architecture)

  • 将应用的不同功能单元抽象为服务
  • 定义服务之间的通信标准(中心)

微服务架构:SOA的去中心化演进方向

image.png

架构演进

初衷:

  • 需求量越来越大
  • 越做越复杂,需要分工

演进思路:

  • 垂直切分
  • 水平切分

企业级后端架构

云计算

云计算,指通过软件自动化管理,提供计算资源的服务网络,使现代互联网大规模熟悉分析和存储的基石。

基础:

  • 虚拟化技术——整租 vs 合租
  • 编排方案——业主 vs 租赁平台

架构:

  • IaaS (Infrastructure as a Service)
  • PaaS (Platform as a Service)
  • SaaS (Software as a Service)
  • FaaS (Function as a Service)

云原生

云原生:云原生技术为组织在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。

image.png

弹性计算资源类型:

  • 服务资源调度
    • 微服务
    • 大服务
  • 计算资源调度
    • 在线
    • 离线
  • 消息队列
    • 在线:削峰、解耦
    • 离线:大数据分析

弹性存储资源:

  • 经典
    • 对象:视频
    • 大数据:用户消费记录
  • 关系型数据库
    • 收银记录
  • 元数据
    • 服务发现:客户通讯录?
  • NoSQL
    • KV键值对

将存储资源当作服务一样

DevOps

DevOps 是云原生时代软件交付的离奇,贯穿整个软件开发周期。

结合自动化流程,提高软件开发、交付效率

image.png

微服务架构

通信标准:

  • HTTP(RESTful API)
  • RPC(Thrift,gRPC)

微服务中间件RPC vs HTTP

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

云原生场景下,微服务可以不实现符合通信标准的交互逻辑,可交由框架实现

服务网格

服务网格的数据平面代理与业务进程采取进程间通信的模式,使得流量相关的逻辑(包含治理)与业务进程解耦,生命周期也更容易管理