企业级的后端架构 | 青训营

76 阅读4分钟

一、企业级后端架构面临的挑战

1.1 问题

  1. 基础设施层面:物理资源是有限的(机器和带宽是有限的),资源利用率受制于部署服务。
  2. 用户层面:网络通信开销较大,网络抖动导致运维成本提高,异构环境下,不同实例资源水位不均。

1.2 离在线资源并池

  1. 核心收益:降低物理资源成本,提供更多的弹性资源以增加收入。
  2. 解决思路:离在线资源并池,根据用户流量分配离线资源池和在线资源池的比重。
  3. 在线业务特点:IO密集型为主,明显的潮汐性和实时性。
  4. 离线业务特点:计算密集型占多数,非实时性。

1.3 自动扩缩容

  1. 核心收益:降低业务成本
  2. 解决思路:自动扩缩容,也就是利用在线业务潮汐性自动扩缩容。

1.4 微服务亲合性部署

  1. 核心收益:降低业务成本,提高服务可用性
  2. 解决思路:将满足亲合性条件的容器调度到一台宿主机上,微服务中间件与服务网格通过共享内存通信,服务网格控制面实施灵活,动态的流量调度。

1.5 流量治理

  1. 核心收益:提高微服务调用容错性,容灾,进一步提高开发效率,DevOps发挥到极致。
  2. 解决思路:熔断、重试,单元化,复杂环境的流量调度。

1.6 CPU水位负载均衡

  1. 核心收益:打平异构环境的算力差异,为自动扩缩容提供正向输入
  2. 解决思路:IaaS(提供资源探针),服务网格(动态负载均衡)。

二、后端架构实践

2.1 问题背景

不同人干活的效率差距较大,有些人希望能者多劳多赚,所以给每个人都分配相同的工作量会引起不满。

2.2 问题提炼

  1. 输入:服务网格数据面(支持带权重的负载均衡策略),注册中心存储了所有容器的权重信息,宿主机能提供容器的资源使用情况和物理资源信息。
  2. 关键点:紧急回滚能力,大规模,自适应。

2.3 自适应静态权重

  1. 方案:采集宿主机物理资源信息,调整容器注册的权重。
  2. 优势:复杂度低;完全分布式,可用性高;微服务中间件无适配成本。
  3. 缺点:无紧急回滚能力,缺乏自适应能力。

2.4 自适应动态权重Alpha

  1. 方案:容器动态权重的自适应调整,服务网格的服务发现&流量调度能力。
  2. 演进方向:解决无法紧急回滚的问题,运行时权重自适应。
  3. 缺点:过度流量倾斜可能会有异常情况。

2.5 自适应动态权重Beta

  1. 方案:服务网格上报RPC指标。
  2. 演进方向:极端场景的处理成为可能。
  3. 缺点:时序数据库压力较大,动态权重决策中心职责越来越多。

2.6 自适应动态权重Release

  1. 演进方向:微服务化;引入消息队列削峰,解耦;离在线链路切分;梳理强弱依赖。

三、思考

兰师傅蛋糕店架构:

  1. 前台系统采用Web界面或者移动端APP形式,使用HTTP协议与后端系统进行通信,采用RESTful API或者GraphQL等接口形式提供数据交互功能。
  2. 后台系统采用面向服务架构,将各个业务模块拆分为多个服务,每个服务提供相应的API接口,使用HTTP协议与前台系统和配送管理系统、支付系统进行通信。后台系统需要实现商品管理、库存管理、订单管理、会员管理、员工管理等功能。
  3. 配送管理系统采用面向服务架构,将各个业务模块拆分为多个服务,每个服务提供相应的API接口,使用HTTP协议与前台系统和后台系统进行通信。配送管理系统需要实现配送员管理、配送路线规划、配送任务分配等功能。
  4. 数据分析系统从后端系统获取数据,采用Hadoop、Spark等大数据处理框架进行数据处理和分析,为店铺的经营决策提供数据支持。
  5. 支付系统使用第三方支付平台,如支付宝、微信支付等,通过API接口与前台系统和后端系统进行数据交互,实现线上支付功能。
  6. 总体来说,该架构具有一定的灵活性和可扩展性,可以根据蛋糕店的实际需求进行扩展和调整。同时,采用面向服务架构和API接口可以有效地实现前后端分离和业务模块的解耦,提高系统的可维护性和可重用性。