微服务软件架构和环境的关键指标或性能指标之一是前置时间(从想法到生产所需的时间)。许多因素会影响前置时间,例如决策时间、代码实施速度、测试、持续集成等。
虽然许多参数可以自动化以缩短前置时间,但有一部分是无法自动化的,那就是开发人员实施功能的时间。代码复杂性和代码量(即代码行数)的结合可能会拖慢实施速度。一定有更好的方法。而且确实有!
Istio 简介
Istio 是创建和管理微服务所需的功能的 Sidecar 容器实现。监控、追踪、熔断器、路由、负载均衡、故障注入、重试、超时、镜像、访问控制、速率限制等等,都是其中的一部分。虽然现在可以使用代码中的大量库来实现所有这些特性和功能,但 Istio 的与众不同之处在于,您无需更改源代码即可获得这些好处。
通过使用 Sidecar 模型,Istio 在 Kubernetes Pod 中的 Linux 容器中运行(很像 Sidecar 伴随摩托车行驶),并根据您的配置注入和提取功能和信息。再次强调(为了强调),这是您的配置,它位于您的代码之外。这立即降低了代码复杂性和代码量。
它还在(这一点很重要)将操作方面从代码开发转移到操作领域。为什么开发人员应该承担熔断器和故障注入的负担,他们应该对这些做出响应吗?是的,但是处理和/或创建它们呢?将这些从您的代码中移除,让您的代码专注于底层的业务领域。使代码更小更简单。
服务网格
Istio 的功能在您的源代码之外运行,引入了服务网格的概念。这是一个或多个二进制文件的协调组,构成网络功能网格。如果您还没有听说过,那么在未来几个月内,您将会听到很多关于服务网格的消息。
快速概览
以下是 Sidecar 容器如何与 Kubernetes 和 Minishift 协同工作的 30,000 英尺高度的视图:一旦您启动了 Minishift 实例,您就为 Istio 创建一个项目(我们称之为“istio-system”),然后您安装并启动所有与 Istio 相关的组件。从那里,当您创建项目和 Pod 时,您将配置信息添加到您的部署中,并且您的 Pod 将使用 Istio。下图是一个简单的概述。

一旦您到达这一点,您就可以开始更改 Istio 设置以调用故障注入或支持 金丝雀部署或 Istio 支持的任何其他功能——所有这些都无需触及您的应用程序源代码。
例如,假设您想将来自您最大客户(Foo 公司)的所有 Web 流量定向到您网站的新版本。您可能会决定通过简单地创建一个 Istio 路由规则来做到这一点,该规则在他们的用户 ID 中搜索 @foocorporation.com 并适当地定向他们。对于世界上的其他人来说,这是透明的。同时,您可以测试您的新软件。这不需要开发人员来完成。
它昂贵吗?
不。Istio 速度很快。它用 Go 编写,并且为您的系统增加了非常小的开销。此外,您在线性能方面的损失应该可以通过提高开发人员的效率和速度来弥补。至少理论上是这样。不要忽视开发人员很贵的事实。
至于软件,Istio 是开源的,所以您可以立即获取并开始使用它。
自己动手
想亲眼看看吗?红帽开发人员体验团队开发了一个深入的动手 教程,您可以使用它来了解更多关于 Istio 的信息。它支持 Linux、macOS 和 Windows,代码可以使用 Java 或 Node.js。
了解更多
除了这篇快速介绍之外,我们还创建了关于 Istio 的 更多和更深入的信息,包括关于熔断器、路由规则、追踪和监控等等的文章。在此处查看完整系列
“Istio 简介”系列的所有文章
- 第 1 部分: Istio 简介;它使事物网格化
- 第 2 部分: Istio 路由规则:告诉服务请求去哪里
- 第 3 部分: Istio 熔断器:如何处理(池)驱逐
- 第 4 部分: Istio 熔断器:当失败是一种选择时
- 第 5 部分: Istio 追踪和监控:您在哪里以及您有多快?
- 第 6 部分: Istio 混沌工程:我是故意要那样做的
- 第 7 部分: Istio 黑暗发布:秘密服务
- 第 8 部分: Istio 智能金丝雀发布:轻松进入生产环境
- 第 9 部分: Istio 出口:从礼品店出口
- 第 10 部分: Istio 服务网格博客系列回顾
这是我的分为十个部分的 Istio 简介系列的第一部分,最初发布在 Red Hat Developers 上。
评论已关闭。