课程目录
01.什么是架构
√:了解抽象定义、问题、演进、例子。
02.企业级后端架构解析
->对企业中(后端)架构的剖析,看架构在企业里是一个什么样的“玩法”。
03.企业级后端架构挑战
->企业面临的(后端)架构挑战是什么?工作中如何解决?
04.后端架构实战
->用一个例子说明:架构中一个问题的产生到解决,的实践过程。
02. 企业级后端架构剖析
2.0 企业级后端架构剖析-背景
- 前情提要:我的蛋糕店经过3年蓬勃发展,积累了良好的口碑和用户基础。接下来需要扩大规模:
- 问题考虑:
-
店面怎么盘
- 买(买店面开)
- 租(觉得买太贵了、还要和地税局什么的打交道,很麻烦)
-
师傅怎么招
- 现有师傅的亲人全家出马(一开始店面比较小)
- 招培训班出身的(利用社会上已有的资源,上手比较快)
-
是否继续坚持纯手工创作?
- 坚持手工(手工蛋糕比较好吃,且有独家秘方,但做的慢)
- 加入机器(等到口碑好了,考虑局部用机器做,给对手工要求不敏感的客户)
-
规模扩大以后,工作重心应该是?
- 精进蛋糕制作手艺(纵向深挖)
- 蛋糕店重点方向梳理&未来规划(宏观长远)
-
2.1 企业级后端架构剖析-云计算
-
概念
- 通过软件进行自动化管理,给软件提供计算资源的服务网络
- 也是现代互联网大规模数据分析和存储的基石
-
层次图
-
会员激励:活动策划、联名IP、满意度分析、卖蛋糕、研发新品
-
制作招牌蛋糕:某蛋糕机
-
┌培训、带新┐:某蛋糕师傅培训机构:和面、雕花、塑形、撒料
电器、装修:某装修公司:房屋装修、电器配套、定期打扫、生活缴费
└交易、过户┘:某房屋租赁平台
-
地区1、地区2
-基础
- 虚拟化技术-整租VS合租
- 编排方案-业主VS租赁平台
-架构
- IaaS(Infrastructure as a Service)
- 买房子VS房屋租赁平台
- PaaS(Platform as a Service)
- 清包VS全包
- SaaS(Software as a Service)
- 从零培训VS雇佣培训过的师傅
- FaaS(Function as a Service)
-
纯手工制作VS蛋糕机批量生产
-
意义
-
蛋糕机做蛋糕的速度肯定比做蛋糕快很多。自己做蛋糕需要搭很多相关设施,但如果用蛋糕机,很多东西就非常简单。
-
抛开底层:
- 若使用云计算能力,我们只需要把重心关注到上层:eg.
- 在“会员激励”上如何做更好,提高用户粘性,让更多客户来我们店积累口碑;
- 我们可能会定期做活动策划(节日、满减日),使蛋糕店更生龙活虎;
- 也可以跟外部做联动IP;
- 也能有更多精力去做满意度分析;
- 卖蛋糕、研发新品才是非常非常核心的东西。
- 如果我们使用云计算,就可以专注于更加业务层面的东西,而不去过分关注跟“房子、装修、师傅、制作手续”相关的事情。
- 若使用云计算能力,我们只需要把重心关注到上层:eg.
-
这就是云计算 提供给 整个使用云计算的能力,使在云计算上跑服务的人,更能关注业务层面、而非底层细节。
-
2.2 企业级后端架构剖析-云原生
-
云原生技术 为组织(公司) 在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
-
(这个“云”可以认为就是云计算里的那个“云”。公有云、自由云、混合云是不同云的 部署形态,这些不同部署形态 促成 不同互联网机房的 新型动态环境。帮助企业构成可以运行的、弹性拓展的虚拟化技术的集合)
-
层次图:
-
云原生(Cloud Native)
-
1.弹性资源:
- 虚拟化扩容器
- 快速扩缩容
- (云原生提供的这个虚拟化扩容器是可以快速扩缩容的。不用去关注底层物理的形态。基于这样的虚拟资源与云计算提供的资源调度能力,可以快速做容器的扩缩容。如果是用的物理机器,要对机器做扩缩容,我们需要购买机器,给它装系统,再给装入机房里。如果用云原生,从用户的角度看,资源可以无限扩展;使用时扩出来,不使用时缩回去。)
-
- 微服务架构:
- 业务功能单元解耦
- 统一的通信标准
- (使业务功能有比较好的解耦,业务之间的职责划分得比较清晰。同时SOA那里有统一的服务标准,使服务之间通畅地通信,建立紧密的联系。部署形态是松耦合的,服务之间可以存在非常复杂的调用网络,使业务形态产生更多样化的可能。)
-
- DevOps:
- 敏捷开发
- CI/CD
- (假设我们整个服务已经部署在云上,那如何做开发、测试、连桥等等,这一整套的工具都是有开源方案或有些企业会在上面做耕耘。DevOps就是开发、运营相关的技术栈)
-
- 服务网格:
- 业务与治理解构
- 异构系统的治理与统一化
- 复杂的治理能力
- (在微服务架构之下,功能服务之间产生的调用模式,是如何在企业内部落地的呢?首先,业务 会有它自己的 业务代码。那如果使用服务网格的话,它的优点有:1.业务可以再做进一步的松咬合->就如使用云计算可以暂不关注PaaS、FaaS、SaaS等底层逻辑,而可以更专注于服务逻辑。服务网格的作用是相似的,可以使服务和网络通信做解耦。2.因为它是解耦后的中间层,那么它就为一些异构系统->eg.比如有些使用的是go语言、有些是c++、python、java等,服务网格就是为这些不同业务系统提供统一的治理方案。3. 服务网格具有的中心化的方案,使很多复杂的能力成为可能。)
-
2.2.1 企业级后端架构剖析-云原生之 弹性计算资源
- 弹性计算资源类型:
- 服务资源调度
- 微服务:和面、雕花(可以快速完成这个服务所承载的能力)
- 大服务:烤箱(做烘培时在相当长时间是会被占用的、使用度比较高)
- (按服务调度所使用资源的量级作大致分类:eg.使用和数、内存小->微服务;大体量等->大服务)
- 计算资源调度
- 在线:热销榜单(在线计算资源:热门榜单、热销榜单的展示。刷新越多,使用资源的就越多)
- 离线:热销榜单更新(榜单要动态更新,用户访问数据的分析、访问量的分析会比较大,适合离线的去做调度)
- 消息队列
- 在线:削峰、解耦(消息队列有很大的吞吐量,它可以把消息队列里入队的海量的数据作削峰处理。并且,消息队列的生产者只负责把消息投递到队列里。客户买蛋糕需要排队,只负责排队就可以了,生产者不需要关心队头队尾,是如何消费的。就能起到好的解耦)
- 离线:大数据分析(支持大数据分析的套件,能用消息队列,把一整套数据流程搭建起来。)
- (也可以划在计算资源里的,“消息队列”。与计算调度资源比较类似,可以分为在线和离线。)
2.2.2 企业级后端架构解析-云原生之弹性存储资源
- 弹性存储资源类型:
- (有很多数据是需要存在硬盘或实体化的存储,以免机器在重启的时候丢失。而弹性存储资源也分很多类型,以下是常见4类)
- 经典存储(经典存储内又包含2类)
- 对象:宣传视频(使用对象存储)
- 大数据:用户消费记录(放在大数据存储里)
- ()
- 关系型数据库
- 收银记录(某用户 在when 买了what蛋糕 花了how much钱 用的which手机号,这种具有强关系属性的数据存储,适合这类存)
- ()
- 元数据 -服务发现:蛋糕店通讯录()
- (不是很大,但是会适用到很多不同的场景。比如蛋糕店有很多师傅,可以用名字去找想找的师傅。如果不用名字称呼师傅的话,我们需要知道师傅住在哪里,电话号是多少,这样就很难定位这个师傅。这就是服务发现所起到的作用。一开始,肯定是用的名字去做索引。这就是个简单的服务发现场景)
- NoSQL(强结构化,不是特别相关的)
-
KV:来个xx蛋糕(你给我一个key,我把对应的value返回给你)
-
(比如缓存,分布式植入等,就是一种KV式存储。)
-
总结:将存储资源当成服务一样
-
(用的时候,就不用关心是不是需要部署什么数据库啊、部署元数据的数据库等等。就把这些数据库当成服务那样。你在上面搭建自己的业务的时候,可以在平台里搜“我需要这样的使用场景,我去找这样类型的存储服务就好了”。此即 云原生 弹性资源 的概念)
2.2.3 企业级后端架构解析-云原生之Dev
- 概念
- DevOps是云原生时代软件交付的利器,贯穿整个软件开发周期。
- 结合自动化流程,提高软件开发、交付效率。
- 概念图:
- 设计
-
- 容量
- 技术选型
- 服务化
- 同步/异步
- 观测性
-
- 容灾
- 兜底
- 降级
- 流控
- 隔离
-
开发
-
测试
- 1.单测
- 2.集成测试
- 上线
-
- 构建
-
- 部署
5.调优/重构
- 1.
- 性能瓶颈
- 运维黑洞
-
- 成本优化
- 体验提升
6.赋能or开源