【后端开发之架构初探 | 青训营笔记】

99 阅读3分钟

这是我参与【第五届青训营】伴学笔记创作活动的第十天。今天就写一下在青训营学的一些基础架构有关的理论知识。

后端开发之架构

image.png

什么是架构—定义

又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。实现一个软件有很多种方法,架构在方法选择上起着至关重要的作用。

单机架构

优点:简单

缺点:运维需要停服、C10K probelm (不能支持多并发连接)

1.png

单体架构 + 垂直应用架构

优点:水平扩容、运维不需要停服

缺点:职责多,开发效率不高、爆炸半径大

2.png

SOA 架构 + 微服务架构

SOA:将应用的不同功能单元抽象为服务,定义服务之间的通信标准。

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

问题

  1. 数据一致性
  2. 高可用(如何合作)
  3. 治理
  4. 解耦 vs 过微

企业级后端架构剖析

问题: 需要扩大规模,店面怎么盘,师傅怎么招,工作重心偏移等。

云计算

  1. 定义:是通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。

  2. 基础:

    • 虚拟化技术
    • 编排方案
  3. 架构:

    • IaaS ( 基础设施即服务 )
    • PaaS (平台即服务)
    • SaaS (软件即服务)
    • Faas (功能服务化)

云原生

3.png

弹性计算资源

  1. 服务资源调度(微服务 vs 大服务)
  2. 计算资源调度 (在线 vs 离线)
  3. 消息队列 (在线 vs 离线)

弹性存储资源

  1. 经典资源(对象, 大数据)
  2. 关系数据库
  3. 元数据
  4. NoSQL

存储方法:将存储资源当成服务一样

DevOps

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

微服务架构

微服务有关知识可以参考这篇文章: 【微服务 + RPC | 青训营笔记】 - 掘金 (juejin.cn)

通信标准:Http vs RPC

主要方案:交给框架,如 RPC 的 gRPC

服务网格(Service Mesh)

作用:微服务之间通讯的中间层,高性能网络代理,业务代码与治理解耦。

企业级后端架构的挑战

面临的问题

  • 基础设施层面:

    1. 物理资源是有限的(机器 & 带宽)
    2. 资源利用率受制于部署服务
  • 用户层面

    1. 网络通信开销较大
    2. 网络抖动运维成本增加
    3. 异构环境下,不同实例资源水位不均。

采取的措施

离在线资源并池

4.png

方案:根据潮汐性,对离线和在线资源进行分配,cpu分配实现隔离。

核心受益:降低物理资源成本、提供更多的弹性资源,增加收入。

自动扩缩容

方案:利用在线业务潮汐性自动扩缩容

核心受益:降低业务成本

微服务亲和性部署

方案:将满足亲和性条件的容器调度到一台宿主机上,微服务中间件与服务网格通过共享内存通信,动态流量调度。

核心受益:降低业务成本,提高服务可用性

流量治理

CPU水位负载均衡