写点什么

027 云原生之服务网格应用

发布于: 刚刚
027云原生之服务网格应用

当前的微服务架构的实现往往是以代码库的方式构建在应用程序内部,这些代码库中包括了服务发现、熔断、限流等功能。代码库方式不但会引入潜在的版本冲突问题,而且一旦代码库变更,即使应用逻辑并没有任何变化,整个应用也要随之全部构建变更。


使用 Istio 流量管理模型,本质上是将流量与基础设施扩容解耦,让运维人员可以通过 Pilot 指定流量遵循什么规则,而不是指定哪些 Pod/VM 应该接收流量——Pilot 和智能 Envoy 代理会帮用户处理。因此,用户可以通过 Pilot 指定特定服务的 5%流量转到金丝雀版本,而不必考虑金丝雀部署的大小,或根据请求的内容将流量发送到特定版本。


stio 中包含四种流量管理配置资源,分别是 Virtual Service、Destination Rule、Service Entry 以及 Gateway。

Virtual Service 在 Istio 服务网格中定义路由规则,控制路由如何路由到服务上。

Destination Rule 是 Virtual Service 路由生效后,配置应用与请求的策略集。

Service Entry 通常用于在 Istio 服务网格之外启用服务的请求。

Gateway 为 HTTP/TCP 流量配置负载均衡器,最常见的是在网格边缘的操作,以启用应用程序的入口流量。


和 Kubernetes Ingress 不同,Istio Gateway 只配置四层到六层的功能(例如开放端口或 TLS 配置)。绑定一个 Virtual Service 到 Gateway 上,用户就可以使用标准的 Istio 规则控制进入的 HTTP 和 TCP 流量。


Istio 提供灵活的适配器模型(Mixer)来执行授权策略,并为网络中的服务提供多项功能,如日志收集、配额执行、授权系统和遥测指标收集系统。Istio 提供统一抽象,可以与一组开放式基础设施后端进行交互。这样做是为了给运维提供丰富且深入的控制,同时不给服务开发人员带来负担。Istio 旨在改变层与层之间的边界,以减少系统复杂性,消除服务代码中的策略逻辑并将控制权交给运维。


在微服务架构中,存在着众多互相依赖的服务单元。若一个服务出现故障,就会形成故障蔓延,最终导致整个系统的瘫痪。为了解决这类故障传递问题,服务网格引入断路器实现熔断。断路器是创建弹性微服务应用程序的重要模式。断路器允许用户编写限制故障、延迟峰值以及消除其他不良网络特性影响的应用程序。


断路器模式是指在某个服务发生故障时,断路器的故障监控机制及时向服务调用方返回一个错误响应,避免调用方长时间等待,从而阻止了故障在整个系统中蔓延。


Istio 通过服务网格承载了微服务之间的通信流量,因此可以在网格中通过规则进行故障注入,模拟部分微服务出现故障的情况,对整个应用的健壮性进行测试。


发布于: 刚刚阅读数: 3
用户头像

InfoQ签约作者 2018.11.30 加入

还未添加个人简介

评论

发布
暂无评论
027云原生之服务网格应用