架构初探|青训营笔记

61 阅读3分钟

t01fe978280753942c7.jpg

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


一、什么是架构

  • 是有关软件整体结构与组件的抽象描述
  • 用于指导软件系统各个方面的设计

单机

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

优点:简单

缺点:C10K问题,运维需要停服

单体架构:分布式部署

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

优点:水平扩容,运维不需停服 缺点:职责太多,开发效率不高;爆炸半径大

SOA (Service-Oriented Architecture)

1.将应用的不同功能单元抽象为服务

2.定义服务之间的通信标准

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

问题:数据一致性,高可用,治理,解耦vs过微


二、企业级后端架构剖析

云计算

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

  • 基础
    • 虚拟化
    • 编排
  • 架构
    • IaaS:基础设施服务,Infrastructure-as-a-service
    • PaaS:平台服务,Platform-as-a-service
    • SaaS:软件服务,Software-as-a-service
    • FaaS:功能即服务,Function -as-a-service

云原生

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

  • 弹性资源
    • 虚拟化容器
    • 快速扩缩容

服务资源调度:微服务,大服务

计算资源调度:在线,离线

存储资源:经典(对象,大数据),关系型数据库(收银记录),元数据(服务发现),NoSQL(kv)

消息队列:在线,离线

  • 微服务框架
    • 业务功能逻辑单元
    • 统一的通信标准

通信标准:HTTP,RPC

微服务中间体 RPC vs HTTP:

  1. 性能:RPC会进行通信的压缩,一般性能较好
  2. 服务治理:部分RPC中间件天生具备一定的治理能力
  3. 协议可解释性:http较好
  • DevOps

    • 敏捷开发
    • CI/CV
  • 服务网络

    • 业务与治理解构
    • 异构系统的治理统一化
    • 复杂治理能力

三、企业级后端架构的挑战

  • 基础设施层面
    • 物理资源是有限的
      • 机器
      • 带宽
    • 资源利用率受制于部署服务
  • 用户层面
    • 网络通信开销较大
    • 网络抖动造成运维成本较高
    • 异构环境下,不同实例资源水位不匀

离在线资源并池

在线业务特点:IO密集型为主,潮汐性、实时性

离线业务特点:计算密集型占多数,非实时性

同一机器如何做到离在线隔离:使用cgroup或虚拟化的方式,对cpu的核心做隔离,不同任务使用不同的cpu集合

自动扩缩容

扩缩容依据什么指标:对大部分微服务,使用cpu的某一个统计分位数

微服务亲合性部署

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

基于微服务中间件&服务网格的流量治理

  • 熔断、重试
  • 单元化
  • 复杂环境(功能、预览)的流量调度

CPU水位负载均衡

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