架构的基础概念 | 青训营笔记

85 阅读4分钟

架构

架构的定义

架构又称为软件架构是一个软件整体结构与组件的抽象描述,指导系统软件的各个方面,我们在选择开发一个软件的时候,可以有多种的的实现方法,架构便能够给我们指导选择的方法

架构的重要性在于为软件的开发打下坚实的基础,软件的开发才能更加地容易成功,在前人地基础上进行软件地开发,我们开发维护地工作在日后更加容易。

蛋糕坊开张地问题,我们将要面临如何制作蛋糕(使用独家秘方还是亲自做),对于这个理解我是:我们是直接自己从零开始搭建软件,还是使用目前已有的软件的结构或者功能进行软件的开发,制作完蛋糕我们还需要将蛋糕进行售卖,这就涉及到我们将如何把蛋糕卖给客户,解决完成我们就可以开始着手工作了

单价架构

软件系统具备对外提供服务,把所有的功能实现在一个进程里面,并在一台机器上进行部署,这样的好处是简单,但我们可能面临一个服务瓶颈和其他的一些问题,如果服务出现运行的错误,我们可能就需要进行服务的停止或者服务进行升级的时候,我们就没法对外提供服务

单体、垂直应用 | 垂直切分

  • 单体架构进行分布式部署
  • 垂直应用结构 按应用垂直切分的单体

优点

  • 水平扩容
  • 运维的时候不需要进行停机

但也面临着

  • 职责过多,开发的效率不高的
  • 爆炸的范围半径过大
  • 我们还需要面临者数据的一致性的问题

后面我们服务需要进行增加的时候,负责的功能范围也更加广,开发人员要更加多地关注业务的问题,毕竟一个人的精力有限,后面我们还需要进行功能的扩充的时候,可能就分身乏术了,也就无法更加地专注于业务地开发了

SOA、微服务 | 水平切分

SOA(Service-Oriented Architecture) 将应用分为不同地功能单元抽象为服务,在服务通信之间建立通信的协议

Note:服务作为一等公民

微服务架构: SOA 的去中心化演进方向,但我们可能会遇到

  • 数据的一致性
    • 装货台交付的蛋糕的数量
  • 高可用
    • 各个服务如何进行合作
  • 服务的管理
    • 某个服务出现问题,如何进行解决
  • 解耦 VS 过微
    • 运营的成本也增加了,是否值得

后端结构剖析

云计算

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

基础

  • 虚拟化技术(硬件/虚拟机、操作系统/容器、网络)
  • 编排方案(虚拟机编排方案openstack 容器编排方案 kubernets)

架构

  • Iass(Infrasturcture as a Service)
  • Pass(Platform as a Service)
  • Saas(Software as a Service)
  • Fass(Function as a Service)

云原生

云原生(云原生计算,是元计算发展到现在的的一种形态)技术为公司或者组织在公有云 自由云 混合云等新型的动态环境中,用于构建和运行可弹性扩展的应用,构建出容错性好,易于管理、具备较好观测性的云服务

代表技术

  • 容器化
  • 服务网格
  • 微服务
  • 不可变基础架构
  • 声明式api
20230217212359.png

云原生主的四个大方面

  • 弹性资源 - 基于虚拟化容器以及灵活的编排调度机制,提供快速扩缩容能力,提高了物理资源的利用率(kubernetes)
  • 微服务架构 - 微服务架构是云原生的重要基石之一。依托于功能单元解构,具备了快速迭代的可能,业务可以迅速发展
  • DevOps - 设计->开发->测试->交付->开发->测试->交付,自动化的流程使得软件的工作流程更高效
  • 服务网格 - 将业务逻辑与网络通信和治理解耦开来。业务不再需要关心异构系统中 RPC 中间件治理能力的不统一,也使得复杂的治理能力的落地成为可能

弹性计算资源

类型

  • 服务资源调度
    • 微服务
    • 大服务
  • 计算资源调度
    • 在线
    • 离线
  • 消息队列
    • 在线
    • 离线
  • 经典
    • 对象
    • 大数据
  • 关系型数据库
  • 元数据
    • 服务发现
  • NoSql
    • KV

Note: 将存储资源当成服务