架构(1)|青训营笔记

100 阅读3分钟

1. 什么是架构

定义:软件的整体结构,各组件的抽象描述,指导软件系统的设计

实际问题:如何做蛋糕,怎么卖蛋糕。

单机:
  • 所有功能在同一个进程中实现,部署在同一台机器。优点:简单。缺点:运维需要停服,C10K(单机服务瓶颈)。
单体、垂直应用|垂直切分:
  • 单体架构,分布式部署。多雇佣几个师傅,大堂经理分流。一个大师傅切换几个小师傅

  • 垂直应用架构:按应用垂直切分的单体。不同口味的蛋糕由不同的师傅完成

    • 优点:水平扩容、运维不需要停服
    • 缺点:每个师傅的指责还是太高,开发效率不高;爆炸半径大,某个师傅出了问题,这个系统收到影响。牵一发而动全身
SOA架构、微服务|水平切分
  • SOA:service-oriented- architecture。应用的不同功能单元抽象成服务,定义服务之间交互通信标准

    • 不同口味由不同的师傅负责。下层由和面、烘烤等的底层师傅负责。两层之间通过规定的沟通方式沟通。相比于垂直应用架构,做了一层水平的切分
  • 微服务架构:SOA的去中心化演进

    • 职责拆分更细致
    • 服务之间自由交流,不通过中心化的交流节点
  • 问题:

    • 数据一致性
    • 高可用:师傅之间如何合作
    • 治理:烤箱坏了,整体仍能运转
    • 解藕 vs 过微:运维成本

2. 企业级后端架构剖析

背景:扩大规模
  • 店面:买/租
  • 工人:家庭成员/招人
  • 制作方式:手工/机械
  • 工作中心:精进收益/商业发展
云计算
  • 软件自动化管理,提供存储、计算、网路资源

  • 基础:虚拟化技术(整租/合租)、编排方案(业主/租赁平台)

  • 架构

    • IaaS:买房子/房屋租赁
    • PaaS:清包/全包
    • SaaS:从零培训/培训班培训
    • Faas:手工制作/机器生产
云原生
  • 通过公有云、私有云、混合云,方便构建和运行可弹性扩展的应用
  • 弹性资源:虚拟化,扩缩容
  • 微服务:业务单元解藕,通信标准统一
  • DevOps:敏捷开发,CI/CD
  • 服务网格:业务与治理解构,异构系统的统一化治理,复杂的治理能力

弹性资源

  • 服务资源调度:微服务(和面)、大服务(烤箱)
  • 计算资源调度:在线(热销榜单)、离线(热销榜单更新)
  • 消息队列:在线(削峰、解藕)、离线(大数据分析)

弹性存储资源

  • 经典:对象(宣传视频)、大数据(用户消费记录)
  • 关系型数据库(收银记录)
  • 元数据:服务发现(通信录)
  • NoSQL:KV

DevOps

  • 自动化流程,提高软件交付效率,贯穿软件开发周期

微服务

  • 通信标准:HTTP(Restful API),RPC(Thrift、gRPC)
  • 微服务中间件

服务网格service mesh

  • 数据和业务进程解构