软件架构初探 | 青训营笔记

126 阅读3分钟

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


本堂课主要内容是软件架构初探,下面主要是我个人听课时的一些笔记,后续企业级后端架构的挑战后端架构实战两部分内容见下一篇笔记。

个人笔记

什么是架构

  • 架构,又称软件架构,

    是有关软件整体结构与组件的抽象描述

    用于指导软件系统各个方面的设计

  • 几种经典的架构:

    • 单机架构:

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

      缺点:

      进行运维时需要停止服务

    • 单体、垂直应用:

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

      缺点:

      • 指责太多,开发效率低
      • 爆炸半径大
    • SOA架构(Service-Oriented Architecture)

      • 将应用的不同功能单元抽象为服务
      • 定义服务之间的通信标准
    • 微服务架构:在SOA架构的基础上进行去中心化演进

      一些问题:

      • 数据一致性
      • 高可用问题
      • 治理/容灾问题
      • 运维成本问题

企业级后端架构剖析

  • 云计算:

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

    其基础是:

    • 虚拟化技术
    • 编排方案

    四种架构:

    • laaS (Infrastructure as a Service)
    • PaaS (Platform as a Service)
    • SaaS (Software as a Service)
    • FaaS (Function as a Service)
  • 云原生:

    主要涉及四大方面:

    • 弹性资源:基于虚拟化容器以及灵活的编排调度机制,可以为云服务提供快速扩缩容能力,而且极大程度地提高了*物理资源的利用率**。在这方面,kubernetes 技术已经称为了业界的标准。

      弹性资源又分为

      • 弹性计算资源:如服务资源、计算资源、消息队列(也是一种特殊的计算资源)等
      • 弹性存储资源:如经典的对象、大数据,关系型数据库,元数据,以及NoSQL类型的数据
    • 微服务架构:微服务架构依托于功能单元解构,使得云服务具备了快速迭代的可能,业务得以迅速发展;统一的通信标准使得各组件之间的交互变的更容易。

      通信标准

      • HTTP(RESTful API)
      • RPC(Thrift, gRPC)
    • DevOps设计→开发→测试→交付→开发→测试→交付自动化的流程使得软件的工作流程更高效,将微服务架构的优势发挥的淋漓尽致

    • 服务网格(Service Mesh):如果说微服务架构的重要进步,是将庞大的单体服务按照业务功能解耦开来,那么,服务网格的重要进步就是将业务逻辑与网络通信和治理解耦开来。业务不再需要关心异构系统中RPC中间件治理能力的不统一, 也使得复杂的治理能力的落地成为可能。

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

      相比较于RPC/HTTP 框架:

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

参考

  • 字节内部课 —【后端入门 - 开发与迭代】