PM-从后微服务谈架构演进

发布时间 2024-01-09 15:30:30作者: 李济宏(Amadeus)

2022 年,关于微服务发生了几件有趣的事情。

其一,正式掌管 Twitter 不久的 Elon Musk 对 Twitter 的开发团队 “批判” 了一番。他表示自己为 Twitter 在许多国家的极慢运行速度感到抱歉。之所以如此慢是因为 App 需要执行 1000 多个 “糟糕” 的批处理 RPC,而这只是为了渲染主页的时间线。Musk 表示 “今天的部分工作将是关闭臃肿的"微服务" 。实际上,只有不到 20% 的微服务是 Twitter 需要的。”

其二,GitHub 前 CTO Jason Warner 在社交媒体上表示:“我确信过去十年中,最大的架构错误之一就是全面使用微服务。” “任何构建过大型分布式系统的人都知道他们并不真的那样工作,但还必须适应它。”

那么,微服务架构是否是一个错误,或者微服务是否已经过时了呢?

Martin Fowler发现所有成功的微服务都遵循了通用的模式:
1、几乎所有成功的微服务故事,都是从一个变得太大而被分解的单体开始的。
2、几乎所有我听说过的从头开始构建为微服务系统的系统都以严重的麻烦告终。
这种模式导致Martin Fowler的许多同事认为:“你不应该用微服务开始一个新的项目,即使你确信你的应用程序将足够大,值得这么做...”

演进中的架构

①原始分布式时代
为了突破硬件算力的限制,寻找使用多台计算机共同协作来支撑同一套软件系统运行的可行方案,此时是对分布式架构最原始的探索。

②单体系统时代
单体架构(Monolithic):“单体”只是表明系统中主要的过程调用都是进程内调用,不会发生进程间通信,仅此而已。

③SOA时代
SOA 架构(Service-Oriented Architecture):面向服务的架构是一次具体地、系统性地成功解决分布式服务主要问题的架构模式。

④微服务时代
微服务架构(Microservices):微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。服务采取轻量级的通信机制和自动化的部署机制实现通信与运维。

⑤后微服务时代
后微服务时代(Cloud Native):从软件层面独力应对微服务架构问题,发展到软、硬一体,合力应对架构问题的时代,此即为“后微服务时代”。

⑥无服务架构
无服务架构(Serverless):如果说微服务架构是分布式系统这条路的极致,那无服务架构,也许就是“不分布式”的云端系统这条路的起点。

绝对意义上的无限性能必然是不存在的,但在云计算落地已有十年时间的今日,相对意义的无限性能已经成为了现实。

总结:

  • 原始分布式时代:出现调用远程方法的想法,并且开始实施寻找解决的方式。
  • 单体系统时代:整个服务一致运行在单体服务器中,没有调用远程服务的特点,缺点就是对于大型项目难扩展。
  • SOA时代:明确了采用 SOAP 作为远程调用的协议,依靠 SOAP 协议族来进行实现远程调用。
  • 微服务时代:拆分为多个服务,并且有一系列远程调用方法的解决技术方案。
  • 后微服务时代:借助容器来对服务进行发布、部署、监控等一系列自动化操作。