Skip to main content

Command Palette

Search for a command to run...

混合微服务模式

Updated
1 min read

原作者:Sonya Koptyev

原标题:Why a Microservices Hybrid Model Is What You Probably Need Instead

在听到别人谈及微服务的时候,你会注意到他们讨论的是一个非此即彼的问题:重构成微服务?还是固守单体形态?这种想法很合情理:微服务是个复杂的话题,把这个复杂性简化成一个二选一问题,就轻松了。

然而微服务实际上并不是一个非黑即白的概念。在应用中部分使用微服务,其它组件仍然保持单体应用的状态,这是一种完全有可能的情况。

这就成了一种混合模式的微服务。本文中我希望能解释一下混合微服务的具体含义,为什么会用到这种模式以及如何构建混合模式的微服务。

混合微服务的概念和来由

简单来说,混合微服务应用意味着应用的一部分是用微服务的方式来进行开发和部署,其它部分则还是单体形式。

可以将其与混合云相类比,混合云中包含了公有云、私有云,可能还有其它的自有基础设施。目前来看,混合云是一种流行的实践方式;实际上,可能很难找到一个完全单一云模式的组织。

如果我们能和混合云共处,那么也应该能够应对混合微服务架构。这种做法能够比较简单的获得微服务在弹性、容量和安全方面的好处,又无需使用微服务架构将传统应用完全重构。

对多数组织来说,将一个单体应用完全重构为微服务的过程中,对开发资源的调动是一个很严峻的问题;采用混合微服务策略是一个较好的方式,对开发团队来说,这种方式让微服务架构触手可及;否则的话,开发团队可能会因为时间、经验等方面的欠缺,无法接受对单体应用的重构工作。

构建混合微服务架构的最佳实践

混合微服务架构的基本概念很容易理解,但是实现起来就颇值得玩味了。首先面临的问题就是,需要对你的应用进行鉴别——哪些部分需要微服务改造,哪些部分需要保持单体形态。这里给出一些提示。

最大化收益的部分优先重构

最醒目也是最重要的事情就是,应用的哪些部分重构为微服务会获得最大收益。

哪些部分需要重构?要解答这个问题很明显根据实际情况来进行判断,但是还是存在一些指导性的微服务改造原则的:

  • 伸缩性:你的应用中,可能有些部分需要比其它部分更多的实例数量。例如一个系统的首次访问可能需要登录,这就可能使得认证模块在某一时间出现峰值,而其它模块则不存在这种波动。这种情况下,将认证模块拆分出来形成独立的微服务,就能让你用更少资源来满足认证的峰值需要。
  • 安全性:应用中哪一部分最多暴露在安全威胁之下?哪一部分最有可能被入侵从而影响到其它部分的安全?这些组件应该优先转换为微服务,这样有利于进行有效的隔离,降低安全风险。
  • 更新:微服务的一个重要优势就是能够在不打扰其它微服务的情况下进行独立更新。有时一个应用中的不同组件会有不同的更新频率。有时候你会在很少更新后端的情况下,频繁的变更接口。这种情况下,可以把前端重构为一个或多个微服务,从而能够更容易的进行这部分的更新工作,让原有的后端继续以单体应用的形式进行。

正视微服务的复杂性

微服务有很多优势,但是也有其固有的缺陷:把系统变得更复杂。这种额外的复杂性,直接提升了开发和运维工作的难度。

正因如此,混合微服务的方式就很有意义了,可以尽可能的降低微服务引入的复杂性。例如哪一部分的 API 调用更少,或者哪一部分可以打包为独立的容器。如果优先对这些组件进行重构,就能够有效的减少 API 调用,降低容器化的难度。

面向未来

和混合云一样,混合微服务策略不是一蹴而就的。这是个持续的过程。可能起初只有一小部分的组件被独立出来成为了微服务,从而形成了混合微服务架构,但是不必止步于此,随着时间的推移和环境的变化,可能会有更多的重构需求。

所以在踏上混合微服务之路的时候,应该设计一个微服务的路线图。就算不具体到时间,至少也应该对你的混合微服务应用有一个基本的演进设想。

结论

我们都希望改善我们的单体应用,但实际情况是,多数情况下我们不会有足够的开发资源把单体应用迅速的重构为微服务架构。与其全盘放弃,不如考虑一下这种混合微服务架构。可以参考上面提出的标准,来决定需要进行微服务改造的模块,需求不够迫切的其它部分,继续以单体应用的模式提供服务。

More from this blog

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

僭越了,有人在用 Rust 写 Kubernetes

一个新语言问世,最爱做的事情之一,就是重写存量软件了。 云原生喝酒 SIG 重点扶持项目——rk8s(https://github.com/rk8s-dev/rk8s) 也可以归在这个范畴里,只不过这个项目重写的东西比较大,是 Kubernetes。 从 2025 年 1 月第一个 Commit 开始,到现在有了 200 多次 Commit,十几万行代码。当然距离 Kubernetes 的几百万行代码还差得远——老马就是喜欢整这种大无畏项目。 另外该项目也是国内第一个脱离 Cargo 转向使用 ...

Sep 27, 20253 min read

【伪】架构师

342 posts

混合微服务模式