Spring Cloud、Istio和Dubbo各有优势,也各有不足,用户可以根据实际业务情况按需选择。
Spring Cloud是第一代微服务治理框架,是一系列框架的有序集合。它是将业内开发得比较好的Netfilx微服务治理框架集成进Spring框架进行封装,Spring Cloud 相当于是提供了构建微服务系统所需的“全家桶”套餐。
Spring Cloud没有统一的控制平台,需要将治理工具分散到各业务模块,并没有做到真正的治理与业务分离,因此您首先需要完成治理工具与业务模块的融合,才可以使用服务治理功能。
平台提供了适用于Spring Cloud的Java开发模板框架和SDK依赖包,可以帮助您快速地完成工具与业务的融合。您只需要基于模板进行业务逻辑的开发,将业务代码构建并部署后,即可使用Spring Cloud进行微服务治理。
特点 |
说明 |
功能全面 |
由多个框架集成,功能丰富且全面。 |
经验丰富 |
在实践方面已经积累了足够的经验,有大量成熟的实例可供参考,是目前最为稳妥的可执行微服务框架方案。 |
运行环境无限制 |
支持在虚拟机、容器、物理机上运行。 |
跨语言能力不足 |
完美支持Java代码,但不支持其他语言,跨语言能力不强。适合使用Java开发业务的企业。 |
Istio是第二代微服务治理框架,有着强大的管理能力。
采用了“服务网格”技术,分为控制平面和数据平面。控制平面负责配置转发,与平台通信;数据平面和业务结合,共同负责流量转发。Istio使治理工具从业务中完全分离出来为服务网格层,通过一个统一的控制平面对系统中全部服务网格层的流量进行分发和管理,因此治理工具无需融合到业务模块中。您只需要专注于业务自身的逻辑,将业务代码构建并部署后,即可使用Istio进行微服务治理。
服务网格:一个基础设施层,用于处理服务间的通信。服务网格由轻量级的网络代理组成,与服务一起运行,保证了服务间稳定可靠的通信。
边车:数据平面的基本组成单位,运行态为容器,与服务一起运行,用于劫持所有进出服务的流量,并将其根据网格的路由配置进行转发。边车对于服务来说是完全透明的,不会对服务产生任何影响。
特点 |
说明 |
支持跨语言 |
对编程语言无要求,跨语言能力强。适合多语言开发业务的企业。 |
集成性较弱 |
Istio是独立框架,不支持和其他框架集成。 |
经验欠缺 |
目前还没有广泛的应用,但因其强大的管理能力,是一个值得关注的方案。目前仅在Kubernetes上支持的比较好,其他平台有待时间验证。 |
运行环境限制 |
仅支持在容器上运行。 |
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(Remote Procedure Call,远程服务调用方案),以及SOA服务治理方案。
通过zookeeper提供服务注册发现功能,使用RPC协议提供透明远程调用,只需要简单配置就可以像调用本地方法一样调研远程服务,同时提供负载均衡及容错机制。
特点 |
说明 |
透明化的远程调用 |
就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 |
软负载均衡与容错机制 |
可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 |
服务自动注册与发现 |
不再需要填入固定的服务提供者地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 |