架构学习 | 青训营笔记

89 阅读3分钟

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

一、架构定义解析

架构,又称软件架构:

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

下面是从整体架构逐步拆分的一个演变

1.1 单机架构

软件系统需要具备对外提供服务,而单机就是把所有功能都实现在一个进程里,并部署在一台机器上。

优点:

  • 简单

缺点:

  • 运维需要停服
  • C10K problem)若遇到大流量,则需要排队

1.2 单体架构(垂直切分)

单体架构:分布式部署。

垂直应用架构

垂直应用架构:按应用垂直切分的单体(有一个中心模块负责分发具体业务,而分布式的单体都按业务能力来划分) 优点:

  • 水平扩容
  • 运维不需要停服

缺点:

  • 职责太多,开发效率不高
  • 爆炸半径大(一个单体出问题,整个链都会出现问题)

1.3 SOA架构(微服务|水平切分)

SOA(Service-Oriented Architecture),其特点为:

  1. 将应用的不同功能单元抽象为服务
  1. 定义服务之间的通信标准

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

问题:

  • 数据一致性
  • 高可用
  • 治理
  • 解耦?过微?

二、企业级后端架构的剖析

2.1云计算

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

基础

  • 虚拟化技术(整个机器虚拟化OR一个机器虚拟多个)
  • 编排方式

架构(下面列举的从上到下是有底向上的模块)

  • laas (lnfrastructure as a Service)--类比为租房平台,不管房子在哪,你只需要关注有没有房子,然后交钱即可
  • PaaS (Platform as a Service)----类比为装修,不管需要什么材料,你只需要给装修公司钱即可
  • SaaS (Software as a Service)---类比招新,相当于直接雇佣培训过的师傅,不用从头再教一遍了
  • Faas (Function as a Service)---类比蛋糕机,比手工要方便太多。

2.2 云原生

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

image.png 弹性计算资源类型:

  • 服务资源调度

    • 微服务:和面、雕花(占用计算资源少)
    • 大服务:烤箱(占用计算资源较多)
  • 计算资源调度

    • 在线:热销榜单
    • 离线:热销榜单更新
  • 消息队列

    • 在线:削峰、解耦
    • 离线:大数据分析中的套件通过消息队列搭建起来

弹性存储资源类型:

  • 经典

    • 对象:宣传视频
    • 大数据:用户消费记录。
  • 关系型数据库

    • 收银记录
  • 元数据

    • 服务发现:蛋糕店通讯录
  • NoSQL ·KV:来个xx蛋糕

Dev0ps是云原生时代软件交付的利器,贯穿整个软件开发周期。

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

image.png 服务网格

服务网格(Service Mesh):

  • 微服务之间通讯的中间层
  • 高性能网络代理
  • 业务代码与治理解耦

【优点】相比较于RPC/HTTP框架:

  • 异构系统治理统一化
  • 与业务进程解耦,生命周期易管理

image.png