这是我参与「第五届青训营 」笔记创作活动的第4天
一、本堂课重点内容
- 什么是架构
- 企业级后端架构剖析
- 企业级后端架构的挑战
- 后端架构实战
二、详细知识点介绍
3. 企业级后端架构的挑战
3.1 问题
基础设施层面:
Q:我们总说,云是弹性的,也就是说,在用户的角度,云提供的资源是无限的。然而,云背后的物理资源是有限的。在企业级后端架构里,云如何解决近乎无限的弹性资源和有限的物理资源之间的矛盾?
Q:闲事的资源就这么空着呢?如何提高资源利用率,提高物理资源的价值转换率?
用户层面:
Q:上了云原生微服务后,服务之间的通信开销较大,应该如何做成本优化?
Q:微服务看起来没有那么美好,抖动导致的运维成本较高,如何解决?
Q:异构的物理环境应该对用户是透明的,如何屏蔽这些细节?
- 基础设施层面
- 物理资源是有限的
- 机器
- 带宽
- 该资源利用率受制于部署服务
- 物理资源是有限的
- 用户层面
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均
3.2 离在线资源并池
核心收益:
- 降低物理资源成本
- 提供更多的弹性资源,增加收入
考虑到在线业务的潮汐性,物理资源的用量不是一成不变的。
解决思路:离在线资源并池,可以:
- 在线业务的特点
- IO 密集型为主
- 潮汐性、实时性
- 离线业务的特点
- 计算密集型占多数
- 非实时性
优点:
- 提高物理资源利用率
- 提供更多的弹性资源
3.3 微服务亲合性部署
微服务之间的通信成本较高,是否可以:
- 形态上是微服务架构
- 通信上是单体架构
亲合性部署,通过将微服务调用形态与资源调度系统结合,将一些调用关系紧密、通信量大的服务部署在同一个机器上,并且使用 IPC 代替 RPC 的方式,降低网络通信带来的开销
3.4 流量治理
Q:微服务之间的通信流量为什么需要治理?
Q:都有哪些常用的治理手段?
Q:微服务中心件和服务网格在其中扮演着怎样的角色?
3.5 屏蔽异构环境的算力差异
Q:基础设施层往往是个复杂的异构环境,比如,有些机器的 CPU 是英特尔的,而有些是 AMD 的。就算是同一个品牌,也可能是不同代际。如何将这些差异屏蔽掉,使用户尽可能不感知呢?
Q:什么情况下,我们觉得,服务需要扩容了?异构环境会对这个评判标准产生怎样的影响?
4. 后端架构实战
4.1 问题
如何设计一个根据主机层面的资源信息,实时进行流量调度的系统,打平不同宿主机异构环境的算力差异。
关键点:
- 紧急回滚能力
- 大规模
- 极端场景
三、课后作业
兰师傅蛋糕房要支持线上售卖了!请帮忙做整套系统的架构设计
设计需求:
-
多端支持
- 微信/支付宝小程序
- App
- 网页
-
使用云原生基础设施
-
用户画像很重要
-
积极参加妇女节/光棍节等活动
⚠️注意: 不需要考虑与做蛋糕相关服务的交互
四、总结
-
没有最好的架构,只有最合适的架构
-
做架构设计
- 先从需求出发。要满足什么样的需求?预期规模有多大?
- 做足够的业界调研。业界对于类似的需求是怎么做的?有无成熟的方案可以借鉴?直接拿来用有什么问题?
- 技术选型。涉及的技术组件是自研,还是使用开源的?
- 异常情况。任何时候,都不能做『输入合法』的假设。容灾能力一定要有
-
学好架构,是工程师成长的一个重要标志