首页 > 其他分享 >Istio与SpringCloud对比

Istio与SpringCloud对比

时间:2023-01-19 11:34:03浏览次数:48  
标签:服务 Hystrix Service SpringCloud Istio 网络 熔断 Mesh 对比

Istio 数据平面的高性能智能网络代理,它是基于 Envoy 改进的 Istio-Proxy,控制和协调了被代理服务的所有网络通信,同时也负责收集和上报相关的监控数据。也就是说,代理服务跟外界的所有网络请求都会经过该网络代理,所以网络代理可以代替代理服务实现熔断和限流等功能。

如上图所示,当httpbin 服务调用 Java API 提供的网络 RESTful 接口时,其发送的网络请求会经过它们各自的网络代理 proxy,那么 httpbin的代理就可以为其提供服务熔断相关的机制,当调用 Java API 持续出错时,就不再将网络请求发送出去,而是直接本地返回默认数值。

而 Java API 的网络代理可以为其提供限流功能,当 httpbin 的请求流量过大时,Java API 的网络代理会对其中一部分请求进行限流,直接返回默认的响应,只将部分请求转发给 Java API 进行处理。

对比一下使用Service Mesh 方式和使用 Hystrix 类通用组件的优缺点。

Service Mesh 是“黑盒”的熔断工具,而 Hystrix 等通用组件则可以被看成是“白盒”的熔断工具。 具体判断标准是看二者到底是通过外部监控系统监控服务网络请求情况,还是在服务内部监控服务的请求响应情况。如下图所示,Service Mesh 是独立于服务实例之外的存在,通过代理所有服务实例的网络请求来监控响应信息实现熔断机制;而 Hystrix 等通用组件,则是在服务实例中发挥作用,作为服务实例进行网络请求的基础层之一,来监控网络请求信息。

Service Mesh 是无侵入地实现熔断,而 Hystrix 等通用组件则需要侵入具体服务业务代码中。 Service Mesh 通过在网络层面配置熔断策略,可以在不更改服务代码的情况下为服务实例提供熔断保护,其对服务来说几乎是无感和透明的。通过这个方法,Service Mesh 适用于任何语言或者框架开发的服务,并且开发人员也不必为每个服务单独配置或重新编程,减少了开发人员的工作量。Hystrix等通用组件需要更改服务的具体代码来引入其第三方依赖库,这些通用组件目前也只支持几类较为主流的编程语言,适用性不如 Service Mesh高。除此之外,开启或关闭熔断机制需要重新部署或者重启服务实例,这对高可用的服务系统来说代价很高。

Service Mesh 熔断机制能提供的回退行为较为有限,而 Hystrix 等通用组件提供了较为丰富的回退实现。 正是因为 Service Mesh 是无侵入的,所以它只能在系统触发熔断机制时,通过 Proxy 返回 HTTP 503 错误,期望应用服务在应对503错误时进行各类回退操作。 而 Hystrix等通用组件在其 API 层面提供了多种的回退操作实现,这样可以实现各种不同类型的回退操作,比如单一的默认值、使用缓存结果或者去调用其他服务等。

 

总体来说,Istio是使用了 Proxy 作为服务的网络层面的代理来实现熔断机制的,不依赖底层具体的代码和技术栈,而且在部署后也可以进行重新配置和部署。Hystrix等通用组件则需要在代码级别实现熔断机制,因此它需要在开发阶段时就做出具体熔断配置等决策,后期变更配置成本比较高。

 

标签:服务,Hystrix,Service,SpringCloud,Istio,网络,熔断,Mesh,对比
From: https://www.cnblogs.com/muzinan110/p/17061225.html

相关文章

  • 使用Consul作为Istio的注册中心
    默认istio使用k8s作为注册中心,k8s的service、endpoint对应于服务、实例。针对一些还未接入到服务网格的SpringCloud服务,其使用的注册中心可能是consul,如何让服务网格上的......
  • Istio可观测性(监控)
    传统监控系统监控系统通常由指标采集子系统和数据处理子系统组成。指标采集子系统主要负责信息采集、过滤、汇总和存储;数据处理子系统主要负责数据分析、展现、预警和告警......
  • Istio 熔断限流
    Istio使用目标规则中的TrafficPolicy属性来配置熔断和限流,其中connectionPool属性配置限流方式,outlierDetection配置异常检测的熔断方式。下面,来分别看一下这二者是如......
  • SpringCloud(二)
    文章目录​​6、Ribbon​​​​6.1、Ribbon是什么​​​​6.2、Ribbon能干什么​​​​6.3、Ribbon实现负载均衡环境搭建​​​​6.4、Ribbon实现负载均衡​​​​6.5、自定......
  • Istio可观测性(链路)
    可观测性的英文是Observability,这是伴随着云原生技术发展产生的一个新兴词汇,在传统的IT中,并没有这种说法。简单来说,可观测性是通过系统输出信息到外部,以检测系统内部的......
  • Istio 灰度发布
    金丝雀发布也被称为灰度发布,实际上就是将少量的生产流量路由到线上服务的新版本中,以验证新版本的准确性和稳定性。Istio和Kubernetes实现金丝雀发布的方式不太一样,Istio......
  • SpringCloud Tencent Polaris
    北极星是腾讯开源的服务发现和治理中心,致力于解决分布式或者微服务架构中的服务可见、故障容错、流量控制和安全问题。虽然,业界已经有些组件可以解决其中一部分问题,但是缺少......
  • m基于效用函数的联合资源分配matlab仿真,对比PF,CUBP以及DUBP三种方法
    1.算法描述 表示基站n到用户m是否连接。 1.1C-CUBP   主要涉及到的公式有: 1.2C-DUBP 主要涉及到的公式有: 2.仿真效果预览matlab2022a仿真......
  • SpringCloud Bus消息总线
    1、介绍①概念人话:不用一个一个服务去post。一次post后,各个服务通过bus都能获取post的信息去更新配置。即将N次向client的post,改为了一次post(向client或center)在微服......
  • istio入门
    Istio在逻辑上分为数据平面和控制平面。数据平面,由一组高性能的智能代理(基于Envoy改进的istio-proxy)组成,它们控制和协调了被代理服务的所有网络通信,同时也负责收集和......