为何说Istio已经远远超越SpringCloud?

2022-06-22

786

在软件行业,微服务架构是一种重要的发展趋势。这一趋势,不仅仅是对企业内的IT信息系统建设,甚至在企业向数字化转型方面,都有着深远的影响。


什么是微服务架构?


微服务架构(也可简称为微服务)是一种依赖于一系列可独立部署服务的架构方法。这些服务有自己的业务逻辑和数据库,并负责实现特定的目标。更新、测试、部署和扩展都在每一项服务中进行。微服务可将特定于领域的主要业务问题分解为单独的独立代码库。微服务不会降低复杂性,但它们可将任务划分成彼此独立运行且对整体有益的较小流程,从而使任何复杂情况都变得一目了然且更易管理。微服务通常与 DevOps 并驾齐驱,因为它们是持续交付实践的基础,可让团队快速适应用户需求。


SpringCloud 和 K8s 对比


两种架构处理了不同范围的MSA障碍,并且它们从根本上用了不同的方法。Spring Cloud方法是试图解决在JVM中每个MSA挑战,然而Kubernetes方法是试图让问题消失,为开发者在平台层解决。


Spring Cloud在JVM中非常强大,Kubernetes管理那些JVM很强大。同样的,它就像一个自然发展,结合两种工具并且从两个项目中最好的部分受益。


可以看到,里面差不多一半关注点是和运维相关的。这么看来,似乎拿spring cloud和kubernetes比较有点不公平,spring cloud只是一个开发框架,对于应用如何部署和调度是无能为力的,而kubernetes是一个运维平台。


SpringCloud 和 istio 对比




这里面哪些内容是我们可以拿掉或者说基于 Service Mesh(以 Istio 为例)能力去做的?


分析下来,可以替换的组件包括网关(gateway 或者 Zuul,由Ingress gateway 或者 egress 替换),熔断器(hystrix,由SideCar替换),注册中心(Eureka及Eureka client,由Polit,SideCar 替换),负责均衡(Ribbon,由SideCar 替换),链路跟踪及其客户端(Pinpoint 及 Pinpoint client,由 SideCar 及Mixer替换)。


这是我们在 Spring Cloud 解析中需要完成的目标:即确定需要删除或者替换的支撑模块。


可以说,springcloud关注的功能是kubernetes的一个子集。


可以看出,两边的解决方案都是比较完整的。kubernetes这边,在Istio还没出来以前,其实只能提供最基础的服务注册、服务发现能力(service只是一个4层的转发代理),istio出来以后,具有了相对完整的微服务能力。


而spring cloud这边,除了发布、调度、自愈这些运维平台的功能,其他的功能也支持的比较全面。相对而言,云厂商会更喜欢kubernetes的方案,原因就是三个字:非侵入。


平台能力与应用层的解耦,使得云厂商可以非常方便的升级、维护基础设施而不需要去关心应用的情况,这也是我比较看好service mesh这类技术前景的原因。


也许用spring cloud+cloud foundry去和kubernetes比较才更加合理,但需要注意的是,即使加入了cloud foundry的paas能力,spring cloud仍然是“侵入式”的且语言相关,而kubernetes是“非侵入式”的且语言无关。


ServiceMesh的价值


无论是单体应用,还是分布式应用,都可以建立在Service Mesh上,mesh上的sidecar支撑了所有的上层应用,业务开发者无须关心底层构成,可以用Java,也可以用Go等语言完成自己的业务开发。


当微服务架构体系越来越复杂的时候,需要将“业务服务”和“基础设施”解耦,将一个微服务进程一分为二:


为什么代理会叫sidecar proxy?biz和proxy相生相伴,就像摩托车(motor)与旁边的车厢(sidecar)。


未来,sidecar和proxy就指微服务进程解耦成两个进程之后,提供基础能力的那个代理进程。


Istio的理论概念是Service Mesh(服务网络),我们不必纠结于概念实际也是微服务的一种落地形式有点类似上面的SideCar模式。


它的主要思想是关注点分离,即不像SpringCloud一样交给研发来做,也不集成到k8s中产生职责混乱,Istio是通过为服务配 Agent代理来提供服务发现、负截均衡、限流、链路跟踪、鉴权等微服务治理手段。


Istio开始就是与k8s结合设计的,Istio结合k8s可以牛逼的落地微服务架构。


istio 超越 spring cloud和dubbo 等传统开发框架之处, 就在于不仅仅带来了远超这些框架所能提供的功能, 而且也不需要应用程序为此做大量的改动,开发人员也不必为上面的功能实现进行大量的知识储备。


Istio探索和实践——SolarMesh


SolarMesh 是基于 Istio 及容器技术,提供流量监控和管理,提供完善的非侵入式服务治理解决方案。


SolarMesh 功能:

  • · 帮助企业在纷繁复杂的微服务调度中快速定位问题,增强研发效率。
  • · 通过流量灰度让版本更新更加平滑,降低版本升级风险。
  • · 支持实时反映真实集群状态,以流量的角度凸显业务问题,增强运维能力。
  • · 支持多集群管理,可对接任意数量的标准k8s集群,接入成本极低。


SolarMesh架构图


Istio 与 SolarMesh 对比


体验SolarMesh,从这里开始!


原文部分素材来源:https://mp.weixin.qq.com/s/Qd6ZWYvQ2VIIy1jM2y3L1Q



技术交流
我们建立了多个云原生技术交流群,其中有来自Oracle、Citrix、华为、腾讯等国内外云计算专家,立即扫码,拉你进群。目前已有2000+开发者加入我们......
云原生厂商 云原生技术服务商
在云原生时代,行云创新致力于通过赋能开发者,实现企业快速迭代与交付,大幅提升创新效率。
产品下载