架构 | 青训营笔记

47 阅读2分钟

架构

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

定义

软件架构

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

单机

把所有功能都实现在一个进程里,部署到一台机器。
优点:简单
缺点:C10K problem、运维需要停服。

分布式架构(单体架构、垂直应用架构)

优点:

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

SOA架构(Service-Oriented Architecture)

  1. 将应用的不同功能单元抽象为服务
  2. 定义服务之间的通信标准 问题:
  • 数据一致性
  • 高可用
  • 治理
  • 解耦 vs 过微

微服务架构

SOA的 去中心化演进方向

后端架构

云计算

通过软件自动化管理,提供计算资源的服务网络 基础:

  • 虚拟化技术
  • 编排方案 架构:
  • IaaS(Infrastructure as a Service)
  • PaaS(Platform as a Service)
  • SaaS(Software as a Service)
  • FaaS(Function as a Service)

云原生

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

  • 弹性资源
  • 微服务架构
  • DevOps
  • 服务网格

弹性资源

弹性计算资源

  • 服务资源调度
  • 计算资源调度
  • 消息队列

弹性存储资源

  • 经典
  • 关系型数据库
  • 元数据
  • NoSQL

微服务架构

通信标准

  • HTTP
  • RPC 中间件(RPC VS HTTP)
  • 性能
  • 服务治理
  • 协议可理解性

挑战

基础设施

  • 物理资源有限
  • 资源利用率受制于部署服务

用户层面

  • 网络通信开销大
  • 网络抖动导致运维成本大
  • 异构环境下,不同实例资源水位不均

离在线资源并池

  • 提高物理资源利用率
  • 提供更多的弹性资源

微服务亲和性部署

通过将微服务调用形态与资源调度系统结合,将一些调用关系紧密、通信量大的服务部署在同一个机器上,并使用IPC代替RPC的方式,降低网络通信带来的开销

流量治理

屏蔽异构环境的算力差异

实战