envoy 学习笔记(一)之 架构

一、背景

     大型系统微服务化后,会被拆解成无数微服务,大量的微服务增加了服务管理的难度,因此出现了服务治理,包括:分布式追踪、服务发现与负载均衡、运行时指标监控等等。为了达成这个目标,微服务的职责分为两部分:

  • 完成自身业务做事情
  • 配合服务治理做事情

     根据架构的演进,可以看到服务治理方便演进如下:

 

 

 可以看到以上演化过程,到了第三代,微服务专注于业务,不需要关心服务治理的相关事情,服务治理完全交由sidecar 来完成,当让这种模式设计是用于云上的,每个服务旁边都会有一个sidecar。

       本章节学习 sidecar 典型产品 envoy,虽然是被设计是在云上使用的,但是还是可以通过虚拟机来进行学习。

二、envoy 架构

具体可参考: https://jimmysong.io/blog/service-mesh-the-microservices-in-post-kubernetes-era/#envoy

其架构图:

 

 从图中可以得到如下信息:

(1) 请求发送会被 envoy 拦截 (实际上不是 envoy拦截,而是有另外程序更改 iptables ,将 host 上的 进入流量转发给了 envoy,交由它处理 );

(2) envoy 中的 listener(监听的端口,(1) 中的进入流量就是被转发到给端口),有多个 filter ,多个 filter 可以处理进入流量,若想自定义增加一种处理流量的方式,可以自定义filter,放到 listene 的 filter chain 中,达到扩展的目的;

(3) envoy 使用了 xDS 协议,xDS 协议指可以有专门的系列 Discovery Service服务(只要符合 xDS API 要求即可),目前有图中的:

  • Route Discovery Service :路由发现服务,配置路由信息
  • Cluster Discovery Service:集群发现服务,配置集群
  • Endpoint Discovery Service:终端发现服务,配置集群中的实例(增删)
  • Listener Discovery Service:监听器发现服务,配置 envoy 的监听器 ,envoy 可以有多个 listener;
  • Health Discovery Service:健康检查服务
  • 。。。。。。。

(4) xDS 的某个服务没有提供的话,也可以直接在 envoy的配置文件中进行配置;

posted @ 2021-01-26 14:36  夏之夜  阅读(1228)  评论(0编辑  收藏  举报