开发与迭代--企业级后端架构

2 阅读3分钟

课程主要从四个方面对后端框架进行了介绍,涵盖了微服务架构的介绍、原理及特征、核心服务治理功能以及字节跳动的服务治理实践。

1. 微服务架构介绍

系统架构的演进历史

  • 单体架构:所有功能集成在一个进程中。
  • 垂直应用架构:按业务线划分为不同的独立应用。
  • 分布式架构:抽取出与业务无关的公共模块,使之独立。
  • SOA(面向服务的架构):引入服务的概念,解耦模块。
  • 微服务架构:将服务细化到最小化,形成独立、自治的单元。

微服务架构的三大要素

  1. 服务治理:包括服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理。
  2. 可观测性:日志采集、监控、链路追踪、异常报警等。
  3. 安全:身份验证、访问授权、传输加密等。

2. 微服务架构原理及特征

基本概念及组件

  • 服务:具有相同逻辑的多个运行实体。
  • 实例:服务的每个运行实体,可以是进程、虚拟机或容器等。

服务间通信

  • 使用网络通信,常用协议有 HTTPRPC

服务注册及发现

  • 问题:如何动态指定下游服务的实例地址?
  • 解决方案
    • 服务注册中心:存储服务名与实例映射关系,新实例上线时注册,旧实例下线时移除。

微服务流量特征

  • 统一网关入口:外部使用 HTTP,内部多采用 RPC(如 Thrift, gRPC)。

3. 核心服务治理功能

服务发布

  • 蓝绿部署:两个环境间切换,简单稳定但需双倍资源。
  • 灰度发布(金丝雀发布):逐步发布服务,风险小但要求基础设施复杂。

流量治理

  • 根据地区、集群、实例和请求等维度进行流量控制。

负载均衡策略

  • Round RobinRandomRing HashLeast Request

稳定性治理

  • 限流:限制服务的最大处理请求数。
  • 熔断:当下游服务故障时中断请求,增加冷却时间。
  • 过载保护:在实例负载高时主动拒绝部分请求。
  • 降级:当资源不足时,拒绝低优先级请求以保证高优先级服务。

4. 字节跳动服务治理实践

请求重试的意义

  • 对于 远程函数调用,重试有助于提高服务的稳定性,减少因网络抖动、下游负载等引起的偶发性错误。

请求重试的难点

  • 幂等性:确保请求的重复执行不会产生不一致结果。
  • 重试风暴:多个服务重试导致重试次数指数级上升。
  • 超时设置:确定合理的重试时间以平衡成功率与超时风险。

重试策略

  • 限制重试比例:设定重试次数占比阈值。
  • 防止链路重试:使用特殊状态码避免不必要的重试。
  • Hedged Requests:对于高延迟请求,向另一个实例发送相同请求以获取最快响应。