转载于:https://mp.weixin.qq.com/s/dLSYkBH4wNwq2o2eTuVPAw本节篇幅较长,我们主要围绕以下几点来展开:
作者:jartto
- 什么是服务网格?
- 初识 Istio
- 核心特性
- 流程架构
- 核心模块
- Envoy 进阶
- 方案畅想
什么是服务网格?服务网格(Service Mesh)用来描述组成这些应用程序的微服务网络以及它们之间的交互 。
它是一个用于保证服务间安全、快速、可靠通信的网络代理组件,是随着微服务和云原生应用兴起而诞生的基础设施层 。
它通常以轻量级网络代理的方式同应用部署在一起 。比如 Sidecar 方式,如下图所示:
文章插图
我们对上图做个解释:Service Mesh 设计一般划分为两个模块,控制面和数据面 。对于应用来说,所有流量都会经过数据面进行转发 。
顺利转发的前提:数据面需要知道转发的目标地址,目标地址本身是由一些业务逻辑来决定的(例如服务发现) 。
所以自然而然地,我们可以推断控制面需要负责管理数据面能正常运行所需要的一些配置:
- 需要知道某次请求转发去哪里:服务发现配置 。
- 外部流量进入需要判断是否已经达到服务流量上限:限流配置 。
- 依赖服务返回错误时,需要能够执行相应的熔断逻辑:熔断配置 。
但与 TCP 不同,它是面向应用的,为应用提供了统一的可视化和控制 。
Service Mesh 具有如下优点:
- 屏蔽分布式系统通信的复杂性(负载均衡、服务发现、认证授权、监控追踪、流量控制等等),服务只用关注业务逻辑 。
- 真正的语言无关,服务可以用任何语言编写,只需和 Service Mesh 通信即可 。
- 对应用透明,Service Mesh 组件可以单独升级 。
- Service Mesh 组件以代理模式计算并转发请求,一定程度上会降低通信系统性能,并增加系统资源开销 。
- Service Mesh 组件接管了网络流量,因此服务的整体稳定性依赖于 Service Mesh,同时额外引入的大量 Service Mesh 服务实例的运维和管理也是一个挑战 。
Service Mesh 的需求包括服务发现、负载均衡、故障恢复、度量和监控等 。
Service Mesh 通常还有更复杂的运维需求,比如 A/B 测试、金丝雀发布、速率限制、访问控制和端到端认证 。
Service Mesh 的出现,弥补了 Kubernetes 在微服务的连接、管理和监控方面的短板,为 Kubernetes 提供更好的应用和服务管理 。
文章插图
因此,Service Mesh 的代表 Istio 一经推出,就被认为是可以和 Kubernetes 形成双剑合璧效果的微服务管理的利器,受到了业界的推崇 。
Istio 提供了对整个服务网格的行为洞察和操作控制的能力,以及一个完整的满足微服务应用各种需求的解决方案 。
Istio 主要采用一种一致的方式来保护、连接和监控微服务,降低了管理微服务部署的复杂性 。
初识 IstioIstio 发音「意丝帝欧」,重音在意上 。官方给出的 Istio 的总结,简单明了:
Istio lets you connect, secure, control, and observe services.
连接、安全、控制和观测服务 。文章插图
简单来说,Istio 针对现有的服务网格,提供一种简单的方式将连接、安全、控制和观测的模块,与应用程序或服务隔离开来,从而开发人员可以将更多的精力放在核心的业务逻辑上 。
以下是 Istio 的核心功能:
- HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡 。
- 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制 。
- 可插入的策略层和配置 API,支持访问控制、速率限制和配额 。
- 对出入集群入口和出口中所有流量的自动度量指标、日志记录和追踪 。
- 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信 。
推荐阅读
- 大带宽服务器用途及租用要注意什么?
- 使用 PowerDNS 轻松配置 DNS 名称服务器
- Windows WDS服务安装配置
- 燃料电池是通过什么产生电 微生物燃料电池的应用
- 微信使用的这六款开源代码,你用过哪一个?
- 微服务和API之间的本质区别
- 关于微服务的几点老板关心问题
- 如何同步老婆微信聊天?
- iMac|微软尴尬了!2006年“古董级”iMac也能装Win11:正常运行无压力
- 甲状腺微粒体抗体