Envoy不是构建一个服务网格的唯一选择,市面上还有其他的代理如Nginx、Traefik等。我之所以选择Envoy,这个用C++编写的高性能代理,是因为我更喜欢Envoy的轻量、强大的路由,及其提供的可观察性和可扩展性。
FrontEnvoy
在我们的设置中FrontEnvoy是一个边缘代理,我们通常在其中执行TLS终止、身份验证、生成请求头等操作。
Envoy配置主要由以下部分组成:
1、监听器(Listener)
2、路由
3、集群
4、端点
监听器
一个或多个监听器可以在单个Envoy实例中运行。在以上9到36行的代码提到了当前监听器的地址和端口。每个监听器也可以有一个或多个网络过滤器。这些过滤器可以启用路由、tls终止、流量转移等活动。除了envoy.http_connection_manager使用的是内置过滤器之外,Envoy还有其他几个过滤器。
路由
22行到34行代码为过滤器配置了路由规范,同时它也指定了我们所接受请求的域以及路由匹配器。路由匹配器可以根据配置的规则匹配每个请求,并将请求转发到适当的集群。
集群
集群是Envoy将流量路由到的上游服务规范。41行到48行代码定义了“ServiceA”,这是FrontEnvoy要通信的唯一上游。“connect_timeout”是在返回503之前建立与上游服务的连接的时间限制。
通常情况下,有多个“SerivceA”实例,并且Envoy支持多种负载均衡算法来路由流量。在本例中,我们使用了一个简单的循环算法。
结束语:以上就是关于我们为什么使用Envoy的全部内容,更多内容请关注学步园。