首页 > 其他分享 >Istio典型应用场景

Istio典型应用场景

时间:2024-04-25 11:12:33浏览次数:24  
标签:典型 场景 服务 Istio 断路器 故障 调用 应用

Istio作为服务治理的工具,使用户不需要在项目中编写代码即可实现微服务治理。主要应用分布式调用追踪、遥测度量收集、灰度发布应用、熔断、故障注入等几个方面场景。
Istio提供灵活的适配器模型来执行授权策略,并为网络中的服务提供多项功能。Istio提供统一抽象,可以与一组开放式基础设施后端进行交互。这样做是为了给运维提供丰富且深入的控制,同时不给服务开发人员带来负担。Istio旨在改变层与层之间的边界,以减少系统复杂性,消除服务代码中的策略逻辑并将控制权交给运维。


图1 Istio适配器模型

以下是Istio比较典型的应用场景。

一、分布式调用追踪
在微服务架构中,业务的调用链非常复杂。一个来自用户的请求可能涉及几十个服务的协同处理,因此需要一个跟踪系统来记录和分析同一次请求在整个调用链上的相关事件,从而帮助研发和运维人员分析系统瓶颈,快速定位异常和优化调用链路。

二、遥测度量收集
Envoy 收集指标相关的原始数据,如请求的服务、HTTP状态码、调用时延等信息,并将这些指标数据发送给Mixer,通过Mixer Adapters将指标信息转换后发送到后端监控系统中,如Prometheus或者InfluxDB等。Mixer对后端监控系统采用了插件机制,便于兼容不同的监控系统。

图2 Istio实现度量收集的原理

** 三、灰度发布应用**
在云原生架构下,应用系统会出现高频发布。通过灰度发布(又名金丝雀发布)来实现业务从老版本到新版本的平滑过渡,并避免升级过程中出现的问题对用户造成影响。Istio 通过高度的抽象和良好的设计,采用一致的方式实现了灰度发布,可以最小化升级中出现的故障对用户的影响。

四、熔断
在微服务架构中,存在着众多互相依赖的服务单元。若一个服务出现故障,就会形成故障蔓延,最终导致整个系统的瘫痪。为了解决这类故障传递问题,服务网格引入断路器实现熔断。断路器是创建弹性微服务应用程序的重要模式。断路器允许用户编写限制故障、延迟峰值以及消除其他不良网络特性影响的应用程序。

断路器模式是指在某个服务发生故障时,断路器的故障监控机制及时向服务调用方返回一个错误响应,避免调用方长时间等待,从而阻止了故障在整个系统中蔓延。

图4 Istio实现断路器的原理

五、故障注入
对于一个大型微服务应用而言,系统的健壮性非常重要。在微服务系统中存在大量服务实例,当部分服务实例出现问题时,微服务应用需要具有较高的容错性,通过重试、断路、自愈等手段保证系统能够继续对外正常提供服务。因此在应用发布到生产系统前必须对系统进行充分的健壮性测试。

对微服务应用进行健壮性测试的一个最大困难是如何对系统故障进行模拟。Istio 通过服务网格承载了微服务之间的通信流量,因此可以在网格中通过规则进行故障注入,模拟部分微服务出现故障的情况,对整个应用的健壮性进行测试。

图5 故障注入的原理

通过设置规则注入故障的方式,测试人员可以很方便地模拟微服务之间的各种通信故障,对微服务应用的健壮性进行较为完整的模拟测试。

标签:典型,场景,服务,Istio,断路器,故障,调用,应用
From: https://www.cnblogs.com/yanshanduyunxia/p/18157166

相关文章

  • mock的应用场景有哪些?
     Mocking在软件开发和测试中有许多应用场景,主要用于隔离被测系统的外部依赖,简化测试过程,提高测试效率。以下是一些常见的Mocking应用场景: 单元测试:在单元测试中,经常需要隔离被测对象与其依赖的外部组件、服务或对象。使用Mocking技术,可以模拟外部依赖的......
  • 【介绍一个组件】go: Copy-On-Write map,对读极多和写极少的场景做优化
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯代码请看:https://github.com/ahfuzhang/cowmap有这样一种场景:数据量不多的map,在使用中读极多写极少。为了在这种场景下做极致的优化,我实现了copy-on-write的map:其......
  • Unity的AOP应用 应用场景 C#
    在C#中,Unity容器是一个功能强大的依赖注入(DI)容器,它提供了丰富的配置选项来管理对象的生命周期,支持特殊类型的处理,并允许通过配置文件来简化注册和配置过程。同时,Unity还提供了面向切面编程(AOP)的功能,允许开发者在不改变现有代码逻辑的情况下,为对象的方法添加额外的行为。1.Unity......
  • k8s使用存活(liveness)和就绪(readiness)探针的场景
    k8s使用存活(liveness)和就绪(readiness)探针的场景原创 zhuhb 运维笔谈 2024-04-2214:13 上海 听全文存活探针(liveness)主要用于检测容器是否仍然运行正常。如果存活探针检测到容器已经停止运行或者陷入死锁状态,Kubernetes会根据配置的重启策略来决定是否重启该容器。......
  • 说说你对选择排序的理解?如何实现?应用场景?
    一、是什么选择排序(Selectionsort)是一种简单直观的排序算法,无论什么数据进去都是 O(n²)的时间复杂度,所以用到它的时候,数据规模越小越好其基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置然后再从剩余未排序的元素中继续寻找最小(or最大)......
  • three.js使用Instanced Draw+Frustum Cull+LOD来渲染大场景(开源)
    大家好,本文使用three.js实现了渲染大场景,在移动端也有较好的性能,并给出了代码,分析了关键点,感谢大家~关键词:three.js、InstancedDraw、大场景、LOD、FrustumCull、优化、Web3D、WebGL、开源代码:Github我正在承接Web3D数字孪生项目,具体介绍可看承接各种Web3D业务加QQ群交流:106......
  • grep 的使用场景
    场景1:grep中如何同时搜索A或者B?在使用grep命令进行文本搜索时,如果你想要搜索包含"A"或者"B"的行,可以使用以下两种方法:使用-e选项来为每个搜索模式指定一个表达式:grep-eA-eBfilename这里-eA表示搜索包含"A"的行,-eB表示搜索包含"B"的行。使用单个搜索模式并利用正......
  • path.resolve、path.join、path.posix.join对比分析以及适用场景举例
    path.resolve、path.join、path.posix.join对比分析以及适用场景举例path.resolve、path.join和path.posix.join都是Node.js中用于处理和操作文件路径的方法,但它们各自有特定的功能和使用场景。以下是它们的对比分析和适用场景举例:1.path.resolve([...paths])功能:path.......
  • 科里化函数实现以及应用场景讲解
    封装实现://函数柯里化封装(这个封装可以直接复制走使用)functioncurry(fn,args){varlength=fn.length;varargs=args||[];returnfunction(){newArgs=args.concat(Array.prototype.slice.call(ar......
  • Kubernetes 入门、简介、架构、应用场景
    概述Kubernetes是一个开源的容器编排平台,它提供了一种方便管理和部署容器化应用程序的方式。下面是Kubernetes的入门、简介和架构。Kubernetes是一种用于自动部署、扩展和管理容器化应用程序的开源平台。它最初由Google开发,并在2014年开源发布,现已成为CNCF(CloudNativeCom......