一、架构演进史:从单体应用到微服务,AP平台的诞生背景与核心痛点

聊AP平台之前,我想先带大家回顾一下架构的演进历程。说实话,我入行那会儿,正是单体应用大行其道的年代。那时候写代码,一个项目就是一个大包,所有功能都堆在一起。现在想想,真是又怀念又后怕。

1.1 单体应用的黄金时代

2008年,我参与了一个电商平台的建设。整个系统就是一个Java WAR包,部署在一台服务器上。用户管理、商品展示、订单处理、支付结算……全在一个进程里跑。

听起来很粗糙对吧?但当时这么做是有道理的:

  • 开发简单:一个IDE,一个项目,搞定所有
  • 部署方便:打个包扔到Tomcat里就行
  • 测试容易:启动一次,所有功能都能测
  • 运维省心:就一台机器,出问题定位快

但问题很快就来了。我记得有一次,营销团队搞了个大促活动,流量瞬间暴涨。订单模块扛不住了,结果连带着用户登录都挂了。你想想看,用户连网站都进不去,还怎么买东西?

单体应用的核心痛点:

  • 模块耦合严重,改一处可能影响全局
  • 无法独立扩缩容,流量不均时资源浪费
  • 技术栈绑定,想换语言或框架几乎不可能
  • 团队协作困难,多人改同一个模块经常冲突

1.2 SOA架构的尝试

为了解决这些问题,业界开始尝试SOA(面向服务架构)。说白了,就是把大系统拆成几个粗粒度的服务,通过ESB(企业服务总线)通信。

我2012年在一家金融公司做过SOA改造。我们把交易系统拆成了账户服务、风控服务、清算服务等几个模块。每个服务独立部署,通过WebService通信。

效果确实有改善,但新的问题又冒出来了:

  • ESB成了新的单点瓶颈,它挂了所有服务都完蛋
  • 服务间通信太重,XML解析慢得要命
  • 服务拆分粒度太粗,本质上还是大模块

我个人习惯:做架构设计时,不要为了拆分而拆分。SOA的教训就是拆分粒度没把握好,反而引入了更多复杂度。

1.3 微服务架构的崛起

2014年左右,微服务概念开始流行。它和SOA最大的区别是什么?我总结就两点:更细的粒度更轻的通信

举个例子,同样是订单系统:

维度 SOA 微服务
服务粒度 订单服务(包含所有订单逻辑) 订单创建服务、订单查询服务、订单状态服务
通信方式 SOAP/XML,重量级 REST/JSON或gRPC,轻量级
数据存储 共享数据库 每个服务独立数据库
部署方式 WAR包部署到应用服务器 Docker容器化,独立部署

我在2016年主导过一个微服务改造项目。我们把一个老旧的CRM系统拆成了30多个微服务。每个服务都能独立开发、测试、部署、扩缩容。效果立竿见影——发布频率从每月一次提升到每天十几次。

1.4 AP平台的诞生背景

微服务虽好,但也不是银弹。随着服务数量增多,新的问题出现了:

  • 服务发现:几百个服务,怎么知道谁在哪?
  • 配置管理:每个服务都有自己的配置,改起来要命
  • 熔断降级:一个服务挂了,怎么防止雪崩?
  • 链路追踪:一个请求经过十几个服务,出问题怎么排查?

嗯,这就是AP平台(Adaptive Platform,自适应平台)诞生的背景。它要解决的核心问题就是:在微服务架构下,如何让系统具备自适应能力

我曾经踩过的坑:刚开始做微服务时,我天真地以为只要拆了就完事了。结果服务间调用关系乱成一团麻,一个接口改了,十几个调用方跟着改。后来才明白,微服务不是目的,目的是让系统更灵活、更稳定。

1.5 AP平台的核心痛点

AP平台要解决的核心痛点,我归纳为以下五点:

  1. 服务治理的复杂性:服务多了,如何管理它们的生命周期?如何做灰度发布?如何做流量控制?
  2. 数据一致性的挑战:分布式环境下,怎么保证最终一致性?分布式事务怎么做?
  3. 弹性伸缩的自动化:流量高峰时自动扩容,低谷时自动缩容,怎么实现?
  4. 故障隔离与自愈:某个服务挂了,如何自动隔离?如何自动恢复?
  5. 可观测性:日志、指标、链路追踪,三件套怎么落地?

一句话总结:AP平台不是要消灭微服务的复杂性,而是要把这些复杂性封装起来,让开发者只关注业务逻辑。

好了,这一章我们回顾了从单体到微服务的演进历程,也看到了AP平台要解决的核心问题。下一章,我会带大家深入AP平台的分层架构设计,看看每一层到底该怎么搭。