最近在了解service mesh相关,从而了解到了Istio。简述一下这两个概念,接下来有时间会继续整理相关技术文档分享。
首先,什么是Service Mesh?
Service Mesh,服务网格,在现在微服务流行的趋势下, 服务越来越多,用术语服务网格来描述组成此类应用程序的微服务网络及其之间的交互的情况再形象不过。随着服务网格的大小和复杂性的增长,它变得越来越难以理解和管理。它的要求可以包括发现,负载平衡,故障恢复,指标和监视。服务网格通常还具有更复杂的操作要求,例如A / B测试,速率限制,访问控制和端到端身份验证等。
什么是Istio?
Istio, 一个开源服务网格平台,它可以控制微服务之间数据的共享方式。其附带的 API 可以将 Istio 集成到任何日志记录平台、遥测或策略系统中。在设计上,Istio 可以在多种环境中运行:企业本地、云托管、Kubernetes容器,或虚拟机上运行的服务等。 Istio 的架构分为数据平面和控制平面两部分。在数据平面中,通过在环境中部署 sidecar 代理,即可为服务添加 Istio 支持。该 sidecar 代理与微服务并存,用于将请求路由给其他代理,或从其他代理那路由请求。这些代理共同构成了一个网格网络,可拦截微服务之间的网络通信。控制平面则负责管理和配置代理来路由流量。此外,控制平面还可配置组件,以实施相关策略并收集遥测数据。
云平台为使用它们的组织提供了很多好处。但是,不可否认的是,采用云技术会对DevOps团队造成压力。开发人员必须使用微服务来构建可移植性,同时运营商正在管理超大型混合和多云部署。 Istio使开发人员可以连接,保护,控制和观察服务。从较高的角度来看,Istio有助于降低这些部署的复杂性,并减轻开发团队的负担。它是一个完全开源的服务网格,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括使它们可以集成到任何日志记录平台,遥测或策略系统中的API。 Istio的多样化功能集使业务能够成功、高效地运行分布式微服务架构,并提供一种统一的方式来保护,连接和监视微服务。
为什么使用Istio?
Istio,以Envoy为基础,将Envoy作为默认的数据平面,同时提供强大的控制平面能力,可以轻松创建带有负载平衡,服务到服务的身份验证,监视等功能的已部署服务网络,而服务代码中的代码更改很少或没有更改。通过在整个环境中部署特殊的sidecar代理来拦截微服务之间的所有网络通信,然后使用其控制平面功能配置和管理Istio,可以为服务添加Istio支持,包括:
- 自动为HTTP,gRPC,WebSocket和TCP流量进行负载平衡。
- 通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制。
- 可插拔的策略层和配置API,支持访问控制,速率限制和配额。群集内所有流量的自动指标,日志和跟踪,包括群集的入口和出口。
- 通过强大的基于身份的身份验证和授权,在群集中进行安全的服务间通信。
Istio专为可扩展性而设计,可满足多种部署需求。它通过拦截和配置网状网络流量来做到这一点,如下图(pic via istio.io)所示:
Service Mesh治理涉及到服务的各个环节,不同节点
来源:oschina
链接:https://my.oschina.net/willchu/blog/4442009