?

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

《ServiceMesh究竟解决什么问题?》

Istio究竟是什么?》

Istio分层架构设计?》

Istio架构体系中,流控(Traffic Management)虽然是数据平面的Envoy Proxy实施的,但整个架构的核心其实在于控制平面的Pilot。

灰度发布的过程在《Istio,灰度发布》一文中已经有过描述,今天重点说说Pilot和Envoy的交互流程与内部结构。

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

一、通用交互流程

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

图示:

灰色圆形,为业务服务

紫色六边形,为Envoy代理

二者相生相伴。

起初,上游调用方ServiceA访问下游服务提供方ServiceB的V1版本,在ServiceB的V2版本部署好之后,调用方如何知道“SvcA切分1%的流量至SvcB的V2版本”这个指令的呢?

整个过程主要分为三大步骤:

用户在控制平面的后台,通过Pilot的API,修改A到B的路由策略(标号1);

Pilot将路由策略固化存储,以便未来新注册的调用方A能够知道当前最新的路由策略;对于已经存在的调用方A,Pilot则通过主动通知的方式告之调用方A对应的Envoy(标号2);

Envoy作为数据平面,实施最新的路由策略(标号3),在本例中,即将1%的流量导给灰度版本Bv2;

二、服务发现与负载均衡

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

讲了通用的流控策略实施通用流程,而服务发现与负载均衡,只是一个种策略实施的特例:

提供服务的SvcB新增一个Pod(标号1);

在Pilot后台修改SvcB的集群配置(标号2);

Pilot将SvcB的最新信息同步给该配置的订阅方(标号3),即SvcB的调用方SvcA对应的Proxy;

SvcA对应的Proxy增加到SvcB的链接(标号4),并实施负载均衡;

画外音:实际是链接到SvcB对应的Proxy。

整个过程,与使用配置中心来实施服务发现基本类似。

三、请求的入口及出口

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

ServiceMesh的核心,是技术基础设施与业务服务的解耦,服务A调用服务B,再次强调:

一个容器Pod内的一个服务,服务进程(SrvA/SrvB)和边车进程(Proxy)是相生相伴的,他们之间的交互是本地交互(标号1)

跨容器Pod之间的远程调用,必须通过Proxy进行(标号2)

言下之意,服务A调用服务B,请求的流程是:

SvcA -> SvcA Proxy -> SvcB Proxy -> SvcB 

响应的流程则反过来:

SvcB -> SvcB Proxy -> SvcA Proxy -> SvcA 

跨网之间调用,请求的入口和出口,都是Proxy。

四、Pilot内部结构

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

Pilot它的内部结构并不复杂:

Pilot的核心,是各种流控策略的维护,Abstract Model;

必然,Pilot需要提供接口给用户,增删查改这些策略,Rules API;

一方面,Pilot需要保持各类底层基础设施的兼容性,Platform Adapter;

另一方面,Pilot又需要保持不同Proxy实接口的兼容性,Envoy API;

这么设计的好处是:

Istio设计时已经考虑了异构的基础设施,不管底层是K8s还是其他体系,都可以兼容

任何第三方可以实现自己的proxy,只要符合相关的API标准,都可以和Pilot集成

Pilot与Envoy的配合,是Istio的核心,如此一来:

服务发现(discovery)

负载均衡(load balancing)

故障恢复(failure recovery)

服务度量(metrics)

服务监控(monitoring)

A/B测试(A/B testing)

灰度发布(canary rollouts)

限流限速(rate limiting)

等很多能力都可以实现了。

MerviceMesh并没有大家想的复杂。

思路比结论重要。

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

相关推荐
新闻聚焦
猜你喜欢
热门推荐
  • 微软AI面试题有多难?这里有一份样卷

      究竟什么样的AI人才能被微软这样的巨头聘用呢?今天,文摘君就淘来了几道微软AI 面试题,同时给出了最基本的解答......

    06-25????来源:澎湃新闻网

    分享
  • 全球最聪明的大脑怎么看AI?他们预测了

      2017年AI领域取得了诸多成果。2018年AI又将何去何从?以下是来自世界顶级研究人员和行业领军人物对2018年AI领域发展作......

    02-20????来源:虎嗅网

    分享
  • 2017JavaScript框架战报 - React分战场

      我们来看看与React有关的软件包的生态系统。当Facebook构建React时,就有许多来自开源社区的第三方软件包。为提供完......

    02-27????来源:湖北新闻网

    分享
  • 小白学数据:教你用Python实现简单监督学

      监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近......

    03-05????来源:今日头条

    分享
  • 现代编程语言Swift、Kotlin等十大有趣功能

      最近学习了一些现代编程语言,比如Reason,Swift,Kotlin和Dart。这些编程语言提供了许多新功能,本文主要分享了我认......

    04-29????来源:祁东新闻网

    分享
  • 领域场景分析的6W模型

      组成场景的要素常常被称之为6W模型,即描写场景的过程必须包含Who,What,Why,Where,When与hoW这六个要素。......

    04-30????来源:砍柴网

    分享
  • 开源应用服务器WildFly 12发新季度交付模式

      WildFly 12 Final版本现在已经可以下载了,WildFly是一款灵活的开源应用服务器,支持开发人员构建轻量级应用程序。支持......

    05-10????来源:青岛新闻网

    分享
  • 基于Spring Cloud的微服务落地

      微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,......

    06-04????来源:广西新闻网

    分享
  • 为什么阿里工程师纷纷在内网晒代码?

      前阵子,在阿里一个小黑屋里,5名对代码有着极致追求的工程师参与阿里代码领域最高荣誉“多隆奖”的最终角逐。......

    06-08????来源:四川新闻网

    分享
  • 超级大汇总!200多个最好的机器学习、

      我把这篇文章分为了四个部分:机器学习,自然语言处理,python和数学。在每个部分中我都列举了一些主题,但是因......

    09-25????来源:洛阳新闻网

    分享
返回列表
Ctrl+D?将本页面保存为书签,全面了解最新资讯,方便快捷。