架构初探 | 青训营笔记

98 阅读2分钟

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

架构初探 | 青训营笔记

软件架构

  • 软件整体结构与组件的抽象描述
  • 用于指导软件系统各方面的设计
    简而言之,做一件事的系统方法。

SOA(service-oriented architecture)

  1. 将应用的不同功能单元抽象为服务
  2. 定义服务间的通信标准
    微服务架构: SOA去中心化的演进方向

问题:

  • 数据一致性
  • 高可用:如何合作
  • 治理:如何容灾
  • 解耦 vs 过微

企业级后端架构剖析

云计算

通过软件自动化管理,提供计算资源的服务网络
IaaS/PaaS/SaaS/FaaS

云原生

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

image.png

用户不用关心底层资源;业务松耦合,但是可以紧密联系;开发和运营技术;

  • 弹性计算资源
    • 服务资源调度
    • 计算资源调度
    • 消息队列
  • 弹性存储资源
    • 经典存储
    • 关系型数据库
    • 元数据
    • NoSQL
  • 服务网格
    • 微服务之间通讯的中间层
    • 高性能网络代理
    • 业务代码与治理解耦:治理体现在数据面

企业级后端架构的挑战

  • 基础设施
    • 物理资源
      • 机器
      • 带宽
    • 资源利用率受制于部署服务
  • 用户层面
    • 网络通信开销较大
    • 网络抖动导致运维成本提高
    • 不同机器处理相同服务,资源消耗不同

离在线资源并池。

思路:根据业务特点,弹性调配资源,把不用的资源让出来。 image.png

同一个机器怎么做离在线隔离?
离线在线使用不同线程,划分CPU。

自动扩缩容
利用在线业务潮汐性,根据某些指标扩缩容

扩缩容依据什么指标
CPU利用率(比如CPU p50,即50百分位数,主要指标),内存

微服务亲和性部署

A,B两个服务确实是不同的两个服务,但两者之间通信开销大。解决思路:微服务亲和性部署

  • 将满足亲和性条件的容器调度到一台宿主机
  • 微服务中间件与服务网格通过共享内存通信
  • 服务网格控制面实施灵活、动态地流量调度

CPU水位负载均衡

好处:

  • 能够为自动扩缩容提供准确参考
  • 平滑不同机器硬件差异带来的算力差异

解决思路:

  • IaaS
    • 宿主机提供资源探针,告诉上层 下层的资源情况,来进行负载均衡决策
  • 服务网格
    • 动态负载均衡