• 第八章 跨语言服务治理方案 Service Mesh


    8.1 Service Mesh 概述

      新兴的下一代微服务架构,被称为下一代微服务,同时也是云原生技术栈的代表技术之一。

      8.1.1 Service Mesh的由来

        从2016年到2018年,service mesh经历了从无到有的过程

      8.1.2 Service Mesh的定义

        服务网格是一个基础设施层,用于处理服务间通信。现代云原生应用有着复杂的服务拓扑结构,服务网格负责在这些拓扑结构中实现请求的可靠传递。实践中,服务网格通常被实现为一组轻量级网络代理,它们与应用程序部署在一起,对应用程序透明。

      8.1.3 Service Mesh详解

    • 单个服务调用:应用实例和Service mesh 代理实例是两个独立的进程,它们之间的通信时远程调用,而不是代码层面的方法调用。客户端的请求会先到Service Mesh代理实例,代理实例表现为Sidecar,完成服务发现、负载均衡等基本功能,熔断、限流、重试等容错功能,路由功能,以及认证、授权、加密等,最后将请求发送给应用服务。
    • 多个服务调用:Service mesh负责所有服务间请求转发,服务只负责发送和处理请求,不必再负责传递请求的具体逻辑。
    • 大量服务调用:当系统存在大量服务时,服务间调用关系表现为网状。Sidecar之间的服务调用关系形成一个网络,这就是Service Mesh(服务网格)名字的由来。
    • Service Mesh定义回顾:抽象:Service mesh是一个抽象层,负责王完成服务间通信。并且将这些功能从应用中剥离出来,形成一个单独的通信层,并将其下沉到基础设施层。    功能:请求的可靠传递。        部署:轻量级网络代理,以sidecar的模式和应用程序一对一部署,两者之间的通信时远程调用。    透明:Service mesh对应用程序是透明的。Service Mesh可以独立部署升级、扩展功能、修复缺陷,而不必改动应用程序。                                    

    8.2 Service Mesh演进历程

      下面讲述Service Mesh技术的起源、发展、以及一步一步的演进历程。

      8.2.1 远古时代的案例

        在应用代码中处理网络通信细节,比如数据包顺序、流量控制等。后来TCP/IP协议栈负责这些功能。

      8.2.2 微服务时代的现状

        服务发现、负载均衡、熔断、重试。

      8.2.3 侵入式框架的痛点

        Spring Cloud和Dubbo这些传统的微服务治理框架都是侵入式的微服务框架。

        痛点1:门槛高。

        痛点2:功能不全。  Istio的路由功能比Spring Cloud强大。

        痛点3: 无法跨语言。微服务有跨语言的优点。

        痛点4:升级困难。

      8.2.4 解决问题的思路

      8.2.5 Proxy模式的探索

        为了解决客户端和服务端直接耦合的问题,尝试使用Proxy模式来隔离客户端和服务端,典型的如Nginx、HAProxy、Apache等HTTP反向代理。Proxy转发所有流量,而Proxy需要为代理的流量实现基本功能,如负载均衡。

      8.2.6 Sidecar模式的出现

        SiderCar在Proxy上发展起来,功能更加全面。

      8.2.7 第一代的service Mesh

        Linkerd、Envoy

      8.2.8 第二代的Service Mesh

      Istio

      Istio最大的创新在于,它为Service Mesh带来了前所未有的控制力:

    • 以Sidecar方式部署的Service Mesh控制了服务间所有的流量
    • Istio增加了控制面板来控制系统中所有的Sidecar
    • Istio能够控制所有的流量,即控制系统中所有请求的发送。

    8.3 Service Mesh市场竞争

      8.3.1 Service Mesh的萌芽期

      8.3.2 急转直下的Linkerd

      8.3.3 波澜不惊的Envoy

      8.3.4 背负使命的Istio

      8.3.5 背水一战的Buoyant

      8.3.6 其他参与者

      8.3.7 Service  Mesh的国内发展情况

    8.4 Istio

      8.4.1 Istio概述

        一个连接,管理和保护微服务的开放平台。

        功能:

          连接:智能控制服务之间的流量和API调用。

          保护:身份验证、授权和服务之间通信加密,保护服务。

          控制:

          观测:自动跟踪、监控和记录所有服务。

            Istio设计目标:

          最大化透明度:

          增量

          可移植性

          策略一致性     

      8.4.2 架构和核心组件

        Istio分为数据平面控制平面两个部分:

        数据平面:是以Sidecar方式部署的智能代理,Istio默认集成的是Envoy,控制微服务之间的网络通信,已经和Mixer模块的通信。

        控制平面:管理和配置数据平面,控制数据平面的行为,如代理路由流量、实施策略、收集遥测数据、加密认证等。控制平面包含Pilot、Mixer、Citadel三个主要组件。

        Envoy: 用于调节服务网格中所有的服务的入站、出站流量。具体如下HTTP、gRPC、TCP Proxy、Thrift

          另外,Enovy还提供了和网络通信直接相关的各种功能:

               服务发现: 从Pilot得到服务发现信息。

          负载均衡

             健康检查:

           熔断:

           高级路由:

           基于百分比的流量拆分:

           加密和认证:

           故障注入: 

          此外,Envoy还要完成对请求属性的提取,这些属性可以通过Istio Proxy的Mixer Filter发送给Mixer,用于执行策略决策、配额检查等行为。

          Mixer:负责提供策略控制和遥测收集的组件,在istio中的职责如下三点:

            Check: 前置条件检查。认证、黑白名单、ACL检查。

            Quota: 比如限速。

            Report: 遥测报告。

          Citadel: 加密、访问控制、审计。

        

  • 相关阅读:
    umask设置导致的weblogic中的应用上传的文件没有权限打开
    顺序表查找及其优化(Java)
    前端能力要求
    CSS动画:旋转卡片效果
    CSS居中
    http服务器与https服务器的区别
    phpCURL抓取网页内容
    Node.js概述
    jQuery源码分析
    JavaScript学习书签
  • 原文地址:https://www.cnblogs.com/liufei1983/p/11519027.html
Copyright © 2020-2023  润新知