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 流量只是退出集群。

当需要控制和监控 Kubernetes egress 流量时,它通常在 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 响应被认为是不成功的——应用程序未能响应请求)。

高成功率表明应用程序运行正常。

Linkerd 2:5 分种厘清 Service Mesh 相关术语的更多相关文章

  1. 干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?

    干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的? https://www.sohu.com/a/235575064_99940985 干货 | 蚂蚁金服是如何实现 ...

  2. Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh

    架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...

  3. Qcon2017实录|Service Mesh:下一代微服务

    https://zhuanlan.zhihu.com/p/30292372 数人云11月Meetup报名开启,看中西方大神如何论道云原生与微服务!本文作者敖小剑老师将在本次Meetup上继续分享Ser ...

  4. Service Mesh(服务网格)

    Service Mesh(服务网格) 什么是Service Mesh(服务网格)Service mesh 又译作 "服务网格",作为服务间通信的基础设施层.Buoyant 公司的 ...

  5. Service Mesh 介绍

    传统单体应用的局限性说明 传统单体应用代码体量庞大繁杂,不利于理解,也不利于团队合作开发,更不利于频繁更新和部署,增加服务宕机的风险. 耦合性高,功能代码块之前很容易造成强依赖,只要其中任何一个代码逻 ...

  6. Service Mesh——微服务中的流量管理中间件

    Service Mesh--微服务中的流量管理中间件 摘自-https://zhuanlan.zhihu.com/p/28794062 Service mesh 与 Cloud Native Kube ...

  7. 服务治理演进剖析 & Service Mesh、 xDS核心原理梳理

    基于XDS协议实现控制面板与数据面板通信分享 基于这段时间在同程艺龙基础架构部的蹲坑,聊一聊微服务治理的核心难点.历史演进.最新动态, 以上内容属自我思考,不代表同程艺龙技术水准.如理解有偏差.理解不 ...

  8. JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文带你厘清个中曲直,给你个选择SpringDataJPA的理由!

    序言 Spring Data JPA作为Spring Data中对于关系型数据库支持的一种框架技术,属于ORM的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度. 本文档隶属于< ...

  9. service mesh,linkerd,sidecar,apigateway

    对于大规模部署微服务(微服务数>1000).内部服务异构程度高(交互协议/开发语言类型>5)的场景,使用service mesh是合适的.但是,可能大部分开发者面临的微服务和内部架构异构复 ...

随机推荐

  1. 解决国内npm安装太慢的方法,又不能FQ情况下,使用淘宝镜像教程

    安装npm及cnpm(Windows) [工具官网] 因为国内上网下载组件太慢,淘宝给我们提供了镜像源,,但是我不是建意FQ上网.条件有限的可以使用下面的方法安装CNPM,原文转自网络,正好自己需要也 ...

  2. Java实现导出Excel

    项目中实现的代码: 一.//controller @RequestMapping(value = "/exportAccountManager") public void expo ...

  3. 自己实现一个Controller——终极型

    经过前两篇的学习与实操,也大致掌握了一个k8s资源的Controller写法了,如有不熟,可回顾 自己实现一个Controller--标准型 自己实现一个Controller--精简型 但是目前也只能 ...

  4. 【OWASP TOP10】2021年常见web安全漏洞TOP10排行

    [2021]常见web安全漏洞TOP10排行 应用程序安全风险 攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务.每种路径方法都代表了一种风险,这些风险都值得关注. 什么是 OWASP TO ...

  5. Java基础系列(22)- For循环详解

    For循环 虽然所有循环结构都可以用while和dowhile表示,但是Java提供了另外一种语句for循环,使一些循环结构变动更加简单 for循环语句是支持迭代的一种通用结构,是最有效.最灵活的循环 ...

  6. Nginx系列(7)- Nginx安装 | Linux

    step-1 安装gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: [root@localhost ~]# yum install ...

  7. Mysql Navicate 基础操作与SQL语句 版本5.7.29

    SQL数据的增删改查:此部分所有SQL语句在navicat中与mysql命令行执行效果一样,只是mysql服务端在命令行执行,而navicat只是在客户端的图形化打开操作. 一.进入数据库 .连接数据 ...

  8. 检验appium环境是否正常:使用appium自动给手机安装app(注意:如果已存在该app,再执行会将原来的卸载再重装,需谨慎)

    (注意:如果已存在该app,再执行会将原来的卸载再重装.泪的教训,我的微信被卸载重装了o(╥﹏╥)o,自动安装app这个步骤需谨慎操作) hi,前面几篇已经讲了appium环境的搭建.设备的连接, 那 ...

  9. Xamarin Android使用自签名证书

    背景 项目中后台web服务部署成https服务时,需要使用SSL证书,如果我们不使用公共的CA时,怎么办? 不仅如此,因为是小项目,App应用主要是小范围使用,此时只有IP地址,根本没有域名,怎么办? ...

  10. npm install失败或者进度卡住解决办法 以及 nrm的使用

    今天在使用npm install安装url-loader时,遇到下载进度条停止问题 因为已经提前更换了 淘宝的镜像,应该不是网络问题,通过 npm config set loglevel info 显 ...