课程目录
01.什么是架构
√:了解抽象定义、问题、演进、例子。
02.企业级后端架构解析
->对企业中(后端)架构的剖析,看架构在企业里是一个什么样的“玩法”。
03.企业级后端架构挑战
->企业面临的(后端)架构挑战是什么?工作中如何解决?
04.后端架构实战
->用一个例子说明:架构中一个问题的产生到解决,的实践过程。
04. 后端架构实战
4.0 问题提炼
-
前情回顾:
-
背景:
- 用“CPU水位不均的案例”做联想
-
引例:
- 开的蛋糕店碰到了类似的问题:
- 不同师傅干活效率差距较大
- 有些师傅希望“能者多劳多挣”,又有师傅“太多工作吃不消”
- 在这个背景下,继续像之前一样为每个师傅分配完全相同的工作,会引起他们的不满......
- 开的蛋糕店碰到了类似的问题:
-
Q&A:CPU水位负载均衡,应该如何设计?
- 明确:需要哪些输入(明确哪些师傅干活效率高?->明确师傅们的干活效率的分布)
- 考虑:设计时需要哪些关键点(1.即使调整后,也不一定是固定的任务量。同一师傅的每天任务可能存在动态变化。比如今天干活效率高,明天身体不适如果还给那么多活,会出问题。2.系统做决策时需要动态更新的问题,比如容灾问题)
-
-
(提炼出的)层次图:
-
输入:
- 数据网格数据面(需要使用 服务网格 的灵活调动能力)
- 支持带权重的负载均衡策略(同时服务网格自带~)
- 注册中心存储了所有容器的权重信息(和服务发现的结果。eg.注册中心可以显示:在上面这个宿主机的伏安结果是什么、权重是多少,在下面对应的这个宿主机的伏安结果、权重)
- 宿主机能提供()
- 容器的资源使用情况(我们需要知道:不同师傅干活的能力,才能帮他们调整工作量。)
- 物理资源信息(如CPU型号) (还需要~帮我们做辅佐资源决策。eg.有时候知道CPU型号 可以知道 这款CPU一定能承载 多少KPS之类的后续分析结果,能对后续分析做非常好的输入)
- 数据网格数据面(需要使用 服务网格 的灵活调动能力)
-
关键点:
- 紧急回滚能力(假如调动系统出了问题)
- 大规模()
- 极端场景()
4.1 后端框架实战-问题提炼
-
层次图:
-
方案:
- 采集宿主物理资源信息()
- 调整容器注册的权重()
-
优势:
- 复杂度低()
- 完全分布式,可用性高()
- 微服务中间件无适配成本()
-
缺点:
- 无紧急回滚能力()
- 缺乏运行时自适应能力()
4.2 后端框架实战-自适应动态权重 Alpha
-
层次图:
-
方案:
- 容器动态权重的自适应调整()
- 服务网格的服务发现 & 流量调度能力()
-
演进方向:
- 解决无法紧急回滚的问题()
- 运行时权重自适应()
-
缺点:
- 过度流量倾斜可能会有异常情况()
4.3 后端框架实战-自适应动态权重 Beta
-
层次图:
-
方案:
- 服务网格上报RPC指标()
-
演进方向:
- 极端场景的处理成为可能()
-
缺点:
- 时序数据库压力较大()
- 动态权重决策中心职责越来越多,迭代->变更->风险()
4.4 后端框架实战-自适应动态权重 Release
-
层次图:
-
演进方向:
- 微服务化()
- 引入消息队列削峰、解耦()
- 离在线链路切分()
- 梳理强弱依赖()
4.5 尾声
- 没有最好的架构,只有最合适的架构
- 如何做架构设计
- 需求先行。弄清要解决什么问题()
- 业界调研。业界都有哪些解决方案可供参考()
- 技术选型。內部/社区都有哪些基础组件()
- 异常情况。考虑清楚xxx不行了怎么办()
- 架构与工程师成长
- 技术经理()
- 架构师()