zoukankan      html  css  js  c++  java
  • Istio 学习记录

    Istio 学习记录

    一、简介

    Istio是ServiceMesh的产品化落地。

    (1) 它帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全。

    (2) 它帮助微服务分层解耦,解耦后的proxy层能够更加专注于提供基础架构能力,例如:

    • 服务发现(discovery)
    • 负载均衡(load balancing)
    • 故障恢复(failure recovery)
    • 服务度量(metrics)
    • 服务监控(monitoring)
    • A/B测试(A/B testing)
    • 灰度发布(canary rollouts)
    • 限流限速(rate limiting)
    • 访问控制(access control)
    • 身份认证(end-to-end authentication)

    (3) 它使得业务工程团队与基础架构团队都更加高效的工作,各自专注于自己的工作,更好的彼此赋能。

    二、架构图

    图一

    图二

    服务(最上面的小红框),通过本地通讯与proxy交互。

    数据平面,由一系列proxy组成(中间一层的两个小红框),核心职责是:高效转发;接收和实施来自mixer的策略;

    控制平面(底下的大红框),核心是控制与应用,核心职责是:管理和配置边车代理;通过mixer实施策略与收集来自边车代理的数据;

    三、架构及模块

    Istio采用二层架构,五大模块,进行微服务ServiceMesh解耦:

    (1) 数据平面,主要负责高效转发

    • envoy模块:即proxy;

    (2) 控制平面,主要负责控制与应用

    • mixer模块:支持跨平台,标准化API的adapter;
    • pilot模块:控制与配置envoy的大部分策略;
    • citadel模块:安全相关;
    • galley模块:与底层平台(例如:K8S)配置解耦;

    四、模块功能详述

    数据面核心组件

    Envoy的核心职责是高效转发,更具体的,它具备这样一些能力:

    • 服务发现
    • 负载均衡
    • 安全传输
    • 多协议支持,例如HTTP/2,gRPC
    • 断路器(Circuit breakers)
    • 健康检查
    • 百分比分流路由
    • 故障注入(Fault injection)
    • 系统度量

    控制面核心组件

    Mixer

    Mixer的一些核心能力是:

    • 跨平台,作为其他组件的adapter,实现Istio跨平台的能力;
    • 和Envoy通讯,实时各种策略
    • 和Envoy通讯,收集各种数据

    Mixer的设计核心在于“插件化”,这种模型使得Istio能够适配各种复杂的主机环境,以及后端基础设施。


    Pilot

    Pilot作为非常重要的控制平面组件,其核心能力是:

    • 为Envoy提供服务发现能力;
    • 为Envoy提供各种智能路由管理能力,例如A/B测试,灰度发布;
    • 为Envoy提供各种弹性管理能力,例如超时,重试,断路策略。

    Pilot的设计核心在于“标准化”,它会将各种流控的控制命令转化为Envoy能够识别的配置,并在运行时,将这些指令扩散到所有的Envoy。

    Pilot将这些能力抽象成通用配置的好处是,所有符合这种标准的Envoy都能够接入到Pilot来。


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


    Citadel

    Citadel组件,它提供终端用户身份认证,以及服务到服务的访问控制。总之,这是一个和安全相关的组件。

    Galley

    Gally组件,它是一个配置获取、校验、处理、分发的组件,它的设计核心在于“解耦”,它将“从底层平台(例如:K8S)获取用户配置”与Istio解耦开来。

    ======================================================================

    Istio在架构上同样分为数据面和控制面两大块。

    数据面
    数据面控制服务所有进出流量,并植入服务治理逻辑。数据面同时负责控制面制定的策略的执行,并上报遥感数据至控制面。
    Istio数据面默认的sidecar为Envoy,Envoy是L4/L7的高性能网络代理组件。
    控制面
    控制面由Pilot、Mixer、Citadel、Galley四部分组成。
    Pilot
    提供服务发现、流量动态路由和服务间的弹性能力(超时、重试、速率限制、熔断等)。
    Mixer
    承担ACL、策略执行、黑白名单等职责,并收集服务遥感数据。
    Citadel
    提供安全证书下发和管理的能力。
    Galley
    Galley提供抽象的、统一的配置校验能力。

    参考资料

    官网

    Istio入门:什么是Istio?Istio的4个主要功能和实现原理

    istio的原理和功能介绍

    istio简介和基础组件原理(服务网格Service Mesh)

    Istio 是啥?一文带你彻底了解

    Istio分层架构?据说80%的人会误解

    服务网格:什么是Envoy(特使)

    Istio系列二:Envoy组件分析

    Istio系列三:Mixer、Pilot组件分析实践

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

    什么是四层(L4 proxy)和七层负载均衡(L7 proxy)?区别是什么? 翻译自Nginx官网

  • 相关阅读:
    SED{shell三剑客awk,sed,grep}
    AWK{shell三剑客awk,sed,grep}
    面试汇总
    shell脚本
    redis主从
    haproxy
    grafana
    zabbix
    lnmp
    shell 基础
  • 原文地址:https://www.cnblogs.com/wangwangfei/p/13973968.html
Copyright © 2011-2022 走看看