服务网格 Service Mesh

news2024/11/17 16:02:49

什么是服务网格?

服务网格是一个软件层,用于处理应用程序中服务之间的所有通信。该层由容器化微服务组成。随着应用程序的扩展和微服务数量的增加,监控服务的性能变得越来越困难。为了管理服务之间的连接,服务网格提供了监控、记录、跟踪和流量控制等新功能。它独立于每项服务的代码,这使它能够跨网络边界和多个服务管理系统工作。

为什么需要服务网格?

在现代应用程序架构中,您可以将应用程序作为可独立部署的小型微服务的集合来构建。不同的团队可以构建单独的微服务并选择其编程语言和工具。但是,微服务必须进行通信,应用程序代码才能正常运行。

应用程序性能取决于服务之间通信的速度和弹性。开发人员必须跨服务监控和优化应用程序,但由于系统的分布性质,他们很难获得可见性。随着应用程序的扩展,管理通信变得更加复杂。

服务级别的可观测性

随着部署的工作负载和服务越来越多,开发人员发现很难理解所有服务是如何协同工作的。例如,服务团队想知道他们的下游和上游依赖关系是什么。他们希望更清楚地了解服务和工作负载在应用程序层的通信方式。

服务级别控制

管理员希望控制哪些服务相互通信,以及它们执行哪些操作。他们希望对微服务架构中服务的行为、策略和交互进行精细的控制和治理。强制执行安全策略对于监管合规至关重要。

服务网格有哪些优势?

服务网格提供了一个集中的专用基础设施层,用于处理分布式应用程序中复杂的服务到服务通信。

服务发现

服务网格提供自动服务发现,可以减少管理服务端点的运维负担。它们使用服务注册表来动态发现和跟踪网格中的所有服务。无论服务位于何处或底层基础设施如何,都可以无缝地相互查找和通信。您可以根据需要部署新服务来快速扩展。

负载均衡

服务网格使用各种算法(例如循环算法、最少连接或加权负载均衡)在多个服务实例之间智能地分配请求。负载均衡可提高资源利用率并确保高可用性和可扩展性。您可以优化性能并防止出现网络通信瓶颈。

流量管理

服务网格提供高级流量管理功能,可对请求路由和流量行为进行精细控制。下面是几个示例。

流量分割

您可以将传入流量划分到不同的服务版本或配置中。网格将一些流量引导到更新后的版本,从而以受控方式逐步推出变更。这样可以实现平稳过渡,并最大限度地降低变更的影响。

请求镜像

您可以将流量复制到测试或监控服务进行分析,而不影响主请求流。镜像请求时,您可以深入了解服务如何在不影响生产流量的情况下处理特定请求。

金丝雀部署

您可以将一小部分用户或流量引导到新的服务版本,而大多数用户则继续使用现有的稳定版本。在有限的接触范围内,您可以在现实环境中试验新版本的行为和性能。

安全性

服务网格提供安全通信功能,例如双向 TLS(mTLS)加密、身份验证和授权。双向 TLS 支持服务间通信中的身份验证。它通过加密流量来帮助确保数据的机密性和完整性。您还可以强制执行授权策略,以控制哪些服务访问特定端点或执行特定操作。

监控

服务网格提供全面的监控和可观测性功能,可深入了解服务的运行状况、性能和行为。监控还支持故障排除和性能优化。以下是您可以使用的监控功能示例:

  • 收集延迟、错误率和资源利用率等指标,以分析整体系统性能

  • 执行分布式跟踪,查看多个服务中请求的完整路径和时间

  • 在日志中捕获服务事件,用于审计、调试和合规目的

服务网格是如何工作的?

服务网格从单个服务中移除控制服务间通信的逻辑,并将通信抽象到自己的基础设施层。它使用多个网络代理来路由和跟踪服务之间的通信。

代理充当组织网络和微服务之间的中间网关。所有进出该服务的流量都通过代理服务器路由。单个代理有时被称为 sidecar,因为它们是分开运行的,但在逻辑上位于每个服务旁边。这些代理一起构成了服务网格层。

在这里插入图片描述

服务网格架构中有两个主要组成部分:控制面板和数据面板。

数据面板

数据面板是服务网格的数据处理组件。它包括所有 sidecar 代理及其功能。当一个服务想要与其他服务通信时,sidecar 代理会采取以下操作:

  • sidecar 拦截请求

  • 它将请求封装在单独的网络连接中

  • 它在源代理和目标代理之间建立安全的加密通道

sidecar 代理处理服务之间的低级消息传递。它们还会实施断路和请求重试等功能,以增强弹性并防止服务降级。服务网格功能(例如负载均衡、服务发现和流量路由)在数据面板中实施。

控制面板

控制面板充当服务网格的中央管理和配置层。

使用控制面板,管理员可以在网格内定义和配置服务。例如,他们可以指定服务端点、路由规则、负载均衡策略和安全设置等参数。定义配置后,控制面板将必要信息分发到服务网格的数据面板。

代理使用配置信息来决定如何处理传入的请求。它们还可以接收配置更改并动态调整其行为。您可以实时更改服务网格配置,而无需重新启动或中断服务。

服务网格实现通常在控制面板中包括以下功能:

  • 用于跟踪网格内所有服务的服务注册表

  • 自动发现新服务并删除非活动服务

  • 收集和聚合遥测数据,例如指标、日志和分布式跟踪信息

在这里插入图片描述

什么是 Istio?

Istio 是一个开源服务网格项目,设计为主要与 Kubernetes 配合使用。Kubernetes 是一款开源容器编排平台,用于大规模部署和管理容器化应用程序。

Istio 的控制面板组件本身作为 Kubernetes 工作负载运行。它使用 Kubernetes 容器组(一组共享一个 IP 地址的紧密耦合的容器)作为 sidecar 代理设计的基础。

Istio 的第 7 层代理在与主服务相同的网络环境中作为另一个容器运行。从这个位置,它可以拦截、检查和操作所有通过容器组的网络流量。但是,主容器不需要任何改动,甚至不需要知道这种情况正在发生。

开源服务网格实施面临哪些挑战?

以下是与 Istio、Linkerd 和 Consul 等开源平台相关的一些常见服务网格挑战。

复杂性

服务网格引入了其他基础设施组件、配置要求和部署注意事项。它们的学习曲线很陡峭,这要求开发人员和操作人员获得使用特定服务网格实施方面的专业知识。培训团队需要时间和资源。组织必须确保团队具备必要的知识,以了解服务网格架构的复杂性并对其进行有效配置。

运维管理费用

服务网格会带来部署、管理和监控数据面板代理和控制面板组件的额外开销。例如,您必须执行以下操作:

  • 确保服务网格基础设施的高可用性和可扩展性

  • 监控代理的运行状况和性能

  • 处理升级和兼容性问题

必须仔细设计和配置服务网格,以最大限度地减少对整个系统的性能影响。

集成挑战

服务网格必须与现有基础设施无缝集成,才能执行其所需的功能。这包括容器编排平台、网络解决方案和技术堆栈中的其他工具。

在复杂多样的环境中,要确保与其他组件的兼容性和顺利集成可能具有挑战性。要更改 API、配置格式和依赖关系,需要进行持续的规划和测试。如果您需要在堆栈中的任何位置升级到新版本,也是如此。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1368333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 期末复习

Linux 期末复习 计算机历史 硬件基础 1,计算机硬件的五大部件:控制器、运算器、存储器、输入输出设备 2,cpu分为精简指令集(RISC)和复杂指令集(CISC) 3,硬件只认识0和1,最小单位是bit,最小存储单位是字…

应用统计学期末复习简答题

应用统计学期末复习简答题 1.解释众数、中位数和调和平均数。2、什么是普查?其有何特点和作用?3、什么是抽样调查?其有何特点和作用?4、什么是偏度系数,并解释左偏分布、对称分布和右偏分布。5、解释置信区…

竞赛保研 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

结构型设计模式——适配器模式

适配器模式 这个更加好理解,就是做适配功能的类,例如,现在手机没有了圆形耳机接口,只有Type-C接口,因此你如果还想要使用圆形耳机的话需要买个圆形接口转Type-C的转换器(适配器),这…

一分钟带你了解深度学习算法

深度学习是一种受到生物学启发的机器学习方法,其目标是通过构建多层神经网络来模拟人脑的工作原理。它在过去几十年来取得了巨大的进展,并在图像识别、语音识别、自然语言处理等领域取得了突破性的成果。 深度学习的核心思想是模仿人脑的神经网络。人脑中…

HarmonyOS应用开发学习笔记 Want概述Ability跳转

一、Want的定义与用途 Want是对象间信息传递的载体,可以用于应用组件间的信息传递。其使用场景之一是作为startAbility()的参数,包含了指定的启动目标以及启动时需携带的相关数据,如bundleName和abilityName字段分别指明目标Ability所在应用…

vue element ui table表格--实现列的显示与隐藏

前言 实现效果 提示&#xff1a;代码段太简单就不解释了&#xff0c;自己看代码自己更改&#xff0c;下面代码直接无脑复制更改就行 一、实现代码&#xff1f; <template><div id"app"><el-table :data"tableData" border style"w…

Spring 见解 7 基于注解的AOP控制事务

8.基于注解的AOP控制事务 8.1.拷贝上一章代码 8.2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 8.3.service Service Transactional(readOnlytrue,propagation Pr…

学生用台灯对眼睛好吗?五款考研党台灯推荐

对于一名深耕家电多年的测评师&#xff0c;对于各品牌的台灯产品测评做了不少&#xff0c;本期我将给大家带来一期超全的热门护眼台灯深度测评。 据世界卫生组织最新研究报告称&#xff0c;我国近视患者人数多达6亿左右&#xff0c;几乎占据了中国总人口数量的一半&#xff0c;…

进程管理及计划任务

一、定义 程序&#xff1a;硬盘上躺着。执行特定任务的一串代码 进程&#xff1a;加载到内存中运行。进程是程序的副本&#xff0c;进程是有生命周期 进程的控制&#xff1a;每开启一个进程会消耗相应的硬件资源&#xff0c;内存&#xff0c;CPU&#xff0c;磁盘io 内存不足&am…

MongoDB高级集群架构设计

两地三中心集群架构设计 容灾级别 RPO & RTO RPO&#xff08;Recovery Point Objective&#xff09;&#xff1a;即数据恢复点目标&#xff0c;主要指的是业务系统所能容忍的数据丢失量。RTO&#xff08;Recovery Time Objective&#xff09;&#xff1a;即恢复时间目标&…

余震强度预测能力升级,Nature 刊文认证基于神经网络的模型性能优于传统模型

作者&#xff1a;李宝珠 编辑&#xff1a;李玮栋、xixi&#xff0c;三羊 地震的发生涉及诸多变量&#xff0c;「预测」存在挑战&#xff0c;但余震发生次数及强度的预测已取得重大进展。 2023 年 12 月 18 日 23 时 59 分&#xff0c;甘肃省临夏州积石山县发生 6.2 级地震&…

DQL-条件查询

1.语法 SELECT 字段列表 FROM 表名 WHERE 条件列表; 2.条件

RDD算子——Action 操作

reduce reduce 和 reduceByKey 有什么区别&#xff1a; reduce 是一个 Action 算子&#xff0c;reduceByKey 是一个转换算子 假设一个 RDD 里面有一万条数据&#xff0c;大部分 Key 是相同的&#xff0c;有十个不同的 Key。 rdd.reduceByKey 生成 10 条数据 而rdd.reduce 生成…

VScode/Xshell连接学校服务器

vscode连学校服务器 1.连接atrust VPN2.Xshell连接服务器2.1创建一个自己的用户 3.xftp传文件4.vscode连接服务器4.1下载remote-ssh4.2连接服务器4.3激活conda环境4.4运行代码 5. pytorch版本不兼容解决方案 1.连接atrust VPN 如果是使用的是校园网&#xff0c;可以不连接 2…

已删除数据恢复,4个简单有效方法分享!

“我前段时间不小心将电脑里重要的几个文件删除了&#xff0c;今天查找这些文件时才发现我的数据都没有了&#xff0c;这可怎么办呢&#xff1f;还有恢复的机会吗&#xff1f;” 很多用户在使用电脑时&#xff0c;会选择直接将重要的文件保存在电脑上&#xff0c;这就不可避免在…

Android 架构 - 模块化

参考文章 谷歌官方指南 一、概念 将大型、复杂问题拆解成一个个小的、简单问题&#xff0c;从而可以做到各个击破。模块化简单讲就是把多功能高耦合的代码逻辑拆散成多个功能单一职责明确的模块。模块指 Android 项目中的 module&#xff0c;通常会包含 Gradle 构建脚本、源代…

TS 36.213 V12.0.0-PDSCH相关过程(1)-收到PDSCH的UE过程

本文的内容主要涉及TS 36.213&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

基础数据结构第九期 堆(数组+STL)

前言 堆是一种重要的数据结构&#xff0c;因此应该熟练掌握。 一、堆的基本概念 堆的基本&#xff1a; 堆的结构实际上是一棵完全二叉树&#xff0c;堆可以分为大根堆和小根堆 大根堆&#xff1a; 小根堆&#xff1a; 堆的储存&#xff1a; 若节点小标为i&#xff0c;则左子…

虚拟机VMware安装Linux

关于安装&#xff0c;安装版本是CentOS 7&#xff0c;选择最小安装即可 第一步&#xff1a;选择创建新的虚拟机 第二步&#xff1a;默认典型&#xff0c;点击下一步 第三步&#xff1a;选择稍后安装操作系统 第四步&#xff1a;选择Linux和版本 第五步&#xff1a;输入虚拟机名…