第1章 Service Mesh概述
微服务架构可谓是当前软件开发领域的技术热点,在各种博客、社交媒体和会议演讲上的“出镜率”非常高,无论是做基础架构的还是做业务系统的工程师,对它都相当关注。这种现象与热度到目前为止,已经持续了近6年。
尤其是近些年来,微服务架构逐渐发展成熟,从最初的“星星之火”到现在的大规模落地与实践,几乎成为分布式环境下的首选架构。微服务架构成为时下技术热点,大量互联网企业都在做微服务架构的落地和推广。同时,也有很多传统企业基于微服务和容器,在做互联网技术转型。
而在互联网技术转型中,国内有一个趋势,以Spring Cloud与Dubbo为代表的微服务开发框架非常普及和受欢迎。然而软件开发没有“银弹”,基于这些传统微服务框架构建的应用系统在享受其优势的同时,痛点也愈加明显,例如:
•侵入性强。想要集成SDK的能力,除了需要添加相关依赖,还需要在业务代码中增加一部分代码、注解或配置,防止业务层代码与治理层代码界限不清晰。
•升级成本高。每次升级都需要业务应用修改SDK版本,重新进行功能回归测试,并且对每一台机器进行部署上线。而这对业务方来说,与业务的快速迭代开发是有冲突的,大多数业务方都不愿意停下来做这些与业务目标不太相关的事情。
•版本碎片化严重。由于升级成本高,而中间件在不停地向前发展,久而久之,就会导致线上不同服务引用的SDK版本不统一、能力参差不齐,造成很难统一治理的局面。
•中间件演变困难。由于版本碎片化严重,导致中间件在向前演进的过程中需要兼容代码中的各种各样的老版本逻辑,带着“枷锁”前行,因此无法实现快速迭代。
•内容多、门槛高。Spring Cloud被称为微服务治理框架的“全家桶”,包含大大小小几十个组件,内容相当多,往往需要用户花费几年时间去熟悉其中的关键组件。如果将Spring Cloud作为一个完整的治理框架,则需要深入了解其中的原理与实现,否则遇到问题会很难定位。
•治理功能不全。不同于RPC框架,Spring Cloud作为治理框架的典型,也不是万能的,诸如协议转换支持、多重授权机制、动态请求路由、故障注入、灰度发布等高级功能都没有被覆盖到。而这些功能往往是企业大规模落地不可或缺的,因此企业还需要投入其他人力进行相关功能的自研,或者调研其他组件作为补充。
以上列出了传统微服务框架的局限性,但这并不意味着传统微服务框架就一无是处了。在中小型企业中,采用Spring Cloud这种传统微服务框架不仅可以满足绝大部分的服务治理的需求,而且可以借此快速推进微服务化改造。传统微服务框架的局限性是技术发展到一定的程度必然要经历的阶段,也是促使技术不断发展、不断前进的动力。而Service Mesh技术正是现阶段解决这些问题的更优方案。