Skip to content

Commit

Permalink
修复一些错别字和表述问题
Browse files Browse the repository at this point in the history
  • Loading branch information
haiker2011 committed Mar 13, 2019
1 parent dec7a64 commit 9d447f5
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 14 deletions.
4 changes: 2 additions & 2 deletions concepts-and-principle/service-mesh-architectures.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ category: "evolution"

![服务网格架构示意图](https://ws2.sinaimg.cn/large/0069RVTdly1fuail4d24jj31080rkgr7.jpg)

服务网格中分为**控制平面****数据平面**,当前流行的两款开源的服务网格 Istio 和 Linkerd 实际上都是这种构造,只不过 Istio 的划分更清晰,而且部署更零散,很多组件都被拆分,控制平面中包括 Mixer、Pilot、Citadel,数据平面默认是用Envoy;而 Linkerd 中只分为 Linkerd 做数据平面,namerd 作为控制平面。
服务网格中分为**控制平面****数据平面**,当前流行的两款开源的服务网格 Istio 和 Linkerd 实际上都是这种架构,只不过 Istio 的划分更清晰,而且部署更零散,很多组件都被拆分,控制平面中包括 Mixer、Pilot、Citadel,数据平面默认是用 Envoy;而 Linkerd 中只分为 Linkerd 做数据平面,namerd 作为控制平面。

## 控制平面

Expand All @@ -23,7 +23,7 @@ category: "evolution"
- 不直接解析数据包
- 与控制平面中的代理通信,下发策略和配置
- 负责网络行为的可视化
- 通常提供API或者命令行工具可用于配置版本化管理,便于持续集成和部署
- 通常提供 API 或者命令行工具可用于配置版本化管理,便于持续集成和部署

## 数据平面

Expand Down
6 changes: 3 additions & 3 deletions concepts-and-principle/what-is-service-mesh.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Service mesh 又译作 “服务网格”,作为服务间通信的基础设施

## 理解服务网格

如果用一句话来解释什么是服务网格,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用程序来说一般无须关心 TCP/IP 这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用服务网格也就无须关系服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如 Spring Cloud、OSS,现在只要交给服务网格就可以了。
如果用一句话来解释什么是服务网格,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用程序来说一般无须关心 TCP/IP 这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用服务网格也就无须关心服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如 Spring Cloud、OSS,现在只要交给服务网格就可以了。

[Phil Calçado](http://philcalcado.com/) 在他的这篇博客 [Pattern: Service Mesh](http://philcalcado.com/2017/08/03/pattern_service_mesh.html) 中详细解释了服务网格的来龙去脉:

Expand All @@ -54,7 +54,7 @@ Service mesh 又译作 “服务网格”,作为服务间通信的基础设施

下面以 Istio 为例讲解服务网格如何在 Kubernetes 中工作。

1. Istio 将服务请求路由到目的地址,根据中的参数判断是到生产环境、测试环境还是 staging 环境中的服务(服务可能同时部署在这三个环境中),是路由到本地环境还是公有云环境?所有的这些路由信息可以动态配置,可以是全局配置也可以为某些服务单独配置。
1. Istio 将服务请求路由到目的地址,根据其中的参数判断是到生产环境、测试环境还是 staging 环境中的服务(服务可能同时部署在这三个环境中),是路由到本地环境还是公有云环境?所有的这些路由信息可以动态配置,可以是全局配置也可以为某些服务单独配置。
2. 当 Istio 确认了目的地址后,将流量发送到相应服务发现端点,在 Kubernetes 中是 service,然后 service 会将服务转发给后端的实例。
3. Istio 根据它观测到最近请求的延迟时间,选择出所有应用程序的实例中响应最快的实例。
4. Istio 将请求发送给该实例,同时记录响应类型和延迟数据。
Expand All @@ -67,7 +67,7 @@ Service mesh 又译作 “服务网格”,作为服务间通信的基础设施

服务网格并没有给我们带来新功能,它是用于解决其他工具已经解决过的问题,只不过这次是在云原生的 Kubernetes 环境下的实现。

在传统的 MVC 三层 Web 应用程序架构下,服务之间的通讯并不复杂,在应用程序内部自己管理即可,但是在现今的复杂的大型网站情况下,单体应用被分解为众多的微服务,服务之间的依赖和通讯十分复杂,出现了 twitter 开发的 [Finagle](https://twitter.github.io/finagle/)、Netflix 开发的 [Hystrix](https://github.com/Netflix/Hystrix) 和 Google 的 Stubby 这样的 “胖客户端” 库,这些就是早期的服务网格,但是它们都近适用于特定的环境和特定的开发语言,并不能作为平台级的服务网格支持。
在传统的 MVC 三层 Web 应用程序架构下,服务之间的通讯并不复杂,在应用程序内部自己管理即可,但是在现今的复杂的大型网站情况下,单体应用被分解为众多的微服务,服务之间的依赖和通讯十分复杂,出现了 twitter 开发的 [Finagle](https://twitter.github.io/finagle/)、Netflix 开发的 [Hystrix](https://github.com/Netflix/Hystrix) 和 Google 的 Stubby 这样的 “胖客户端” 库,这些就是早期的服务网格,但是它们都仅适用于特定的环境和特定的开发语言,并不能作为平台级的服务网格支持。

在云原生架构下,容器的使用给予了异构应用程序的更多可行性,Kubernetes 增强的应用的横向扩容能力,用户可以快速的编排出复杂环境、复杂依赖关系的应用程序,同时开发者又无须过分关心应用程序的监控、扩展性、服务发现和分布式追踪这些繁琐的事情而专注于程序开发,赋予开发者更多的创造性。

Expand Down
4 changes: 2 additions & 2 deletions data-plane/envoy-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ Envoy 提供了如下的 API:

## Envoy xDS 协议

Envoy xDS 为 Istio 控制平面与控制平面通信的基本协议,只要代理支持该协议表达形式就可以创建自己 Sidecar 来替换 Envoy。这一章中将带大家了解 Envoy xDS。
Envoy xDS 为 Istio 控制平面与控制平面通信的基本协议,只要代理支持该协议表达形式就可以创建自己的 Sidecar 来替换 Envoy。这一章中将带大家了解 Envoy xDS。

Envoy 是 Istio Service Mesh 中默认的 Sidecar,Istio 在 Enovy 的基础上按照 Envoy 的 xDS 协议扩展了其控制平面,在讲到 Envoy xDS 协议之前还需要我们先熟悉下 Envoy 的基本术语。下面列举了 Envoy 里的基本术语及其数据结构解析,关于 Envoy 的详细介绍请参考 [Envoy 官方文档](http://www.servicemesher.com/envoy/),至于 Envoy 在 Service Mesh(不仅限于 Istio) 中是如何作为转发代理工作的请参考网易云刘超的这篇[深入解读 Service Mesh 背后的技术细节 ](https://www.cnblogs.com/163yun/p/8962278.html)以及[理解 Istio Service Mesh 中 Envoy 代理 Sidecar 注入及流量劫持](https://jimmysong.io/posts/envoy-sidecar-injection-in-istio-service-mesh-deep-dive/),本文引用其中的一些观点,详细内容不再赘述。

![Envoy proxy 架构图](https://ws2.sinaimg.cn/large/006tNc79ly1fz69bsaqk7j314k0tsq90.jpg)

## 关于 xDS 的版本

有一点需要大家注意,就是 Envoy 的 API 有 v1 和 v2 两个版本,从 Envoy 1.5.0 起 v2 API 就已经生产就绪了,为了能够让用户顺利的向 v2 版本的额 API 过度,Envoy 启动的时候设置了一个 `--v2-config-only` 的标志,Enovy 不同版本对 v1/v2 API 的支持详情请参考 [Envoy v1 配置废弃时间表](https://groups.google.com/forum/#!topic/envoy-announce/Lb1QZcSclGQ)
有一点需要大家注意,就是 Envoy 的 API 有 v1 和 v2 两个版本,从 Envoy 1.5.0 起 v2 API 就已经生产就绪了,为了能够让用户顺利的向 v2 版本的 API 过度,Envoy 启动的时候设置了一个 `--v2-config-only` 的标志,Enovy 不同版本对 v1/v2 API 的支持详情请参考 [Envoy v1 配置废弃时间表](https://groups.google.com/forum/#!topic/envoy-announce/Lb1QZcSclGQ)

Envoy 的作者 Matt Klein 在 [Service Mesh 中的通用数据平面 API 设计](http://www.servicemesher.com/blog/the-universal-data-plane-api/)这篇文章中说明了 Envoy API v1 的历史及其缺点,还有 v2 的引入。v2 API 是 v1 的演进,而不是革命,它是 v1 功能的超集。

Expand Down
10 changes: 5 additions & 5 deletions data-plane/envoy-terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ category: "original"

**Host**:能够进行网络通信的实体(在手机或服务器等上的应用程序)。在 Envoy 中主机是指逻辑网络应用程序。只要每台主机都可以独立寻址,一块物理硬件上就运行多个主机。

**Downstream**:下游(downstream)主机连接到 Envoy,发送请求并或获得响应
**Downstream**:下游(downstream)主机连接到 Envoy,发送请求并获得响应

**Upstream**:上游(upstream)主机获取来自 Envoy 的链接请求和响应
**Upstream**:上游(upstream)主机获取来自 Envoy 的连接接请求和响应

**Cluster**: 集群(cluster)是 Envoy 连接到的一组逻辑上相似的上游主机。Envoy 通过[服务发现](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/service_discovery#arch-overview-service-discovery)发现集群中的成员。Envoy 可以通过[主动运行状况检查](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/health_checking#arch-overview-health-checking)来确定集群成员的健康状况。Envoy 如何将请求路由到集群成员由[负载均衡策略](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/load_balancing#arch-overview-load-balancing)确定。

**Mesh**:一组互相协调以提供一致网络拓扑的主机。Envoy mesh 是指一组 Envoy 代理,它们构成了由多种不同服务和应用程序平台组成的分布式系统的消息传递基础。

**运行时配置**:与 Envoy 一起部署的带外实时配置系统。可以在无需重启 Envoy 或 更改 Envoy 主配置的情况下,通过更改设置来影响操作。
**运行时配置**:与 Envoy 一起部署的带外实时配置系统。可以在无需重启 Envoy 或更改 Envoy 主配置的情况下,通过更改设置来影响操作。

**Listener**: 监听器(listener)是可以由下游客户端连接的命名网络位置(例如,端口、unix域套接字等)。Envoy 公开一个或多个下游主机连接的侦听器。一般是每台主机运行一个 Envoy,使用单进程运行,但是每个进程中可以启动任意数量的 Listener(监听器),目前只监听 TCP,每个监听器都独立配置一定数量的(L3/L4)网络过滤器。Listenter 也可以通过 Listener Discovery Service(**LDS**)动态获取。
**Listener**: 监听器(listener)是可以由下游客户端连接的命名网络位置(例如,端口、unix域套接字等)。Envoy 公开一个或多个下游主机连接的监听器。一般是每台主机运行一个 Envoy,使用单进程运行,但是每个进程中可以启动任意数量的 Listener(监听器),目前只监听 TCP,每个监听器都独立配置一定数量的(L3/L4)网络过滤器。Listenter 也可以通过 Listener Discovery Service(**LDS**)动态获取。

**Listener filter**:Listener 使用 listener filter(监听器过滤器)来操作链接的元数据。它的作用是在不更改 Envoy 的核心功能的情况下添加更多的集成功能。Listener filter 的 API 相对简单,因为这些过滤器最终是在新接受的套接字上运行。在链中可以互相衔接以支持更复杂的场景,例如调用速率限制。Envoy 已经包含了多个监听器过滤器。
**Listener filter**:Listener 使用 listener filter(监听器过滤器)来操作连接的元数据。它的作用是在不更改 Envoy 的核心功能的情况下添加更多的集成功能。Listener filter 的 API 相对简单,因为这些过滤器最终是在新接受的套接字上运行。在链中可以互相衔接以支持更复杂的场景,例如调用速率限制。Envoy 已经包含了多个监听器过滤器。

**Http Route Table**:HTTP 的路由规则,例如请求的域名,Path 符合什么规则,转发给哪个 Cluster。

Expand Down
2 changes: 1 addition & 1 deletion data-plane/istio-sidecar-proxy-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ details-v1-876bf485f-sx7df.default SYNCED SYNCED SYNC
...
```

[istioctl](https://istio.io/zh/docs/reference/commands/istioctl/) 这个命令行工具就像 [kubectl](https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html) 一样有很多神器的魔法,通过它可以高效的管理 Istio 和 debug。
[istioctl](https://istio.io/zh/docs/reference/commands/istioctl/) 这个命令行工具就像 [kubectl](https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html) 一样有很多神奇的魔法,通过它可以高效的管理 Istio 和 debug。

## 参考

Expand Down
2 changes: 1 addition & 1 deletion traffic-management/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ category: "original"

# 流量管理

这一章节将大家了解 Istio 流量管理中的各种概念的含义及表示方法。
这一章节将带大家了解 Istio 流量管理中的各种概念的含义及表示方法。

流量管理是 Isito 中的最基础功能,使用 Istio 的流量管理模型,本质上是将流量与基础设施扩容解耦,让运维人员可以通过 Pilot 指定流量遵循什么规则,而不是指定哪些 pod/VM 应该接收流量——Pilot 和智能 Envoy 代理会帮我们搞定。

Expand Down

0 comments on commit 9d447f5

Please sign in to comment.