架构初探 | 青训营笔记

89 阅读5分钟

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

写在开头

本人是一个第一次参加字节青训营的学生,主要是简单记录一下自己学习的过程以及复习(详细的需要自己去看每天对应的课程),每天会发前一天课程的笔记以及自己的思考(对项目)

架构初探

什么是架构

简单的讲,架构就是软件架构,有关软件整体结构的抽象描述,指导软件系统各个方面设计。

常见软件架构:

  • 单机
  • 单体
  • 垂直应用
  • SOA (Service Oriented Architecture)
  • 微服务 (Microservice)

比如刘师傅要开蛋糕店,他要考虑如何做蛋糕,用秘方还是自己做,如何卖蛋糕,流量不大边做边卖还是怎么,想好了就可以开张。

单机

把所有功能放到一个进程一个机子上,优点是简单,但是如果要运维的话就需要停服。

单体

分布式部署,部署到多个机子上,也不需要停服运维,比如蛋糕就是有一个经理,然后有三个师傅,买蛋糕问经理就可以,经理给师傅说,属于水平扩容。缺点是效率不高,爆炸半径大。

垂直应用架构

在单机架构基础上,将进程按照某种依据切分开。比如,A 软件和 B 软件的后端原先采用单机架构部署,那就是一个进程部署在多个机器上;如果用垂直应用架构,可以将 A 和 B 的后端拆分为 A、B 两个进程,然后再按照单体模式的思路,部署在多个机器上。

SOA (面向服务架构)

把应用抽象为服务,定义服务之间的通信标准。

微服务

微服务也就是SOA去中心化演进方向,在 SOA 架构中,ESB 起到了至关重要的作用。但从架构拓扑来看,它更像是一个集中式的模块。有一个 SOA 分布式演进的分支,最终的形态便是微服务。

架构的进化初衷是为了满足软件迭代诉求,提高效率

企业级架构解析

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

和蛋糕店概念相合:虚拟化就是合租,因为虚拟出很多虚拟机用。

编排方案就是业主和租赁平台,这个平台上挂很多房子租出去。

IaaS:租房子(不租就要自己买,很麻烦)

PaaS:材料是自己买再装修还是自己出钱让专门的公司去帮忙买和装修。

SaaS:从零培训一个师傅还是直接用培训过的师傅

FaaS:纯手工制作和蛋糕机批量

云原生

云原生,实际是云原生(计算)的简称,它是云计算发展到现在的一种形态。

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

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

弹性资源

基于虚拟化技术,提供的可以快速扩缩容的能力。可以分为弹性计算资源和弹性存储资源两个方面。

微服务(和面,雕花)大服务(烤箱)

弹性计算资源:

  • 计算资源调度

    • 在线计算 - 互联网后端服务(热销榜单)
    • 离线计算 - 大数据分析。Map-Reduce/Spark/Flinnk(热销榜单更新)
  • 消息队列

    • 在线队列 - 削峰、解耦
    • 离线队列 - 结合数据分析的一整套方案,如 ELK

弹性存储资源:

  • 经典存储

    • 对象存储 - 视频、图片等。结合 CDN 等技术,可以为应用提供丰富的多媒体能力(宣传视频)
    • 大数据存储 - 应用日志、用户数据等。结合数据挖掘、机器学习等技术,提高应用的体验(用户消费记录)
  • 关系型数据库(收银记录)

  • 元数据

    • 服务发现(蛋糕店通讯录)
  • NoSQL

    • KV 存储 - Redis(来几个蛋糕)
    • 文档存储 - Mongo

在云原生的大背景下,不论是计算资源还是存储资源,他们都像是服务一样供用户使用。

微服务架构

微服务架构下,服务之间的通讯标准是基于协议而不是 ESB 的。

  • HTTP - H1/H2
  • RPC - Apache Thrift/gRPC

如何在 HTTP 和 RPC 之间选择?

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

微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。

服务网格

什么是服务网格?

  • 微服务之间通讯的中间层
  • 一个高性能的 4 层网络代理
  • 将流量层面的逻辑与业务进程解耦

没有什么是加一层代理解决不了的问题,服务网格相比较于 RPC/HTTP 框架:

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