【笔记向】后端入门--开发与迭代--5.企业级后端架构剖析1(流水账式)(代听课系列)

59 阅读9分钟

课程目录

01.什么是架构

√:了解抽象定义、问题、演进、例子。

02.企业级后端架构解析

->对企业中(后端)架构的剖析,看架构在企业里是一个什么样的“玩法”。

03.企业级后端架构挑战

->企业面临的(后端)架构挑战是什么?工作中如何解决?

04.后端架构实战

->用一个例子说明:架构中一个问题的产生到解决,的实践过程。

02. 企业级后端架构剖析

2.0 企业级后端架构剖析-背景

  • 前情提要:我的蛋糕店经过3年蓬勃发展,积累了良好的口碑和用户基础。接下来需要扩大规模:
  • 问题考虑:
    • 店面怎么盘

      • 买(买店面开)
      • 租(觉得买太贵了、还要和地税局什么的打交道,很麻烦)
    • 师傅怎么招

      • 现有师傅的亲人全家出马(一开始店面比较小)
      • 招培训班出身的(利用社会上已有的资源,上手比较快)
    • 是否继续坚持纯手工创作?

      • 坚持手工(手工蛋糕比较好吃,且有独家秘方,但做的慢)
      • 加入机器(等到口碑好了,考虑局部用机器做,给对手工要求不敏感的客户)
    • 规模扩大以后,工作重心应该是?

      • 精进蛋糕制作手艺(纵向深挖)
      • 蛋糕店重点方向梳理&未来规划(宏观长远)

2.1 企业级后端架构剖析-云计算

  • 概念

    • 通过软件进行自动化管理,给软件提供计算资源的服务网络
    • 也是现代互联网大规模数据分析和存储的基石
  • 层次图

  1. 会员激励:活动策划、联名IP、满意度分析、卖蛋糕、研发新品

  2. 制作招牌蛋糕:某蛋糕机

  3. ┌培训、带新┐:某蛋糕师傅培训机构:和面、雕花、塑形、撒料

    电器、装修:某装修公司:房屋装修、电器配套、定期打扫、生活缴费

    └交易、过户┘:某房屋租赁平台

  4. 地区1、地区2

-基础

  1. 虚拟化技术-整租VS合租
  2. 编排方案-业主VS租赁平台

-架构

  1. IaaSInfrastructure as a Service)
  • 买房子VS房屋租赁平台
  1. PaaSPlatform as a Service)
  • 清包VS全包
  1. SaaSSoftware as a Service)
  • 从零培训VS雇佣培训过的师傅
  1. FaaSFunction as a Service)
  • 纯手工制作VS蛋糕机批量生产

  • 意义

    • 蛋糕机做蛋糕的速度肯定比做蛋糕快很多。自己做蛋糕需要搭很多相关设施,但如果用蛋糕机,很多东西就非常简单。

    • 抛开底层:

      • 若使用云计算能力,我们只需要把重心关注到上层:eg.
        • 在“会员激励”上如何做更好,提高用户粘性,让更多客户来我们店积累口碑;
        • 我们可能会定期做活动策划(节日、满减日),使蛋糕店更生龙活虎;
        • 也可以跟外部做联动IP;
        • 也能有更多精力去做满意度分析;
        • 卖蛋糕、研发新品才是非常非常核心的东西。
      • 如果我们使用云计算,就可以专注于更加业务层面的东西,而不去过分关注跟“房子、装修、师傅、制作手续”相关的事情。
    • 这就是云计算 提供给 整个使用云计算的能力,使在云计算上跑服务的人,更能关注业务层面、而非底层细节。

2.2 企业级后端架构剖析-云原生

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

  • (这个“云”可以认为就是云计算里的那个“云”。公有云、自由云、混合云是不同云的 部署形态,这些不同部署形态 促成 不同互联网机房的 新型动态环境。帮助企业构成可以运行的、弹性拓展的虚拟化技术的集合)

  • 层次图:

    • 云原生(Cloud Native)

    • 1.弹性资源:

      • 虚拟化扩容器
      • 快速扩缩容
      • (云原生提供的这个虚拟化扩容器是可以快速扩缩容的。不用去关注底层物理的形态。基于这样的虚拟资源与云计算提供的资源调度能力,可以快速做容器的扩缩容。如果是用的物理机器,要对机器做扩缩容,我们需要购买机器,给它装系统,再给装入机房里。如果用云原生,从用户的角度看,资源可以无限扩展;使用时扩出来,不使用时缩回去。)
      1. 微服务架构:
      • 业务功能单元解耦
      • 统一的通信标准
      • (使业务功能有比较好的解耦,业务之间的职责划分得比较清晰。同时SOA那里有统一的服务标准,使服务之间通畅地通信,建立紧密的联系。部署形态是松耦合的,服务之间可以存在非常复杂的调用网络,使业务形态产生更多样化的可能。)
      1. DevOps:
      • 敏捷开发
      • CI/CD
      • (假设我们整个服务已经部署在云上,那如何做开发、测试、连桥等等,这一整套的工具都是有开源方案或有些企业会在上面做耕耘。DevOps就是开发、运营相关的技术栈)
      1. 服务网格:
      • 业务与治理解构
      • 异构系统的治理与统一化
      • 复杂的治理能力
      • (在微服务架构之下,功能服务之间产生的调用模式,是如何在企业内部落地的呢?首先,业务 会有它自己的 业务代码。那如果使用服务网格的话,它的优点有:1.业务可以再做进一步的松咬合->就如使用云计算可以暂不关注PaaS、FaaS、SaaS等底层逻辑,而可以更专注于服务逻辑。服务网格的作用是相似的,可以使服务和网络通信做解耦。2.因为它是解耦后的中间层,那么它就为一些异构系统->eg.比如有些使用的是go语言、有些是c++、python、java等,服务网格就是为这些不同业务系统提供统一的治理方案。3. 服务网格具有的中心化的方案,使很多复杂的能力成为可能。)

2.2.1 企业级后端架构剖析-云原生之 弹性计算资源

  • 弹性计算资源类型:
  1. 服务资源调度
  • 微服务:和面、雕花(可以快速完成这个服务所承载的能力)
  • 大服务:烤箱(做烘培时在相当长时间是会被占用的、使用度比较高)
  • (按服务调度所使用资源的量级作大致分类:eg.使用和数、内存小->微服务;大体量等->大服务)
  1. 计算资源调度
  • 在线:热销榜单(在线计算资源:热门榜单、热销榜单的展示。刷新越多,使用资源的就越多)
  • 离线:热销榜单更新(榜单要动态更新,用户访问数据的分析、访问量的分析会比较大,适合离线的去做调度)
  1. 消息队列
  • 在线:削峰、解耦(消息队列有很大的吞吐量,它可以把消息队列里入队的海量的数据作削峰处理。并且,消息队列的生产者只负责把消息投递到队列里。客户买蛋糕需要排队,只负责排队就可以了,生产者不需要关心队头队尾,是如何消费的。就能起到好的解耦)
  • 离线:大数据分析(支持大数据分析的套件,能用消息队列,把一整套数据流程搭建起来。)
  • (也可以划在计算资源里的,“消息队列”。与计算调度资源比较类似,可以分为在线和离线。)

2.2.2 企业级后端架构解析-云原生之弹性存储资源

  • 弹性存储资源类型:
  • (有很多数据是需要存在硬盘或实体化的存储,以免机器在重启的时候丢失。而弹性存储资源也分很多类型,以下是常见4类)
  1. 经典存储(经典存储内又包含2类)
  • 对象:宣传视频(使用对象存储)
  • 大数据:用户消费记录(放在大数据存储里)
  • ()
  1. 关系型数据库
  • 收银记录(某用户 在when 买了what蛋糕 花了how much钱 用的which手机号,这种具有强关系属性的数据存储,适合这类存)
  • ()
  1. 元数据 -服务发现:蛋糕店通讯录()
  • (不是很大,但是会适用到很多不同的场景。比如蛋糕店有很多师傅,可以用名字去找想找的师傅。如果不用名字称呼师傅的话,我们需要知道师傅住在哪里,电话号是多少,这样就很难定位这个师傅。这就是服务发现所起到的作用。一开始,肯定是用的名字去做索引。这就是个简单的服务发现场景)
  1. NoSQL(强结构化,不是特别相关的)
  • KV:来个xx蛋糕(你给我一个key,我把对应的value返回给你)

  • (比如缓存,分布式植入等,就是一种KV式存储。)

  • 总结:将存储资源当成服务一样

  • (用的时候,就不用关心是不是需要部署什么数据库啊、部署元数据的数据库等等。就把这些数据库当成服务那样。你在上面搭建自己的业务的时候,可以在平台里搜“我需要这样的使用场景,我去找这样类型的存储服务就好了”。此即 云原生 弹性资源 的概念)

2.2.3 企业级后端架构解析-云原生之Dev

  • 概念
  1. DevOps是云原生时代软件交付的利器,贯穿整个软件开发周期。
  2. 结合自动化流程,提高软件开发、交付效率。
  • 概念图:
  1. 设计
    • 容量
    • 技术选型
    • 服务化
    • 同步/异步
    • 观测性
    • 容灾
    • 兜底
    • 降级
    • 流控
    • 隔离
  1. 开发

  2. 测试

  • 1.单测
  • 2.集成测试
  1. 上线
    1. 构建
    1. 部署

5.调优/重构

  • 1.
    • 性能瓶颈
    • 运维黑洞
    • 成本优化
    • 体验提升

6.赋能or开源