架构初探(1) | 青训营笔记

99 阅读4分钟

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

🧡 本堂课重点内容

  • 什么是架构
  • 企业级后端架构剖析
  • 企业级后端架构的挑战

🧡 知识点介绍

架构定义

💌 架构又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用。

重要性

  • 地基没打好,大厦容易倒。
  • 地基坚实了,大厦才能盖得高。
  • 站在巨人肩膀上,才能看得远。

常见结构

  • 单机:软件系统需要对外提供服务,单机就是把所有功能都实现在一个进程里,并部署在一台机器上。
    优点 简单。
    缺点 运维需要停服,请求排队。
  • 单体:分布式部署服务。
  • 垂直应用:按应用垂直切分单体。
    优点 水平扩容,运维不需要停服。
    缺点 开发效率不高,爆炸半径大。
  • SOA (Service-Oriented Architecture):水平切分,将应用的不同功能单元抽象为服务,定义服务之间的通信标准。
  • 微服务:SOA 去中心化的演进方向。

问题

  • 数据一致性:装货台共交付了多少蛋糕?
  • 高可用:这么多师傅,如何合作?
  • 治理:烤箱坏了,怎么容灾?
  • 解耦 vs 过微:运维成本高了,值当么?

后端架构剖析

💌 参考本人 CSDN 文章: 云计算与边缘计算大白话(●一●)_Jodie大白话的博客-CSDN博客_云计算与边缘智能 DevOps:开发&运维全流程_Jodie大白话的博客-CSDN博客_devops开发流程

弹性计算资源

  • 服务资源调度:微服务,单体服务。
  • 计算资源调度
    在线计算:热销榜单。
    离线计算:热销榜单更新,大数据分析。
  • 消息队列
    在线队列:削峰、解耦。
    离线队列:结合数据分析的一整套方案,如 ELK。

弹性存储资源

  • 经典存储
    对象存储:视频、图片等。结合 CDN 等技术,可以为应用提供丰富的多媒体能力。
    大数据存储:应用日志、用户数据等。结合数据挖掘、机器学习等技术,提高应用体验。
  • 关系型数据库:具有强关系属性的数据。
  • 元数据:服务发现。
  • NoSQL:KV 存储,如 Redis。

通信标准

image.png

💌 微服务架构下,服务之间的通讯标准是基于协议的,不必在业务逻辑中实现交互逻辑,交给框架来做。

  • HTTP:RESTful API
  • RPC:Apache Thrift,gRPC

💌 如何在 HTTP 和 RPC 之间选择?

  • 性能:RPC 协议往往具备较好的压缩率,性能较高,如 Thrift,Protocol Buffers。
  • 服务治理:RPC 中间件往往集成了丰富的服务治理能力,如熔断、降级、超时等。
  • 可解释性:HTTP 通信的协议往往首选 JSON,可解释性、可调试性更好。

服务网络

image.png

  • 微服务之间通讯的中间层。
  • 一个高性能的 4 层网络代理。
  • 将流量层面的逻辑与业务进程解耦。
  • 实现了异构系统治理体验的统一化。
  • 服务网格的数据平面代理与业务进程采取进程间通信的模式,使得流量相关的逻辑(包含治理)与业务进程解耦,生命周期也更容易管理。

后端架构挑战

基础设施层面

  • 物理资源是有限的:机器,带宽。
  • 资源利用率受制于部署服务。

用户层面

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

解决思路

  • 提供更多弹性资源:离在线资源并池。
    在线业务:IO 密集型为主,实时性。
    离线业务:计算密集型为主,非实时性。
  • 自动扩缩容:依据 CPU 或内存利用率。
  • 亲和性部署:将微服务调用形态与资源调度系统结合,将一些调用关系紧密、通信量大的服务部署在同一个机器上,并且使用 IPC 代替 RPC 的方式,微服务中间件与服务网格通过共享内存通信,服务网格控制面实施灵活、动态的流量调度,降低网络通信带来的开销。 image.png
  • 基于微服务中间件 & 服务网络的流量治理:容灾、熔断、重试。
  • CPU 水位负载均衡:IaaS 提供资源探针,服务网络实现动态负载均衡。

🧡 课后总结

💌 本节课学了架构和云计算相关的知识,讲解如何解决资源分配问题对我目前做的科研也有很大的帮助,云计算是我的梦中情岗,希望今年找工作顺利~~