Linkerd 2:5 分种厘清 Service Mesh 相关术语

简介: Linkerd 2:5 分种厘清 Service Mesh 相关术语

API Gateway(API 网关)



API gateway 位于应用程序的前面,旨在解决身份验证和授权、速率限制以及为外部消费者提供公共访问点等业务问题。相比之下,service mesh 专注于提供应用程序组件之间的操作(而非业务)逻辑。


Cluster(集群)



在云原生环境中,cluster 是一组物理或虚拟机器,它们构成了容器(container)编排器(如 Kubernetes)可以运行的硬件池。集群中的每台机器通常被称为一个 nodeclusternode 通常是统一的、可互换的和互连的。


Container(容器)



Container 是应用程序及其依赖项的轻量级包装,旨在由主机操作系统 (OS) 以隔离方式运行,并严格限制资源消耗和对操作系统的访问。从这个意义上说,容器是一个原子可执行“单元”,可以由操作系统运行,无需特定于应用程序的设置或配置。

service mesh 环境中,containerDocker 推广为虚拟机 (VM) 的轻量级替代品, 虚拟机 (VM) 具有相似的特征,但重量要大得多。反过来,container 的兴起又催生了 Kubernetescontainer 编排器, 它允许应用程序在打包为 container 时自动跨机器池(称为 cluster)进行调度。 Kubernetes 的兴起催生了 sidecar 部署模型, 它允许像 Linkerd 这样的 service mesh 以与应用程序解耦的方式提供其功能, 并且不会给运营商带来严重的运营成本。


Control Plane(控制平面)



Service Meshcontrol plane 提供 data plane 运行所需的命令和控制信号。 control plane 控制 data plane 并提供 operator 用来配置、监控和操作 meshUIAPI


Data Plane(数据平面)



Service Meshdata plane 包括其 sidecar proxy 的部署, 这些代理拦截 mesh 内的应用程序流量。data plane 负责收集指标、观测流量和应用策略。


Distributed tracing(分布式追踪)



在基于微服务的系统中,来自客户端的单个请求通常会触发跨多个服务的一系列请求。 Distributed tracing 是一种 tracing 的实践,当这些请求在分布式系统中移动时, 出于性能监视或调试的原因,跟踪这些请求。它通常是通过修改服务以发出跟踪信息或“跨度(span)”,并将它们聚合到中央存储中来实现的。


Egress(出口)



Kubernetes 集群的上下文中,egress 是指离开集群的流量。与 ingress 流量不同,没有明确的 Kubernetes 出口资源,默认情况下,egress 流量只是退出集群。当需要控制和监控 Kubernetesegress 流量时,它通常在 networking / CNI 层实现, 或者通过添加显式 egress proxy 来实现。


Enterprise Service Bus(ESB 企业服务总线)



ESB 是一种工具和架构模式,它在很大程度上早于现代微服务架构。 ESB 用于管理面向服务架构 (SOA) 中的通信, 处理从应用程序间通信、数据转换、消息路由和消息队列功能的所有内容。在现代微服务应用程序中,像 Linkerd 这样的 service mesh 取代了对 ESB 的大部分需求, 并提供了改进的关注点分离和减少 SPOF


Golden Metrics(黄金指标)



Golden metricsGolden signals 是应用程序运行状况的核心指标。黄金指标集通常定义为延迟(latency)、流量(traffic volume)、 错误率(error rate)和饱和度(saturation)。Linkerd 的黄金指标忽略了饱和度。


Ingress(入口)



Ingress 是在 Kubernetes cluster 中运行并处理从集群外源进入集群的流量的特定应用程序。此流量称为入口(或偶尔为“北/南”流量)。与通常由 service mesh 中介的集群内流量相比, ingress 流量具有一组特定的关注点,因为它通常来自客户、第三方或其他非应用程序来源。API gateway 通常用作入口。


Init Container(初始化容器)



Init Container 是在 pod 生命周期开始时运行的容器,在应用程序容器启动之前。 init 容器的典型用例包括重写网络规则;为应用程序收集 secrets;并从网络位置复制文件。例如,Linkerdinit 容器更新网络规则以通过 Linkerd proxy container 引导 pod 的所有 TCP 流量。 init 容器在应用程序容器启动之前终止。


Latency(延迟)



Latency 是指应用程序做某事所花费的时间(例如,处理请求、填充数据等)。在 service mesh 术语中,这是在响应级别上度量的,即通过对应用程序响应请求所花费的时间进行计时。 Latency 的典型特征是由分布的几个百分比来表示, 通常包括 p50(或中位数)、p95(或第 95 个百分比)、p99(或第 99 个百分比),等等。


Linkerd



Linkerd 是第一个 service mesh 和定义术语 “service mesh” 本身的项目。 Linkerd2016 年首次发布,旨在成为 Kubernetes 生态中最快的、最轻量级的服务网格。 Linkerd 是一个云原生计算基金会 (CNCF) 毕业项目。


Load balancing(负载均衡)



Load balancing 是在多个等效端点之间分配工作的行为。与许多系统一样,Kubernetes 在连接级别提供负载平衡。像 Linkerd 这样的 service mesh 通过在请求级别执行负载平衡来改进这一点,这使得它可以考虑各个端点的性能等因素。

请求级别的负载均衡还允许 Linkerd 有效地为使用 gRPC(以及更普遍的 HTTP/2)的系统负载均衡请求, 这些系统通过单个连接多路复用请求—Kubernetes 本身无法有效地对这些系统进行负载均衡,因为通常只有一个曾经建立的连接。


Load balancing 算法决定哪个端点将为给定的请求提供服务。最常见的是 “round-robin(循环)”,它只是在所有端点上进行迭代。更高级的平衡算法包括 “least loaded(最少负载)”,它根据每个端点的未完成请求数分配负载。 Linkerd 本身使用称为 EWMA(exponentially-weighted moving average 指数加权移动平均) 的复杂延迟感知负载平衡算法,根据端点延迟分配负载,同时响应各个端点延迟配置文件的快速变化。


mTLS(双向 TLS)



Mutual TLS (mTLS) 是一种对两个端点之间的连接进行身份验证和加密的方法。 Mutual TLS 只是标准的传输层安全 (TLS) 协议,附加限制是必须验证连接双方的身份。(例如,在 Web 浏览器中使用 TLS 通常只验证服务器的身份,而不是客户端。)

service mesh 上下文中,mTLS 是验证连接任一端的服务身份并保持通信机密的基本机制。这种身份验证是策略实施的基础。


Multi-cluster(多集群)



Kubernetes 的上下文中,multi-cluster 通常是指 “跨” 多个 Kubernetes 集群运行应用程序。 Linkerdmulti-cluster 支持提供跨集群的无缝和安全通信, 以一种即使在公共 Internet 上也是安全的方式,并且对应用程序本身完全透明。


Observability(可观测性)



Observability 是从系统生成的数据中了解系统运行状况和性能的能力。在 service mesh 的上下文中,可观测性通常是指 service mesh 可以报告的有关系统的数据。这包括 "黄金指标"、依赖关系的服务拓扑图、流量采样等。


Reliability(可靠性)



Reliability 是衡量系统对故障的响应程度的系统属性。系统越可靠,它就越能更好地处理出现故障或降级的单个组件。对于多服务或微服务应用程序,service mesh 可用于通过将重试和超时等技术 应用于跨服务调用、以智能方式进行负载平衡、 在出现错误时转移流量等来提高可靠性。



Service mesh(服务网格)



Service mesh 是一种工具,通过在平台层而不是应用程序层插入这些功能, 为应用程序添加可观测性安全性可靠性功能。 Service mesh 是通过添加 sidecar 代理来实现的,这些代理可以拦截应用程序之间的所有流量。生成的代理集构成了服务网格数据平面,并由服务网格控制平面进行管理。代理汇集了服务之间的所有通信,并且是引入 service mesh 功能的载体。


Sidecar Proxy(边车代理)



Sidecar Proxy 是与 mesh 中的应用程序一起部署的代理。(在 Kubernetes 中,作为应用程序 pod 中的容器。)sidecar proxy 拦截进出应用程序的网络调用, 并负责实现任何控制平面的逻辑或规则。sidecar proxy 共同构成了服务网格的数据平面Linkerd 使用一个名为 Linkerd2-proxy 的基于 Rustmicro-proxy,该代理专为 service mesh 用例而设计。 Linkerd2-proxyEnvoyNGINX 等通用代理更轻巧且更易于操作。


Success rate(成功率)



Success rate 是指我们的应用程序成功响应请求的百分比。例如,对于 HTTP 流量,这被衡量为 2xx4xx 响应占总响应的比例。(请注意,在这种情况下,4xx 被认为是成功的响应—应用程序执行了它的工作—而 5xx 响应被认为是不成功的——应用程序未能响应请求)。高成功率表明应用程序运行正常。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Linux
centos7 升级qemu-kvm版本
centos7 手动升级qemu-kvm版本
2815 0
|
敏捷开发 监控 数据可视化
哪些任务管理工具能提升团队协作效率?2024年最佳进度管理工具推荐
随着团队合作和项目管理的数字化转型,选择合适的任务进度管理工具成为提高团队效率的关键。本文推荐5款适合团队使用、功能各异的任务管理工具:板栗看板、Airtable、ZenHub、Proofhub 和 Wrike,旨在帮助团队根据具体需求挑选最合适的软件。这些工具不仅支持任务的高效管理和追踪,还促进了团队成员间的沟通与协作,尤其适用于跨地区协作、远程办公及项目繁杂的环境。
 哪些任务管理工具能提升团队协作效率?2024年最佳进度管理工具推荐
|
9月前
|
数据采集 人工智能 API
生物医药蛋白分子数据采集:支撑大模型训练的技术实践分享
作为生物信息学领域的数据工程师,近期在为蛋白质相互作用预测AI大模型构建训练集时,我面临着从PDB、UniProt等学术数据库获取高质量三维结构、序列及功能注释数据的核心挑战。通过综合运用反爬对抗技术,成功突破了数据库的速率限制、验证码验证等反爬机制,将数据采集效率提升4倍,为蛋白质-配体结合预测模型训练提供了包含10万+条有效数据的基础数据集,提高了该模型预测的准确性。
322 1
|
机器学习/深度学习 算法 自动驾驶
深度学习之分布式智能体学习
基于深度学习的分布式智能体学习是一种针对多智能体系统的机器学习方法,旨在通过多个智能体协作、分布式决策和学习来解决复杂任务。这种方法特别适用于具有大规模数据、分散计算资源、或需要智能体彼此交互的应用场景。
831 4
|
存储 数据处理 数据中心
1U和2U服务器应如何正确选择?各有什么优缺点?
标准机架式服务器以U为高度单位,1U和2U服务器因高度差异影响其内部空间和扩展能力。1U服务器体积小巧、性价比高但扩展性受限;2U服务器扩展性强、散热好、稳定性高,但托管费用较高。选择时需根据具体需求权衡。
493 6
|
Kubernetes 安全 容器
关于K8s,不错的开源工具
【10月更文挑战第12天】
261 7
|
安全 应用服务中间件 网络安全
Kali测试:散列密码破解(二)
Kali渗透测试:散列密码破解(二)
258 0
|
人工智能
思维链 llm
【8月更文挑战第5】
566 3
在FlashFXP中设置数据传输模式为PORT(主动模式)的两种方法
在FlashFXP中设置数据传输模式为PORT(主动模式)的两种方法
|
开发者 C# Windows
WPF布局大揭秘:掌握布局技巧,轻松创建响应式用户界面,让你的应用程序更上一层楼!
【8月更文挑战第31天】在现代软件开发中,响应式用户界面至关重要。WPF(Windows Presentation Foundation)作为.NET框架的一部分,提供了丰富的布局控件和机制,便于创建可自动调整的UI。本文介绍WPF布局的基础概念与实现方法,包括`StackPanel`、`DockPanel`、`Grid`等控件的使用,并通过示例代码展示如何构建响应式布局。了解这些技巧有助于开发者优化用户体验,适应不同设备和屏幕尺寸。
560 0