软件架构(下)| 青训营笔记

101 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天。今天学习了后端开发的软件架构知识。这是第二部分的笔记。

3. 企业级后端架构的挑战

问题

基础设施层面:物理资源有限(机器、带宽)、资源利用率受限于部署服务

用户层面:网络通信开销较大、网络抖动导致运维成本提高、异构环境下不同实例的资源水位不均等。

离线在线资源并发池

思路:根据在线业务与离线业务的特点,将资源分成两类,从而降低资源的成本。

在线业务特点:IO密集型为主、具有潮汐性和实时性

离线业务特点:计算密集型占多数、非实时性

实现的方式:自动扩缩容(cgroup)

微服务亲合性部署

思路:将满足亲合性条件的容器调度到一台宿主机、将微服务中间件和服务网格通过共享内存进行通信、服务网格的控制面实施灵活、动态的流量调度。

4. 后端架构实战:CPU水位负载均衡问题

问题引入:不同CPU的情况不一样,需要有更全面的资源分配策略

问题提炼:

输入:控制面存储容器的权重信息,数据面支持带权重的负载均衡策略,宿主机提供当前机器的资源信息。

自适应静态权重

思路:通过采集宿主机的物理资源信息来动态调整容器注册的权重

优势:复杂度低、完全分布式、可用性高

缺点:无紧急回滚能力、缺乏运行时自适应能力

自适应动态权重 Alpha

方案:

自适应动态权重 Beta

思路:采集各宿主机的RPC指标,从而对极端场景进行处理

缺点:时序数据库压力大、且决策中心的职责越来越多,需要对业务进行拆分

自适应动态权重 Release

使用微服务架构对决策中心进行拆分