用 Istio 解释微服务和服务网格
01/ 微服务架构的好处
应用程序采用微服务架构有很多好处,诸如:
-
应用程序中的各个微服务可以通过不同的技术堆栈进行开发和部署。 -
每个微服务都可以独立优化、部署或扩展。 -
更好的故障处理和错误检测。
02/ 微服务架构的组件
容器化(通过Docker等平台)——通过将服务分解为多个进程来有效管理和部署服务。
编排(通过Kubernetes等平台)——用于配置、分配和管理服务的可用系统资源。
服务网格(通过Istio等平台)——通过服务代理网格进行服务间通信,以连接、管理和保护微服务。
03/ 微服务架构的复杂性
让我们通过购物车在微服务架构上的工作方式来理解这一点。这里的微服务将涉及库存数据库、支付网关服务、基于客户访问历史的产品建议算法等。虽然所有这些服务在理论上仍然是一个独立的小模块,但它们确实需要相互交互。重要的是要注意服务到服务的通信是使微服务成为可能的原因。
04/ 为什么我们需要服务网格?
维护、配置和保护应用程序的所有或选定微服务之间的所有服务到服务通信
在微服务中配置和执行网络功能,例如网络弹性、负载平衡、断路、服务发现等。
网络功能作为独立于业务逻辑的实体进行维护和实现,满足了将服务到服务通信与应用程序代码分离的专用层的需求。
因此,开发人员可以专注于应用程序的业务逻辑,而与网络通信相关的所有或大部分工作都由服务网格处理。
由于微服务到 Service Mesh 代理通信始终在标准协议之上,例如 HTTP1.x/2.x、gRPC 等,因此开发人员可以使用任何技术来开发单个服务。
05/ 服务网格架构的组件
业务逻辑
这包含核心应用程序逻辑和微服务的底层代码。业务逻辑还保留应用程序的计算以及服务到服务的集成逻辑。由于微服务架构的优点,业务逻辑可以在任何平台上编写,并且完全独立于不同的服务。原始网络功能
这包括微服务用来发起网络调用和连接服务网格 Sidecar 代理的基本网络功能。虽然微服务之间的主要网络功能是通过 Service Mesh 处理的,但给定的服务必须包含基本的网络功能才能与 Sidecar 代理连接。应用网络功能
与原始网络功能不同,该组件通过服务代理维护和管理关键网络功能,包括断路、负载平衡、服务发现等。服务网格控制平面
所有服务网格代理都由控制平面集中管理和控制。通过控制平面,您可以指定身份验证策略、指标生成和跨网格配置服务代理。
06/ 使用 Istio 实现服务网格
Istio 的核心能力
-
通过身份验证和授权保护服务到服务的通信。 -
实施支持访问控制、配额和资源分配的策略层。 -
HTTP、gRPC、WebSocket 和 TCP 流量的自动负载平衡。 -
集群内所有流量的自动指标、日志和跟踪,包括集群入口和出口。 -
通过故障转移、故障注入和路由规则配置和控制服务间通信。 -
实施支持访问控制、配额和资源分配的策略层。
-
Kubernetes 上的服务部署 -
在 Consul 注册的服务 -
在单个虚拟机上运行的服务