架构初探 - 谁动了我的蛋糕 | 青训营笔记

46 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

架构

架构在方法选择上起至关重要的作用

单机 问题:

垂直划分

  • 单体架构:分布式部署
  • 垂直应用架构:按应用垂直分的单体

水平划分

  • SOA 架构:
  • 微服务架构

二者区别在于服务间的通信方式

问题:

  • 数据一致性
  • 高可用
  • 治理(容灾)
  • 解耦 vs 过微

云计算

Iaas、Paas、SaaS、FaaS(Function)

云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法

将存储资源当成服务一样

云原生之微服务架构

  • HTTP
  • RPC

架构面临的问题

一些解决问题的方法如下:

离在线资源并池

降低物理资源成本,提供更多弹性资源 在线业务特点:

  • IO 密集
  • 潮汐型、实时性 离线服务特点:
  • 计算密集
  • 非实时

问题:同一个机器怎么做离在线资源隔离 cpu 核心隔离,或者 cgroup

自动扩缩容

问题:扩缩容依据什么指标 cpu 统计分位数,比如 cpu p50(数据集按升序排列,第 50 分位置大的数据(即升序排列后排在 50%位置的数据) 内存利用率 注意:IO 比较难量化,扩缩容根据 IO 难度较大

微服务亲和性部署

收益:降低业务成本(正反序列化的成本)、提高服务可用性

将满足亲和性条件的容器调度到一台宿主机 微服务中间件与服务网格通过共享内存通信

流量治理

解决思路:基于微服务中间件 & 服务网格的流量治理

  • 熔断、重试
  • 单元化
  • 复杂环境的流量调度

CPU 水位负载均衡

收益:为自动扩缩容提供正向输入、打平不同宿主机异构环境的算力差异

解决思路:

  • IaaS:提供资源探针
  • 服务网格:动态负载均衡

输入:

  • 服务网格数据面:支持带权重的负载均衡策略
  • 注册中心存储了所有容器的权重信息
  • 宿主机提供:
    • 容器的资源使用情况
    • 物理资源信息(cpu 型号)

关键点:

  • 紧急回滚能力
  • 大规模
  • 极端场景

权重:可理解为需要多少流量

自适应静态权重

简单、中间件无适配成本

问题:

  • 无紧急回滚能力
  • 缺乏运行时自适应能力

自适应动态权重 Alpha

方案:

  • 容器动态权重的自适应调整
  • 服务网格的服务发现 & 流量调度能力

缺点:

  • 过度流量倾斜会带来异常

自适应动态权重 Beta

方案:

  • 服务网格上报 RPC 指标

缺点:

  • 时许数据库压力大
  • 动态权重决策中心职责越来越大

自适应动态权重 Release

演进方向:

  • 微服务化
  • 引入消息队列削峰、解耦
  • 离在线链路切分
  • 梳理强弱依赖