Istio是下一代的微服务,也是服务网格里最火的产品,下面我就全面来详解Istio@mikechen
Istio定义
Istio是服务网格Service Mesh的一种产品实现,是下一代微服务的典型代表。
Istio为微服务应用提供了一个完整的解决方案,可以以统一的方式去检测和管理微服务。
为什么需要Istio
随着服务网格的规模和复杂性不断的增长,它将会变得越来越难以理解和管理,比如:包括服务发现、负载均衡、故障恢复、度量和监控等。
服务网格通常还有更复杂的运维需求,比如 A/B 测试、金丝雀发布、速率限制、访问控制和端到端认证。
Istio 提供了一个完整的满足微服务应用各种需求的解决方案,Istio 解决了开发人员和运维人员所面临的从单体应用向分布式微服务架构转变的挑战。
Istio核心特性
Istio 可以轻松地创建一个已经部署了服务的网络,而服务的代码只需很少更改甚至无需更改,Istio 为可扩展性而设计。
Istio提供了管理流量、实施访问策略、收集数据等功能,而所有这些功能都对业务代码透明,即不需要修改业务代码就能实现。
Istio功能包含如下:
- 流量管理:Istio的基本功能,Istio的流量路由规则使得你可以轻松控制服务之间的流量和API调用;
- 策略控制:应用策略并确保其得到执行,并且资源在消费者之间公平分配;
- 可观测性:通过自动链路追踪、监控和服务的日志,可以全面了解受监视服务如何与其他服务以及Istio组件本身进行交互;
- 安全认证:通过托管的身份验证,授权和服务之间通信的加密自动保护服务。
Istio对比Spring Cloud
产品 | 优势 | 劣势 |
Spring Cloud |
1:提供了完善的服务治理功能 |
1:与Java平台紧密耦合 |
Istio |
1:社区活跃,更加云原生 |
1:新技术,生产环境应用相对较少 |
两种方案各有优劣,可以从以下2点来做决策。
1.人才储备
由于Istio 对K8s是强依赖的,这意味着我们上istio之前,团队里必须有专门从事k8s的人员。
2.切换成本
如果已经将Spring Cloud 大规模应用到生产中了,那么切换成Istio技术栈,成本和时间都是问题。
Spring Cloud以及Spring Cloud Alibaba这套依旧当打之年,Istio代表的非侵入微服务解决方案代表未来。
Istio架构
Istio 就是我们上述提到的 Service Mesh 架构的一种实现,架构如下图所示:
Istio的架构由两部分组成:数据平面和控制平面。
1.数据平面
Istio的数据平面主要包括Envoy代理的扩展版本。 Envoy是一个开源边缘和服务代理,可帮助将网络问题与底层应用程序分离开来。应用程序仅向localhost发送消息或从localhost接收消息,而无需了解网络拓扑。
2.控制平面
控制平面负责管理和配置数据平面中的Envoy代理。
控制平面是一组在专用Kubernetes命名空间中运行的服务(默认情况下)。
在Istio架构中,控制面核心组件是istiod,Istiod负责将高级路由规则和流量控制行为转换为特定于Envoy的配置,并在运行时将其传播到Sidercar。
Istio原理
从根本上讲,Istio的工作原理是以:Sidcar的形式将Envoy的扩展版本作为代理布署到每个微服务中。
服务之间的通信:比如这里的 Service A 访问 Service B会通过代理,代理默认是 :Envoy来进行。
如下图所示:
中间的网络协议支持 HTTP/1.1,HTTP/2,gRPC 或者 TCP,可以说覆盖了主流的通信协议。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》