目前 Envoy 包括支持自动重试、断路、通过外部速率限制服务限制全局速率、请求隐藏和异常值检测 。未来计划为 Request Racing 提供支持 。
④前端/边缘系统代理支持
虽然 Envoy 主要是为服务通信系统而设计的,但对前端/边缘系统也是很有用的,如:可观测性、管理、相同的服务发现和负载平衡算法等 。
Envoy 包含足够的功能,使其可用作大多数 Web 应用服务用例的边缘代理 。这包括作为 TLS 的终点、HTTP/1.1 和 HTTP/2 支持,以及 HTTP L7 路由 。
⑤最好的观察统计能力
Envoy 的首要目标是使网络透明 。但是在网络级别和应用程序级都无法避免的容易出现问题 。
Envoy 包含了对所有子系统的强有力的统计支持 。statsd 和其他兼容的数据提供程序是当前支持的统计接收器,插入不同的统计接收器也并不困难 。
Envoy 可以通过管理端口查看统计信息,还支持通过第三方供应商进行分布式追踪 。
方案畅想应用上面的原理,我们可以有很多具体的方案应用于日常开发 。
方案一:应用 Istio 改造微服务
模仿在线书店的一个分类,显示一本书的信息 。页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论 。
应用的端到端架构:Bookinfo 应用中的几个微服务是由不同的语言编写的 。
这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 reviews 服务具有多个版本 。
文章插图
用 Istio 改造后架构如下:要在 Istio 中运行这一应用,无需对应用自身做出任何改变 。我们只需要把 Envoy Sidecar 注入到每个服务之中 。
最终的部署结果将如下图所示:
文章插图
所有的微服务都和 Envoy Sidecar 集成在一起,被集成服务所有的出入流量都被 Sidecar 所劫持 。
这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能 。
方案二:用 Istio 改造 CI/CD 流程
文章插图
对上述流程图简单解释一下:
- 通过 Docker 对代码进行容器化处理 。
- 通过 Gitlab 托管代码 。
- Jenkins 监听 Gitlab 下的代码,触发自动构建,并执行 Kustomize 文件 。
- Kustomize 通过配置文件,设置了 Istio 的配置(染色识别、流量分发),并启动 K8s 部署应用 。
- 最终我们通过 Rancher 来对多容器进行界面化管理 。
- 打开浏览器进行访问 。
它有什么意义呢?
- 首先,当然是环境隔离了,研发每人一个容器开发,互不干扰 。
- 其次,我们可以做很多小流量、灰度发布等事情 。
- 自动化部署,一站式的流程体验 。
- Docker 边学边用
- 一文了解 Kubernetes
推荐阅读
- 大带宽服务器用途及租用要注意什么?
- 使用 PowerDNS 轻松配置 DNS 名称服务器
- Windows WDS服务安装配置
- 燃料电池是通过什么产生电 微生物燃料电池的应用
- 微信使用的这六款开源代码,你用过哪一个?
- 微服务和API之间的本质区别
- 关于微服务的几点老板关心问题
- 如何同步老婆微信聊天?
- iMac|微软尴尬了!2006年“古董级”iMac也能装Win11:正常运行无压力
- 甲状腺微粒体抗体