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. POJ3625Building Roads

    Building Roads Description Farmer John had just acquired several new farms! He wants to connect the ...

  2. java的运行时数据区域

    最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 1.程 ...

  3. php实现实例化类后自动进行错误以及异常处理(简易版)

    <?php class App { public function __construct() { /* * ini_set 设置配置项 * display_errors 是否在页面显示错误信息 ...

  4. 搭建http文件服务器 - python3使用http.server搭建http文件服务器

    适用场景 只要有python3就可以,windows系统cmd窗口直接敲命令,Linux系统,直接敲命令 step-1 cd cd 到需要搭建服务器的目录 step-2 http.server pyt ...

  5. MySQL之索引复合索引有效性

    首先这里建立一张数据表,并建立符合索引( index_A,index_B,index_C) CREATE TABLE `test_index_sequence` ( `Id` int(11) NOT ...

  6. linux,apache,php,mysql常用的查看版本信息的方法

    1. 查看linux的内核版本,系统信息,常用的有三种办法:   uname -a:   more /etc/issue;    cat /proc/version; 2. 查看apache的版本信息 ...

  7. AT2368-[AGC013B]Hamiltonish Path【构造】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2368 题目大意 给出 \(n\) 个点 \(m\) 条边的一张无向图,然后求一条路径满足 路径长度不小于二. ...

  8. VUE自学日志02-应用与组件实例

    准备好了吗? 我们刚才简单介绍了 Vue 核心最基本的功能--本教程的其余部分将更加详细地涵盖这些功能以及其它高阶功能,所以请务必读完整个教程! 应用 & 组件实例 创建一个应用实例创建一个应 ...

  9. centos7有关于防火墙的命令

    查看防火墙状态 firewall-cmd --state 开启防火墙 systemctl start firewalld.service 关闭防火墙 systemctl stop firewalld. ...

  10. C# 类拓展方法

    C#类拓展方法 要求: 扩展方法类必须为静态类: 拓展方法必须为静态方法,参数为this+需拓展类对象: 多个类拓展方法可以写在一个拓展类中: public class TestExtension { ...