现在的位置: 首页 > 架构设计 > 正文

我们是否正式全面进入微服务时代

2019年12月25日 架构设计 ⁄ 共 1514字 ⁄ 字号 评论关闭

  微服务是当下最流行的应用架构技术了,它跟容器服务、DevOps合称云时代的三剑客,可以帮我们化解业务发展过快导致的产品迭代压力,让我们可以自由选择最适合团队的技术栈,让系统能够承载互联网海量用户的访问,让我们可以更加轻松地运维大型的互联网系统。近些年在厂商、社区和用户等各方努力推动下,微服务相关的理论和产品都日趋成熟,不同语言的微服务开发及治理套件(例如:SpringCloud/Dubbo等)让我们从零开始搭建微服务变得非常简单快捷,那我们是否就此可以全面进入微服务时代呢?

是否正式全面进入微服务时代?

  微服务的演进成熟需要时间,我们熟悉掌握这套新技术也需要时间,除此之外机房里面还跑着大量的单体式应用,它们需要继续维护和升级,任何时候我们都不可能抛开历史轻松上阵。这些单体式应用还担负着公司的核心业务,全部推倒重来、休克式重构是不可取的,投入大周期长,风险完全不可控。我们必须学会边行车边换胎的技能,在不影响现网业务的前提下推动微服务改造,让老系统焕发新的生命力,继续支持业务下一个十年的发展。本文将跟你一起探讨微服务改造相关的经验方法,让你更加从容地拥抱微服务!

  边行车边换胎三步走演进策略

  如何从单体式应用演进至微服务呢?这些单体式应用都存在很长时间了,经过这么长时间的修修补补,体量规模都比较大,尤其是经过几波人交接维护,业务逻辑也变得异常复杂。同时,它们都在线对外提供服务,全部推倒重建的可能性微乎其微,休克式重构投入大周期长,风险也不好控制,还会影响业务对外服务的连续性。从现实情况出发,最可行的架构优化方案就是渐进式的微服务改造,按照业界的最佳实践和个人经验,该演进策略主要包括三个关键步骤:

  将所有新特性都构建成微服务,遏制单体式应用的生长;

  在微服务和单体式应用之间构建反腐层,防止老系统腐化新系统;

  按照特定的优先顺序由外而内逐步瓦解单体式应用。

  新建微服务

  通常单体式应用所采用的技术相对较老旧,维护这些系统的同事缺少机会学习实践当前主流的技术,久而久之就跟不上主流技术的发展,在晋升、加薪和跳槽时都缺乏竞争力,这会影响到个人的价值。随着系统规模越来越庞大,更新升级和运营维护的难度越来越大,每次发版都要加班加点和心惊胆战,逐渐满足不了业务快速发展的需要。在单体式架构之下,团队无法利用不同技术栈的优势解决不同场景下的问题,即使解决了问题也是事倍功半。

  当意识到有必要将单体式应用改造成微服务时,我们通常会认为改造就是将单体式应用一块一块地敲下来改成微服务,这种想法是最直接的,但难度和风险也是最大的。改造初始我们对微服务相关技术也比较生疏,再加上拆解单体式应用本身的难度,双重困难叠加往往会导致改造失败或延期。

  最靠谱的策略是先停止往单体式应用里面添加新的特性,所有新特性都构建成微服务,从而遏制单体式应用继续生长。新特性通常不会太复杂,新建微服务也要比从单体式应用上剥离微服务容易一些,借助这个过程让团队逐渐熟悉掌握微服务技术栈,从小规模练兵再到全面铺开。常见的微服务架构如下图所示,主要包含以下几大必备组件:

  微服务框架

  注册中心,提供微服务的注册、发现和状态监测等功能;

  配置中心,解耦代码与配置,通过统一的远程配置中心管理每个微服务的配置数据,支持动态修改和立即生效等;

  治理中心,依赖注册中心和配置中心,提供服务降级、服务熔断、流量控制、灰度管理等功能;

  API网关,将每个微服务汇聚一起对外提供服务,网关本身会提供安全鉴权、服务路由、流量控制、计量计费等横切面功能。

  结束语:以上就是有关我们是否正式全面进入微服务时代的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.