基于 Agent 的无侵入 Proxyless Mesh:开启 Java 服务网格的未来 - 文章 - 开发者社区 - 火山引擎
微服务引擎 MSE 是火山引擎提供的一款面向微服务全生命周期的一站式微服务解决方案。产品提供开源增强的 Nacos 注册发现、配置管理的能力,兼容原生 Spring Cloud 、gRPC及 Service Mesh 架构丰富微服务治理能力,助力用户快速构建稳定、安全、高效云原生微服务体系。
来源 | 云原生服务治理团队
微服务的历史与演变
微服务是一种软件架构设计模式,通过微服务,大型应用可以被拆分成多个独立的小组件,以便于构建、测试、部署和更新。自 2014 年概念被提出以来,它经历了几个主要的发展阶段:
第一阶段是 面向服务的 SOA 架构 ,通过部署集中式的 ESB 服务总线实现。 虽然结构相对简单,但性能 ESB 本身负担较重,可扩展性不足。
随着以 Dubbo/Spring Cloud 为代表的 微服务 SDK 架构 成为主流,微服务架构也开始进入第二阶段。微服务 SDK 架构与 SOA 最大区别是将总线上的功能分摊到了各个终端上(微服务 SDK)实现。 这种架构虽然功能强大,性能优异,但需要侵入式改造应用,并常常遇到版本冲突问题。
如今, Service Mesh 服务网格 架构受到了广泛的关注和应用,逐渐成为云原生微服务的社区标准。 它通过在微服务旁边部署独立的 Sidecar 进程,来接管各项服务治理功能,极大提高了研发和迭代效率。而在技术选型方面 ,Istio 成为了当前最流行的开源服务网格, 虽然该架构对应用的改造成本较低,能够有效解决微服务的侵入改造问题,但它的资源消耗量较大,而且增加的网络代理开销和运维成本也不容忽视。
针对上述问题,近几年社区又兴起了对新架构的讨论: Proxyless Mesh 。这是从 Proxy 模式的 Service Mesh 发展而来的新型架构,它融合了微服务 SDK 架构和 Service Mesh 架构的优势,为大量传统微服务应用无痛迁移至云原生环境提供了切实可行的轻量级解决方案。
基于 JavaAgent 的 Proxyless 方案
基于字节跳动内部应用实践和外部客户服务经验,火山引擎云原生团队将 JavaAgent 技术和 Proxyless Mesh 技术结合,在微服务引擎 MSE 中实现了一种高效、灵活、易于管理的 Java 服务网格解决方案 MSE Agent 。
注:JavaAgent 是 Java 平台提供的强大机制,开发者无需修改应用程序代码,即可动态修改和增强 Java 应用程序的行为。
MSE Agent 既有微服务 SDK 架构的高性能和多功能优势,又有 Service Mesh 架构的无侵入优势,并且完全适配了主流开源服务网格框架 Istio:
可以说,以火山引擎 MSE Agent 为代表的 Java Agent Proxyless 方案是目前 Jave 领域微服务治理的最优解。